Storing data on user's devices isn't great, it takes up storage space (adding cost) and relies on the user to manage the backups (which lots of folks don't do). Users also switch between devices, so you'd need some sort of cross-device syncing or something.
e2ee implies that the data can only be decrypted by the user's key. If the user loses their key, they lose data access. Since keys are user managed you need to deal with user support/education and build interfaces to support key management. e2ee isn't something you can bolt on an existing system. This sounds quite expensive to implement, so you'll shift significant funds away from other development (destroying innovation).
If today I'm running a Django site that allows users to message each other, do I need to change from my server-side template rendered system to a client-side rendered system?
For loop holes, I'd expect people to claim that they can't rely on device storage, need to support multiple devices, need to support customers who can't manage keys, perform heavy-weight rendering that would consume too much device battery and run slowly, etc.
These ideas are very 2020s focused. As the software industry evolves, would we need to convince politicians to allow us to use better technology that challenges assumptions we have today?