But XMPP is shitshow of million XEPs and massive matrix of which supports what. So just because in theory there is some feature you want it doesn't mean that your server and your client will work with it. That's terrible value proposition to anyone wanting to do anything in the space, you dont want to debug (and we did had to, when we used xmpp for our company chat) why user X using communicator Y on platform Z can't send attachment to your user on communicator Q.
XMPP needs to just sit the fuck down, gather the XEPs and put it into XMPP 3.0, with few feature sets that every client and server using it needs to support all at once, not picking and choosing.
So if you make text only chat client, it supports all of the formatting, all of the file send/receive, all of the MUC things, all of the E2E encryption things, all at once. And have one text formatting to support (Markdown seems to be winning here), not a bunch.