How to make a messaging app like WhatsApp? We know

How to make a messaging app like WhatsApp? We know

The communication niche is filled with messengers, not only facilitating the task of connection but also changing it forever. Although there are already many serious players, users keep searching for a more convenient and modern messenger every day, so the new project established to create a chat app can get a piece of the pie.

Worldwide messengers statistics (2018)
Image 1. Worldwide messengers statistics (2018). Source: Messengerpeople

The most popular messenger is WhatsApp, created in 2009 in the USA. It is the most visited chat apps representative with an audience of 1.6 million active users per month. At the moment, WhatsApp Business offers such conditions to enterprises under which they can respond to customers free of charge within 24 hours, but in case of the lateness of response, a fixed fee will be charged. In terms of the number of users, the Facebook messenger with 1.3 million users comes next. Facebook chat makes money through advertising and in-app purchases.

There are also some other time-tested monetization methods messengers use: stickers offerings (Viber, Tango, WhatsApp), internal payable content, such as games (LINE), internal services, such as payment systems (WeChat, WhatsApp), sale of the platform SDK with support from developers (Slack) and mentioned above advertising (Facebook Messenger, Nimbuzz). In selecting a monetization method, you need to proceed from your messenger goals and the audience for which it is created.

The most popular chat apps try to cover all the client’s needs, while separate messengers focus on being the best for specific purposes and target audiences: Telegram is leading in terms of security, Slack in business communication, Snapchat is made for millennials. Just two social platforms, Facebook and YouTube, are higher than WhatsApp by the number of active users.

Messengers popularity statistics
Image 2. Messengers popularity statistics (2019). Source: Statista

At the moment, leading chat apps are adding more new features that blur the boundaries between the messenger and the service application, such as the function of making payments, lead generation templates, taxi booking, and others. These opportunities will strengthen the position of messaging apps as business networks and bring even more profit.

With that impressive statistics, many will have a logical thought: is it worth to measure swords with such monsters and get into this sphere? The bottom line is that the widespread distribution of messengers overwhelmed the market, creating an excellent opportunity to launch more niche projects: Slack, Microsoft Teams and Flock occupied a business sector, Discord and Teamspeak divided a gaming part… But there are more fields, which thrones are empty, waiting for the coming of the leader. Maybe it will be you?

WhatsApp Feature Lists

Let’s look at the features that are essential for chat applications using the example of the most widespread messenger, WhatsApp. Back in the days, WhatsApp was only a messaging tool. Gaining popularity and audience, it faced more growing expectations from the public. To defend a leading position, the developers of the app had to replenish their arsenal with new features systematically. Back in the days, WhatsApp was just a messaging tool; now it can pay bills and protect account by fingerprint scanning.

If you want to know how to develop a messaging app like WhatsApp, you need to become familiar with the list of its important features. They are essential to communication and indispensable for any chat application:

  • Authentication varies depending on how clients are authorized: via the phone number or social media/email. This also affects the convenience and security of their accounts;
  • Simple and reliable messaging is a core chat feature. Sending messages should be easy and convenient whether you are at the beach, or in a crowded subway;
  • Individual and group chats are needed when users want to communicate in the same chat with several people;
  • With voice and video calls you offer more communication opportunities for the customers;
  • Push notifications are necessary when the client switches from communicating to other apps or activities. Informing the user about the received message is important for the messenger’s proper usage;
  • Multiplatform and PC synchronization makes chat app more flexible and convenient, which does not keep you waiting for the influx of new customers;
  • Sharing media files and documents is a standard feature for the exchange of pictures, videos, music, etc. Technically, this is done by uploading a multimedia file to an HTTP server, after which a link with content is sent;
  • End-to-end security allows you to decrypt messages only with the help of smartphones of those users who exchanged them and thus secure communication.

Observing the increasing demands of clients and the corresponding growth of WhatsApp with the other chat apps as a whole, we recommend to include in your product such complementary features if you want to fit into the messengers growing market:

  • Calendar and event management

    This feature allows adding events into the agenda by merely holding the desired date in the chat. In WhatsApp, it is presently available only in the iOS version.

  • Payment

    It is going to strengthen the position of the apps in the business environment since the method of internal payment will now be as simple as the GIF sharing. Such a system may work on UPI (Unified Payments Interface), so it will not be necessary to indicate the bank account number and SWIFT (Society for Worldwide Inter-bank Financial Telecommunication) code. Transfer and receipt of funds are carried out to anyone from the list of contacts within 24 hours.

  • Cloud technologies

    They will be convenient and multifunctional in any project you have. Talking about WhatsApp, it uses them for several purposes: firstly, the app synchronizes with cloud services (Google Drive, Dropbox, Evernote). Secondly, the chat history is stored on the Google Drive server, and within a year you can recover a lost or deleted message. With the progressive improvement of the Internet network, cloud technologies will only strengthen their position in the application market.

  • Biometric protection

    In March 2019, Facebook added a new security feature to the WhatsApp beta on Android. Owners of fingerprint-toting smartphones will be able to enter the messenger through a biometric protection system, and those who do not have this function on the device will have the opportunity to use its credentials (for example, a PIN code). Reliability in data operations is one of the most decisive things in our time, so it is worth-while to add this feature to your app along with the listed above.

