Tuesday, 23 December 2014

HTML5 vs Native Mobile Apps

Will HTML5 ever really compete with native apps and become the primary mobile development platform?

Mobile apps and HTML5 are two of the most innovative – and polarising – technologies in the mobile world at present, and there are plenty of similarities between the two. Web apps, most recently using next-generation HTML5 features, run in mobile web browsers and can also be re-packaged to look like native apps on the various mobile platforms. They bring facilities like offline access and a smoother user experience to the web, but still often fall short of native apps.

Native apps can be easily found in the relevant app stores and are normally developed individually or on a mobile platform, such as Core-three's Core Engine platform. Ease of discovery and the best of all possible user experiences have made native apps the current industry front-runner.

But due to the wide-ranging number of mobile platforms to support, combined with the sheer power of mobile browsers, developers are increasingly turning to HTML5 as a "write once, run many" solution. However, there are still vast compelling reasons to go native, especially when native mobile platforms such as Core Engine are now available. We've highlighted the benefits of native app over HTML5 web apps as they stand today, and also give a view of the future where you may not have to choose.

The current state of play

Mobile functionality can be split into two dimensions: the user experience, and the way it integrates into the device's ecosystem. For Android or iOS, this includes features like widgets and push notifications. Native apps excel in both dimensions, with HTML5 approaching from a distance.
User functionality 

In terms of user functionality, native apps can do more. They can make deeper use of the device's hardware, acting on hard or soft keys being pressed, like a device's back button and volume controls, and accessing hardware like GPS (for location-based services) and the device's camera. In some cases, with the user's permission, native apps can also access the devices operating system too, providing tight integration with other apps, and a gateway to technologies such as contactless communications via NFC.

Native apps can also more easily cache data when there is no network coverage, where web apps need coverage to function. This means users can scan QR codes at a virtual supermarket in a closed shopping centre or in a subway. Once network coverage is available, the app can then automatically send an order to the retailer for fulfilment. Or how about downloading a mobile ticket - once downloaded, the ticket can be stored on the phone and produced when required without network coverage. Corethree's recent work with Go North East for their UK bus network is a great example of this capability in action.

Native is a fast-moving target, and these benefits are not yet available on HTML5, but the web is also developing at a rapid rate. Solutions to enable web apps to use devices' functionality are in active development, with Mozilla (developers of the popular Firefox web browser) leading the charge with their WebAPI initiative.

One of the defining features of any platform is its look and feel, and users come to expect consistency. If developers take care to use the tools provided by the device manufacturers, native apps can deliver a great user experience. Users only have a number of seconds to get familiar with a new app; if there are any delays, even of a few seconds, the app could be discarded.

Due to a lack of a common set of standard for user interfaces, web apps tend to have a custom look and feel, which requires "familiarity curve", which all takes time. Native app developers have a much easier task in making their UI consistent, so apps generally look and feel similar to others on that device. This is important, as there is only limited time before the user will get frustrated and give up on the application.

Renowned usability guru Jakob Nielsen suggests that there's a 10 second window to grab users' attention. Anything slower needs a percentage-complete indicator as well as a clearly signposted way for the user to interrupt the operation. Ideally, he recommends a 1 second response time as the best way to make the UI appear seamless. Native apps, even those such as Core-three's (which deliver services from the cloud) can achieve this, where web apps have a hard time ensuring this kind of performance.

Factors in this include the web run time barrier (downloading all elements of pages), so downloading content is faster using native apps. Native apps are also more easily optimized and can take advantage of performance boosters like graphics acceleration and multithreading. Web apps are also highly dependent on the network coverage levels, which are not as reliable or as fast indoors or in rural areas. The impact of apps running on reduced network speeds such as EDGE or GPRS (2.5G), will massively affect the user experience.

Ease of development

Native apps use robust and mature programming languages, which were designed for complex application development and have a proven track record. These tools were designed from the ground-up to support each platform. You can easily debug apps in desktop emulators that provide a close representation of the target device, all of which makes the path to market with a reliable application much smoother.

What makes web development particularly troublesome is the huge diversity of browsers and runtimes, potentially making the web app unstable and requiring a great deal of testing. In addition, standards are open to interpretation – again, projects like Mozilla's WebAPI aim to move past these limitations, but aren't yet mature enough to be a solution.


App distribution mechanisms like Android's Market and Apple's App Store have been overwhelmingly popular in recent years, and are a major driving force for the entire market. Any developer can submit their native app to the marketplace – for example, Core three's Core or M-tickets - where users can discover it through a combination of browsing, searching, and getting recommendations. Not only that, but if development companies have done their job right, the glowing ratings and comments will convince users to hit the all important "install" button.

With a web app, there's no central hub for app discovery. Even with a variety of smaller web app directories, none have taken off to a large extent, so companies need to market their service much more actively. Unless they have a bottomless pit of money or are a well-known brand, consumers will find it difficult to know where to find the mobile service, or even that it exists.

Some companies are designing hybrid apps using technologies like PhoneGap (Cardova),Titanium, a combination of native and web just so they can get into the relevant app stores. Whilst it's better than having no presence at all, it masks the fact they are predominately an HTML5 web app. These apps will still do not have the functionality of a native app, and generally lack in robustness and tight user experience.

Native apps can be monetized

With regular headlines such as "12 year-old makes app during lunch hour, sells a billion copies at 69p each", it's no wonder developers large and small are looking to the mobile marketplaces for monetisation. Mobile platforms offer several avenues for developers to directly charge for their apps. The simplest scheme is the one-time payment, to unlock the app forever. There are also in-app payment and subscription mechanisms on offer for some platforms, and they are tightly integrated in a consistent, secure, mechanism, with centralised and trusted billing. These newer forms of payment allow developers to convert a smash-hit app into a long-term revenue stream.

Given that Apple's App Store, for example, limits payments to those for digital content only, platforms like Core Engine provide corresponding facilities for payment and CRM in retail operations for real-world goods.

In comparison, web apps lack a standardised payment model. Although providers like PayPal can fill the gap to some extent, the HTML5 purchasing experience is still generally fragmented and inconsistent, with no specific focus for user trust.

The way forward

Some apps are best suited for native and some are best suited for the web - it all depends on the requirements from the client. However, as we are at the start of the explosive exponential growth of the smartphone, any requirement from clients should be future proof.

How will you surprise and delight your subscribers? Offering subscribers the ability to use the devices functionality if required will help add stickiness to the app.

The development of new features for web apps has momentum, but in terms of native user experience, capability and performance, native apps at present far excel those of web apps. Until there comes a time when web technologies are a first-class citizen on the majority of mobile operating systems, native will always, in our opinion, be a superior offering.

If you do choose the web path, be mindful of web standards, future proofing and the principle of progressive enhancement.