I was interested to read (via the Guardian) that Facebook has replaced its HTML5 mobile web app with a native app for the iPhone and iPad and is most likely preparing to introduce a native Android app too.
This is significant because there has been a growing trend for companies to favour mobile web apps over native apps (that is apps tailored specifically to one mobile platform, such as iOS, Android or BlackBerry, using tools and technologies that are incompatible with the other platforms). The obvious attraction of the web-based approach is that a single application will, in theory, work across all major smartphones and tablets, regardless of which operating system they run. Facebook’s move is an acknowledgement that while this is clearly a cost-effective way of reaching the widest user base, it does not offer the best possible user experience:
“So while utilizing web technology has allowed us to support more than 500 million people using Facebook on more than 7000 supported devices, we realized that when it comes to platforms like iOS, people expect a fast, reliable experience and our iOS app was falling short. Now that our mobile services had breadth, we wanted depth.”
That native apps offer the potential for the richest user experience is not controversial. Being tailored to a single platform, a native app can integrate seamlessly with the device and take advantage of the full range of hardware and operating system features in the most efficient way possible. In contrast, there will always be an element of lowest common denominator compromise in any cross-platform alternative.
The downside to native apps has been the cost of supporting multiple mobile platforms. Build an iOS app and you have an app that runs on iOS devices. You’ll have to build a separate app to reach Android users and then you still don’t have a solution for BlackBerries. So it’s unsurprising that as HTML5 becomes more mature, mobile devices become faster, and mobile network bandwidth increases, more companies are deciding that mobile web apps are good enough. They are happy to trade platform-specific fit and finish in favour of reduced development costs compared to developing several different native apps.
But before dismissing the idea of building separate native apps it’s worth considering how many platforms you would actually need to support. Over the last year the mobile ecosystem has become considerably less diverse, as these recent figures from Gartner show. Whereas in Q2 of 2011 there were four mobile platforms with a double-digit share of devices sold worldwide, in the same quarter this year Android accounts for almost two thirds (64.1%) and Apple’s iOS (18.8%) is the only other big player. Nokia has all but abandoned Symbian, BlackBerry maker RIM has shed more than half of its market share and, despite Microsoft and Nokia’s best efforts, Windows Phone (2.7%) is still languishing in 6th place behind even Samsung’s low-end Bada OS.
||Market Share Q2 2012
||Change from Q2 2011
|Research In Motion
In light of these numbers, it appears that in many cases it may be sufficient to target just two platforms for your mobile app – at least initially. In that case the cost differences compared to developing a single HTML5 mobile web app might not be that significant. Cost is of course not the only consideration. Some apps have requirements that make them inherently more suited to one approach or the other. Here are some of the other factors that may influence your decision:
- A single app will work on many different devices
- Can build on existing non-mobile web app infrastructure
- Retain full control over app distribution/subscriptions (not subject to app store rules/fees)
- Ability to update the app immediately if required (no need to wait for a review)
Native App Advantages
- Faster / smoother user experience
- Native look and feel (familiar user interface that will function exactly like other apps on the device)
- Access to all hardware/platform functionality (cameras, Bluetooth, accelerometers, NFC, calendar, contacts, notifications, widgets, etc.)
- Better offline experience (for apps that can function without Internet)
- Easier to sell/distribute (hosting and payment processing are provided by the app store)