Here's how WhatsApp tailored its app for KaiOS
We haven't really talked about KaiOS a lot here, but the operating system is now installed on over 100 million phones, making it the third-largest mobile operating system in the world. KaiOS is a fork of Firefox OS that's designed for feature phones, and over the last three years it has seen a meteoric rise because of devices like the $15 JioPhone in India and Nokia's 8110.
While entry-level Android phones have gotten much better over the years — particularly with the introduction of Android Go — there are still tens of millions of users who turn to feature phones for their affordability. And with KaiOS, feature phones now come with a web browser, a dedicated app store, and even Google Assistant baked in.
Then there's WhatsApp. The Facebook-owned messaging platform made its debut on KaiOS in 2018, became widely available last year, and is now pre-installed on KaiOS phones globally. WhatsApp already counts tens of millions of users on KaiOS, and that's not surprising when you consider that the service has 400 million users just in India. KaiOS phones are aimed at India and other emerging markets in the Middle East and Africa, and these are countries where WhatsApp usage is ubiquitous.
WhatsApp on KaiOS is very similar to what you'll find on Android. You get all the messaging features, including group chats, and a lot of extras. The best part is that the KaiOS client also has end-to-end encryption, just like the Android version. So I talked to Joe Grinstead, software engineering lead for WhatsApp on KaiOS, on how the service was tailored for KaiOS and what we can look forward to in the future.
KaiOS presents a unique challenge because of the fact that it is designed to run on low-cost hardware. Most features phones based on the operating system have 256MB or 512MB of RAM and internal storage up to 4GB. And because there's no touchscreen, all the navigation on the user interface is on a directional pad and text is entered via a T9 keyboard.
Grinstead mentioned that as KaiOS is built from Firefox OS as a fork, it is essentially a web browser that has HTML5 and JavaScript. So most of the time, an app for KaiOS is nothing more than a mobile version of a website that's stored locally on the device. But as WhatsApp does not have a mobile site, the app for KaiOS had to be built from scratch. And while WhatsApp looks simple and has a barebones interface, it has an exhaustive list of features on Android. To give you an idea, this is just a list of the popular features on offer now:
Grinstead said his team had to focus on features they could actually deliver on the platform and make them work reliably, settling on a "minimum viable product" that they could launch with and still call it WhatsApp. As such, there are a few features missing from WhatsApp on KaiOS, including voice and video calls, WhatsApp Web, chat backups, custom notification tones, and more.
Be an expert in 5 minutes
Get the latest news from Android Central, your trusted companion in the world of Android
That said, all the core features are here. You get one-on-one and group chats, the ability to share photos and videos, contact and location sharing, transferring money over UPI in India, and voice messages. Grinstead mentioned that the voice messaging feature in particular gets a lot of use on KaiOS because it is easier than the T9 keyboard.
Grinstead and his team are working on adding more features to WhatsApp for KaiOS. The Status feature is at "Gold Master," meaning it is ready to roll out to the platform. It is a big deal that the feature is making its way to KaiOS, and Grinstead stated that his team is working on introducing more features to the platform over the coming months. It's unlikely we'll see feature parity with Android — that's just not possible given the constraints with KaiOS — but it is good to see WhatsApp actively working on new feature additions.
The fact that KaiOS phones run low-end hardware means WhatsApp had to optimize the app to ensure it didn't run into performance issues. Grinstead said the database structure had to be rewritten because the performance was terrible once the phone filled up with data. It would take around 20 seconds to open WhatsApp on KaiOS, and because there is no multitasking on the platform, every time you open the app, you need to wait for it to launch. The hardware just isn't robust enough to run apps in the background.
Optimizing the database structure allowed Grinstead and his team to bring down the launch time to three seconds. Further optimizations include showing a low-quality version of a photo instead of the original resolution to save on bandwidth, and there are similar limits that WhatsApp set for RAM usage on the platform — 50MB on the JioPhone, and 35MB on other devices. KaiOS normally allows 1GB for apps, but because WhatsApp stores data locally, it gets an additional 1GB allocation for storing texts and media. The app also shows a low storage warning on KaiOS that gives you the option to free up space. Interestingly, there is also the ability to write natively to an SD card.
Then there's the issue of navigation itself: because there's limited screen real estate on a feature phone and the resolution is usually 320 x 240 pixels, WhatsApp's UI had to be pared down to fit the confines of the screen. The mockups below illustrate the point well:
Now, WhatsApp is different from most messaging platforms in that all your data is stored locally. Because it has end-to-end encryption, all associated data — including chats and multimedia — is stored on-device instead of a server. Then there's the issue of push notifications: because KaiOS is effectively a browser, WhatsApp has to manage push notifications over HTML5, with Grinstead noting, "I don't know if anyone else is doing HTML5 push notifications with anything as complicated as WhatsApp."
As Grinstead explained, that's because the text that shows up in the notification has to be decrypted locally — the server doesn't provide a preview of the incoming text because of end-to-end encryption. WhatsApp relies on the Signal protocol for end-to-end encryption, and the libsignal protocol itself is now baked into KaiOS, making it that much easier to deliver fully encrypted chats.
One of the major issues with end-to-end encryption is group chats — your phone essentially has to create one-to-one handshakes with everyone in a group before a message is sent. Grinstead stated that the first message you send to a group is the most complicated, because that's when a lot of the initial handshakes occur. Because of the limited resources on offer, Grinstead and his team had to tweak delivery notifications so they wouldn't crash a phone. Instead of sending all the information at once, the delivery server now waits for the phone to acknowledge that there's enough RAM to handle incoming requests.
As for the features that are still missing, Grinstead said that voice calling has been "particularly challenging." There's no timeline for when (or if) the feature will be available on KaiOS. The other notable omission is WhatsApp Web, and similarly there's no update as to when it will show up on KaiOS.
WhatsApp launched on KaiOS in July 2019, and it racked up one million downloads in just under 24 hours. It had 10 million users in two weeks, and the company says it has "tens of millions" of users on KaiOS now. Mozilla is once again involved with KaiOS, and that should allow the platform to switch to a new engine with more modern web features baked in.
That should give WhatsApp more wiggle room to introduce new features. We may even get to see voice calling on the platform as a result.
Harish Jonnalagadda is Android Central's Senior Editor of Asia. In his current role, he oversees the site's coverage of Chinese phone brands, networking products, and AV gear. He has been testing phones for over a decade, and has extensive experience in mobile hardware and the global semiconductor industry. Contact him on Twitter at @chunkynerd.