We've been trying Matrix/Element at work for the last few months
... as our internal messaging system. The server seems to run alright, but the Element (formerly Riot) client definitely has a rough-around-the-edges feeling. Stupid stuff like the private messages with my boss having a line at the bottom of that chat window claiming there's an unread message from back in May (which there isn't, it just looks ridiculous), and generally feels like a bit of an amateur interface. I completely get that it's hard to write a messaging client, particularly having to deal with lowest-common-denominator features at times, is hard, but it reminds me of the Trillian vs Gaim / Pidgin days - Trillian was a much more polished client, and while Pidgin had more network support technically, a lot of the chat windows ended up looking fairly awful. (To be fair, Pidgin hasn't changed much visually from the GTK2 look, and I'm beginning to prefer the old-school look to the new-school everything-is-flat look.)
Element feels like it's almost there, but not quite, and suffers like many modern "apps" of being a webapp in an Electron wrapper, on the desktop at least. Can't complain too much with it being free and open source, and I'd love to have the time and energy to do a better client, but the overall feeling with having used it for the last several months is "it's okay as a basic setup, and I like the idea of the various bridges, but the client just isn't quite there". (We still haven't got around to setting up bridges at work.) The video chat support has been bolted on via Jitsi, and doesn't quite work correctly around 50% of the time for people. (Jitsi by itself works fine, it's just the Element-hosted version.)
I reckon, realistically, it needs maybe 12 months work minimum before it's polished enough for mass adoption (or a whole bunch of UX/UI developers stepping in and helping out). Been keeping an eye on the project for a while, and every time I've tried it I've sighed and thought "Almost... nearly there." And until the client is pleasant to use and you don't feel like you're having to fight with something clunky, it's going to struggle to get that - likely somewhat of a chicken-and-egg situation.
I've been watching Beeper with interest, by the founder of Pebble, and been on their waiting list for a while - it's not the cheapest at $10 a month, and is an open source custom Matrix setup on the server side with a custom GUI, but it looks a heck of a lot more like what I'd expect from a chat client - very much the difference between Pidgin and Trillian all over again, and it may actually be worth paying to have one client to rule them all, though I suspect much of my issue could be solved with a commercial well-supported properly native (aka non-Electron or other webwrapper) Matrix client. I'd chuck £20-30 as a one-off for that, or a reasonable amount a year to help support its development. £87 a year (at current USD-GBP rates) is a bit on the steep side for Beeper - though probably costing similar amounts to self-hosting your own infrastructure as well as paying for client development.