Messenger Application Tech Stack

The tech stack and architecture of WhatsApp, like any other application, is not disclosed to the public. Developers do not give away this data for security purposes. But from the fragments of interviews and speeches of its developers, a more complete picture can be collected for understanding how to create a messaging app like WhatsApp.

WhatsApp Architecture and Protocol

To learn how to make a messaging app like WhatsApp, you need to understand what it is made of. Rick Reed, the software engineer of WhatsApp, gave many presentations about his messenger’s work. The technology stack of this app is LYME/LYCE, with one measurement: FreeBSD is used instead of Linux, since according to the developers, Linux is a real ‘beast of errors.’ Everything else is unchanged from the original build, and WhatsApp’s mobile tech stack looks like this:

  • OS: FreeBSD

    According to WhatsApp’s co-founder Brian Acton, the choice of OS was explained by their excellent knowledge of FreeBSD system and the appropriate requirements of safety and reliability;

  • Programming language: Erlang

    Erlang is especially useful for handling multitude connections and routing messages, exactly what the WhatsApp creators needed;

  • Servers: custom Ejabberd with Signal Protocol

    The original XMPP (Extensible Messaging and Presence Protocol) was initially used to support both one-to-one and group chat conversations. Afterward, the developers switched to the internal developed protocol for optimizing servers and Signal Protocol for full end-to-end encryption. They also use YAWS (Yet Another Web Server) for storing multimedia data and HTML5 WebSockets that simplifies two-way communication by establishing a reliable and fast connection between the server and the app;

  • Database: Mnesia

    Mnesia allows the messenger to respond to the requests more quickly and perform more efficiently, but the main advantage is that it can be reconfigured right during the run;

  • Virtual machine with customized patches: BEAM

    Mnesia database, as well as the Yaws and Ejabberd servers, are written in Erlang, so the web apps developed for LYME/LYCE can entirely run on Erlang virtual machine with optimized server performance;

  • Hosting: Facebook Data Center

    WhatsApp team moved from IBM servers to their own, which the company considers the most advanced on the market.

WhatsApp Architecture
Image 3. WhatsApp Architecture

However, it is worth remembering that what suits one product may not fit the other at all. A common mistake in the chat application development process is mindless copying of competitors.

Having studied the opponent in detail, it is no longer so complicated, is it? After understanding the WhatsApp’s internals, the question of how to make a chat application becomes much clearer. Still, it is possible to claim the right to a place in the sun of the messengers market, so we are moving to the main topic.

How to Make a Chat App Like WhatsApp

The answer to how to create a chat application like WhatsApp may be the words of Rick Reed: “Being in the right place at the right time with the right product in front of the right buyer.” But nothing lasts forever, and the leadership of one is only a matter of time while the other is watching and learning from the first. If you have decided to develop your own messenger, make your haste slowly and do everything gradually.

Probably you have already conducted business analysis working with some consultancy services company, maybe you have developed an idea and need to clarify it. In the last case, you can turn to a full cycle development company to get it done. We at Aimprosoft help determine the target audience, analyze potential competitors, develop a unique value proposition, and prove the most appropriate monetization method.

Special attention should be paid to a development team you hire for the project. Development processes of any software vendor are subject to documentation: estimate and technical specification are especially crucial for the work monitoring at each stage of development and final success of the project. The team choice should be based on two main factors: skills and location. Developers experience in messengers creation will help avoid mistakes that have been already made by others and location influences the cost of development services.

Messenger app development
Image 4. Stages of chat app creation

