God, no. The corporate chat that my employer uses is based on Jabber (if anybody cares: it's Estos ProCall) and on mobile it's just hell where the connection gets lost all the time and messages arrive late.
There are some remaining issues with push (mostly on iOS as far as I know), but it’s all to do with OMEMO. OMEMO is kind of like the signal protocol but in XMPP. This is kind of moot for corporate XMPP, though, as you probably aren’t using OMEMO.
The OMEMO issue is that the contents of the message are end-to-end encrypted so you can’t simply send the notification to devices. I believe conversations on Android may just keep a socket open (or maybe that’s just the fdroid version?) so it just manages it with background tasks. And on iOS monal does what signal does and will use push notifications as a trigger to pull messages from the server. Siskin on iOS just sends you a “you have a new message!” notification instead because they don’t want to spin up the radio to fetch messages in order to preserve battery life. So basically push works fine on monal, and Siskin also has working push but you don’t get message contents.
To be fair that might just be a poor implementation?
Maybe. Given that ProCall is a commercial product, it surely just reuses whatever MIT/BSD/Apache-licensed code exists instead of developing their own because that costs money.
It's not natively supported by the base RCS standard, in the section at the end of the paper in the section titled "Third Party RCS Clients" Google explains that they've built the e2ee their Messages app themselves, (on top of standard RCS).
A developer has to use Google's implementation specifically in order to send and recieve e2ee messages to Google's Messages app (and Samsung Messages who also implemented this recently)
Although the e2ee implementation is using the Signal protocol under the hood, it's for message content only - this is what is transmitted in cleartext (taken from the paper)
Phone numbers of senders and recipients
Timestamps of the messages
IP addresses or other connection information
Sender and recipient's mobile carriers
SIP, MSRP, or CPIM headers, such as User-Agent strings which may contain device manufacturers and models
Whether the message has an attachment
The URL on content server where the attachment is stored
Approximated size of messages, or exact size of attachments
Without using this implementation of the Signal protocol on top of RCS, the message will deliver to the contact's phone, but shows up as unencrypted garbled text
That is a very useful resource though, never knew there was a paper available on the implementation. Saving 😁