One of the biggest security holes in contemporary E2E-encrypted chat apps like Signal is that application servers can hijack your identity.
This functionality exists in order to support account recovery. When you log in to Signal on a new device, after confirming your identity through 2-fac, Signal's servers will unilaterally reset your public key in their database, and inform all of your peers of that change.
This is the whole premise behind "safety numbers" in Signal. Signal knows that it's inherently sketchy that their servers can reset your keys, and their hope is that users will manually verify any key changes by confirming safety numbers. In practice, I doubt many users bother.
E2E encryption is meant to put users in control of their data and their digital identity. But when application servers can unilaterally issue key resets, your digital identity is ultimately controlled by those servers, not by you.
This may seem like an academic concern, but there are many scenarios where it becomes relevant:
We don't allow key resets. In Comm, the only way to change your public key is with a signed message from the old key.
Our backup service enables account recovery as long as you remember your password. We encrypt your private key on your local device using either your password or your crypto wallet, and upload that encrypted private key to our backup servers.