Why I will never build Chat for a Mobile App ever again…

This is on top of the fact that native mobile platforms have pretty decent messaging applications (iMessage, Google Messaging) built in.

When you look at the growth of these chat apps, something jumps out very quickly – growth is explosive. Whatsapp boasts 800MM active users, WeChat follows with 500MM+ and the list goes on. Even the most basic sending and receiving of messages between users has an inherent viral effect. Now add on the fact that these goliaths are combining chat with functionality such as m-commerce, ride-sharing and social discovery amongst others – they have demonstrated the power of these messaging interactions.

There is a huge opportunity for mobile app developers to capitalize messaging’s viral nature by integrating chat into the context of their applications. While sending messages to other users matter, sending them with the context of the application can be hugely powerful. “Should I book this hotel?” or “What are your thoughts on adding this investment to my portfolio?” are just two simple examples that illustrate how your application context is central to enabling powerful interactions within your user community or to your customers. Chat messaging has truly become a critical feature to bring to your mobile app.

Wait, isn’t this problem already solved? (sigh…)

The obvious recommendation to any would-be app developer is clear: figure out how to add chat messaging to your app. But this is a little more difficult than it seems. I have had the distinct pleasure (read: pain) of trying to build chat into an existing application. Product Management loved the idea and wanted to add chat to our service to drive viral adoption. Sounds like a slam-dunk, right?

From the outset, there were many problems, but it would prove to be only the tip of the iceberg for what was in store for us. The first debates started with the requirements. From a high-level it was simple: send a simple text communication from one user to another user with some state of the sender. The discussions led to more discussions as every decision seemed to spawn more questions. Can I communicate with someone who is offline? How will the offline person be notified of this new message? If the sender has multiple devices, which device gets the notification when the original recipient replies? How do I discover the users that I want to send a message to? The discussions went on-and-on and many “MVP” decisions were made.

The next set of problems arose during design & implementation. At this time, we evaluated 3rd party solutions to provide the messaging functionality. While many companies touted their capabilities to solve these problems, we were ultimately faced with one vendor who only provided a transport protocol and another that offered the most basic of user messaging capabilities. Like any good engineer (insert sarcastic tone), the response was “How hard could it be? We’re gonna build it ourselves”. That’s when I should have known to run for the hills.

The problem that ultimately broke the camel’s back was simply the scope that exploded at every turn as the “chat server” team tried to build out the platform. Every feature that was added took twice as long as estimated and with every bug came the realization that oversights in the design would demand that large parts of the codebase be refactored. The deeper the team dug into the details, the more complexities would arise. How do we handle messages when the network connection drops? How does someone search for other users and address a message to a recipient? How should the system handle message delivery failures? Should we use retries? What is the correct timeout value for stale messages that may not have been sent?

OK, I give up! UNCLE!

Chat messaging is a sure-fire way to get the viral acceleration into your app to drive adoption and real usage. The truth is that despite this tremendous value, there remain very few mobile apps building in chat messaging functionality due to the sheer complexity of making it all work well as a system.

But there is a happy ending to this story. At Magnet, we’ve built Magnet Message – a product that enables you to bring user messaging to life within your mobile app. We know how hard it is to bring user messaging into your mobile app and so we built it so that you don’t have to go through that pain. It’s easy-to-use, it’s cross-platform and of course it’s open source (Apache 2.0 License). Check it all out at magnet.com/developer/magnet-message and see how easy it can really be. We’ve got a Sandbox (http://developer.magnet.com/tryyourself ) so that you can try it out without installing a thing.

So, the answer is yes. I will never build chat for another mobile app again… because it’s already been built. It’s Magnet Message.

— Shannph

P.S. We just launched our “Go Interactive” hackathon for Magnet Message on DevPost.  We’ve got $22K in prizes on deck and we’re looking for people to build some awesome apps with our mobile messaging product.  Check it all out at http://magnet.devpost.com!