To make it easier to imagine how to make a chat application, conditionally divide the development into the server side, architecture building, which includes the OS, protocol, as well as the frontend in case you want to develop a web version of the chat.

  1. Solution Stack

    When selecting the software stack, you will not be restricted in your choice. There are enough of them on the market: LAMP, MEAN, LAPP, etc., but it makes sense to choose the one with the technologies known to your developers better. WhatsApp uses the LYME/LYCE solution stack, the single change of which was OS modification. Custom Ejabberd allowed WhatsApp to cope with the peak loads on the server, and Erlang has become a perfect choice due to the compilation with LYME/LYCE and the ability to handle a large number of messages.

    You should choose technologies by the increasing demands of speed and performance, so take the opportunity for customization when the moment comes. Ejabberd has been thoroughly overwritten and improved by WhatsApp engineers many times over the years of functioning. Accordingly, select flexible and extensible software.

  2. Programming Language

    If you want your messenger to be on the same scale as WhatsApp, you can use the same stack. However, this will be debatable in terms of costs and feasibility. Instead of Erlang, which requires significant financial investments in the app creation and support, you can write your messenger using Node.js (like Telegram and Kik), C/C ++ (Viber, WeChat), Java or Objective-C (Skype), as well as Ruby, Scala and other languages.

  3. Protocols

    As for network protocols, you can use the most common XMPP from servers of your choice: OpenFire, Prosody, Matrix.org, Ejabberd, and many others. In the matter of security and reliability, MTProto and Signal Protocol stand out. If none of them suits you, you can develop your own internal protocol.

  4. Operating System

    Before choosing an operating system, you need to understand how it will interact with the rest of the software. The WhatsApp team switched from Linux, the standard OS for LYME/LYCE, to open Unix-like FreeBSD system, which for inexperienced developers could turn into disastrous difficulties. They did this not because it was a more popular solution, but because they knew FreeBSD best, which demonstrates the importance of the development team knowledge when working with existing technologies. Good understanding of development tools will allow you to release the product faster and save money on a lower amount of bugs and code errors.

  5. Database

    When determining the database, you should proceed from the company strategy: whether you are set up for a quick launch, but with a plan for a further upgrade to a more reliable solution, or you are ready to sacrifice time for taming long-term software. Accordingly, many databases have their advantages and disadvantages depending on each strategy.

  6. Frontend

    Client-side development depends on the operating system of the device: for iOS it is Swift or Objective-C, for Android it is Java or Kotlin. That is true when the application is native and you want to make a web/desktop version.

    In general, the messaging app development largely depends on functions you want to implement and what technologies you use for that purpose. Whether it is business messengers or chat services targeted at the maximum audience, technical requirements will differ.

    If everything can be clearly highlighted with the technical part of the development, then the possible obstacles are a completely different topic that deserves a separate conversation.

How end-to-end encryption protects a messaging app
Image 5. How end-to-end encryption protects a messaging app

Chat App Development Pitfalls

During development, the pitfalls await you in the most unexpected places. Even if it is impossible to avoid them all, it is possible to minimize their number by drawing on the accumulated experience of the others and creative approach to problem-solving of your software vendor.

When considering how to make a chat app, take into account some common challenges you may face:

  • The server overload challenge inevitably arises with a growing number of users. According to Rick Reed, WhatsApp optimization needed a tremendous effort from his development team. On this optimization example, you can understand that the server’s capacity should be chosen with a stockpile and not used at full power, leaving reserves for peak periods. If you still face the necessity of optimization, it is advisable to measure the bottlenecks, eliminate them and test it, then repeat the same sequence. When analysis and optimization are not enough for the stable server work, strengthen the hardware.
  • Сontinuous connection of users affects deployment on your servers. To safely deploy new code and not lose data, you must carefully configure the interaction of the servers. The server that is shutting down must transmit the real-time connection state to another server that will store published messages on all user’s channels. When the client reconnects, the server should be able to recover and show all messages that were posted in the interlocutory period.
  • If you want to provide high-quality services for customers so that they do not suffer from high latency, servers should be distributed throughout the territory you want to cover and be located near the user. The main difficulty arises in the development of algorithms that determine the work of secondary and tertiary servers responsible for the app operation in case of the primary server unavailability.
  • Real-time chat implementation requires a lot of work and have a high risk of synchronization failures (the app can lose consistency or become unavailable during network partitions), server logic (which includes coordination and subscription logic), and integration of database management systems with real-time updates. Implementing the subscription logic in mobile clients can be a challenge even for experienced developers who know how to make a messaging app, so pushing the logic to the server simplifies the development process significantly.
  • Scaling is one of the common and toughest challenges of real-time chat apps. You need to think about it when building the architecture of the messenger, otherwise your system will crash during messages publishing in large channels. Provided that you have a single server that broadcasts messages to all customers and a channel with million subscribers, then just one posted message on a millionth channel from you will trigger the publication of a million messages which is equal to million bits of work to be done. No matter what your hardware is, that’s an unbearable load for a server. Decide how to distribute these bits of work in real time across the cluster, add the work to the message queue and let the users take it over.
  • There are many reasons for the loss of the network: from descending into the subway to switching between 3G and Wi-Fi. After the disconnection, the last client’s messages could be lost. If you want for your platform a reputation of a reliable data source, make sure that system saves the connection state by real-time services continuous retaining and subscribes to the messages from all customers channels. In this case, when the user reconnects, the server reproduces messages lost during disconnection.
  • To ensure security when working with the messenger, you will need to solve a number of issues: how exactly will clients safely identify themselves? What encryption to use? The difficulty arises in developing secure user identification. To prevent masking of one user for another, be sure to use encryption in transit. In cases when significant payloads occur in real-time service, use end-to-end encryption. One way or another, your client libraries must support encryption with private keys without the possibility of sharing with real-time services.

