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.
Discoverability
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.