Their tactic of degrading ux when you don't give them permissions has been happening for a long time.

Accounts in WhatsApp have a username, but if you don't enable contact permissions on your phone, they will only display the contact phone number in the conversation list view. The username is there if you click into their profile from the chat, but WhatsApp wants to punish me instead.

I am bridging WhatsApp to my Matrix server. On Matrix it shows the username when the number is not in your contact list, and only then did I notice how unnecessary access to the contact list actually is (as long as you don't start new chats with people)

How do you bridge in?

Yes, this is interesting

Sorry for the late reply, I use https://github.com/tulir/mautrix-whatsapp as bridge for my Matrix server. You need your own server to install this bridge. The easiest way to do all this is with https://github.com/spantaleev/matrix-docker-ansible-deploy, which takes care of many things