If building an app there is a high chance that you’ll need some way of live communication. While browsing the Internet you’ll stumble upon lots of examples with different purposes and approaches. The obvious one being apps centred around communication like Messenger or Slack. But some are more hidden like support chat in Uber app. Many websites include flashy “contact us” widgets that allows them to communicate with their users if they have any questions.
Once you realize that your app needs a chat too then you have a hard nut to crack - use a solution from the market or go full custom and tailor the communication exactly to your needs. There’s no need to point out that no matter which approach you choose you have to accept its cons. In order to make a rational choice, you need to take all your requirements under consideration. For example… Do you need just plain text chat with no fancy formatting? Do you need attachments? Do you need mentions? Reactions? Do you need “X is typing”? Do you need voice or video? Do you need group chats? Do you need a custom layout? Do you need powerful administration tools? Do you need access to chats history? And most importantly how much do you want to spend on it?
Recently we were challenged to a difficult problem - develop a chat which has all the “yeses” but don’t spend a fortune on it. Based on our experience we knew that going full custom wasn't a viable option so we started digging for other products with the main focus being able to embed the chat in our app. One of the options was Rocket.Chat as we knew our client used it as their standalone chatting solution before. At first glance, it didn’t seem like something we could go with - just a Slack alternative. But to our surprise, there was a key feature for us hidden in the docs - Embedded Layout. So let's trace back to our requirements:
Regarding cost efficiency - if you already have some infrastructure capability, Rocket.Chat offers a free self-hosted plan where you have negligible running cost if you have a throughput that your infrastructure can handle. All in all, there are solutions that can render my initial assumptions, that you can’t have everything, invalid. Of course, this is no golden hammer - it still has many limitations but with your next project, you might consider using Rocket.Chat.
One additional and not so obvious benefit of using Rocket.Chat is that your users can download fully featured app with push notifications on their Android/iOS device. So they always stay connected to you. We on our side handle everything from account creation to automatic login when the chat is embedded. But you’re giving your users the opportunity to still make use of chat features when they’re on the go (which might be very useful or unwanted depending on the case).