For the last couple of years I have been using WhatsApp to keep in touch with my friends and family in India. While it doesn’t seem to be very popular in the US, its amazing to see how almost everyone I know in India is on it. However till this week, it remained solely a mobile app, which is fine in the whole “think mobile first” world, but does get annoying when you are sitting in front of a PC and still have to dig out your phone to respond to a message (or talk into your Android Wear Watch ;) )
However as I started reading up on it, it turned out to be a pretty bizarre web app. I read a message by the CEO of WhatsApp claiming Apple tech did not offer them the right hooks for their implementation (basically apps running in the background and some unique feature of Android push notifications)
It turns out that actually the “web app” was just a visual shell with the messages being sent back and forth by the phone app itself, something easy to verify by just putting your phone in Airplane mode which brings up this notification on the app:
The other interesting bit of titbit is why the app was Chrome only. What chrome-only tech was WhatsApp relying on? The answer, after a bit of googling, turned out to be Chrome Push Notifications. Basically, it seems like their architecture is very similar to apps like MightyText or PushBullet that have started to bridge the Android phone and desktop Chrome experience.
It almost seems that we are now starting to move towards a world of Remote UIs: apps running on the one machine (usually your phone) but pushing the interfaces to another device that may be more contextually appropriate. Some other examples of this include:
- The Apple Watch and CarPlay both run apps that do all the compute on the phone and present the visuals on to the watch or car’s dashboard display
- The Android Wear / Android Auto requires a little more computational capacity on the remote display, in both cases they need to be running Android as well with only data moving back and forth. But the core idea remains the same.
While a few folks are crying foul about this implementation, I am kind of a fan. Besides the lack of multiple code bases for desktop and mobile, this setup restricts the number of devices you are signed in to. Since your phone is the one channel back to the servers, it lets you authenticate at one place and just use the most appropriate screen around.
It’ll be interesting to see if more apps adopt this architecture. Its unusual but seems pretty cool. It also might be the beginning’s of Android’s answer to iOS’s Continuity feature.