It would be a long story to list all possible difficulties in the question of how to build a messaging app like WhatsApp. You can minimize them by cooperating with a dedicated development team who will think in great detail about your future product, from its architecture to future upgrades, and cope with the pitfalls standing in the way of your project success.

How Much Does It Cost to Develop a Messenger App?

Usually, it takes several days for a competent expert to calculate the time and cost of making an app like WhatsApp. However, we have created a rough estimate for such a massive project as an instant messenger.

Calculating the development cost, we have taken into account the average time, which depends on the features of the project and the client requirements. Directly from the terms follows the price, that differs depending on the location of the development team.

Stages MVP hours
~980—1300
Full feature hours
~1800—2700
Business analysis + UX 40—70 100—150
Technical Specification 20—30 40—80
UI 50—70 for each platform 90—150 for each platform
iOS/Android development 300—350 for each platform 500—700 for each platform
Backend 200—300 400—650
QA 10—30 for each platform 40—60 for each platform

Messenger creation begins with business analysis, UX and documentation, which takes from 100 hours. The specification increases this interval up to 150 hours but allows you to optimize the workflow and improve understanding with the vendor significantly.

The duration and complexity of the backend depend on technology with architecture and can reach an extended period. If you want to have a web version of the product, then the front-end, for its part, depends on the UI complexity. The simpler your chat looks, the faster your front-end developers will do their job. The development of iOS/Android versions entirely hinges on the experience of developers. QA lasts the least of all stages (within 60 hours for every platform).

Based on the development hours, let’s find out how much the messaging app creation will cost.

MVP Features

It is advisable to develop an MVP, a product with the minimum necessary functions, the main task of which is to check whether the product works. The MVP messenger is almost a working sample since all the essential features for the chatting are already there:

  • Authorization;
  • Push notifications;
  • Chat;
  • Multimedia files transmission;
  • Settings.

To create an application with such a set of features, you will need the following specialists:

  • 1 Project Manager;
  • 1 UI/UX engineer;
  • 1 Tech Lead;
  • 2 Backend developers;
  • 1 iOS developer;
  • 1 Android developer;
  • 1 QA engineer.

As a result, the MVP messenger development lasts approximately from 980 to 1300 hours, excluding the web version. If you want to get a detailed analysis for your product, please contact us.

Full feature set

In fact, the finished messenger app may not differ much from the MVP: it can be just a working app for negotiations, simple and no-frills. But in order to meet the necessary quality standards, additional functions will have to be added, such as end-to-end encryption and voice/video calls.

Despite the insignificant differences from the MVP in terms of base work, a messenger with the full feature set has some particularities aimed at improving the clients’ comfort, their security and UX:

  • End-to-end encryption;
  • Voice and video calls;
  • Contact sharing;
  • Location tracking;
  • Self-destructing messages;
  • Chat history and backup;
  • Synchronization between devices;
  • Offline support.

These features are taken for granted, so the absence of at least one of them may adversely affect the user experience.

The full picture of the messaging app development looks like this:

Country Average hourly rate MVP
~980—1300 hours
Full feature set
~1800—2700 hours
USA $80 $78 400—104 000 $144 000—216 000
Western Europe (Germany) €60 €58 800—78 000 €108 000—162 000
UK £55 £53 900—71 500 £99 000—148 500
Eastern Europe (Ukraine) $30 $29 400—39 000 $54 000—81 000

If you want to create a full-scale and unique messenger with advanced Whatsapp-level functionality, it will take much more time at all stages of development and will require a large team of specialists. A project of this scope will require from 3000+ hours to develop, since such features as self-destructing messages, chatbots implementation, in-depth research and a host of other will be needed.

Thereby, the most costly location for chat application development is the USA with minimum $144 000 for full feature set product. The cheapest development without a drop in quality can be found in Eastern Europe (for example, Ukraine) amounting to a minimum of $54 000. It is worth mentioning that the price bar approaches the highest indicator depending on your requirements for functionality.

Wrapping Up

Success favors the brave. The messenger market still has a lot of unrealized ideas and unfairly overlooked sectors. The advantage of the investor is expressed in the fact that there is much informational support in the form of developer diaries and presentations from WhatsApp, Facebook, Slack, Telegram and many others, which makes it possible not to repeat common mistakes and use already proven solutions.

If you have an idea for a chat application development and you lack only an experienced team for its implementation, then you are in the right place. Aimprosoft mobile team have already created a full-fledged messaging app and have all the necessary experience to implement your most ambitious plans. Be sure to contact us and discuss all the details.