Full disclosure: I am a HTML5 mobile application developer and naturally my views are biased to some degree. Whilst I've tried to keep this article as balanced and realistic as possible, I am investigating why this could be the case rather than whether it necessarily will or not. Naturally, it has a slight HTML5 positive bias.
From time to time the HTML5 vs Native debate will pop up on sites like Hacker News or Reddit, and most recently I came across a thread about someone who built their app using the Ionic Framework in 2 weeks. Every time this topic does come up there seems to be arguments from everywhere on the spectrum, usually including:
As is usually the case, the truth usually lies somewhere in the middle. The interesting thing about these arguments is the emotion behind them and the attacks thrown at those on the other side. I find it analogous to the Windows vs Mac or Console vs PC debates – realistically both sides have their strengths and weaknesses but there are many who have picked their horse and passionately defend it without considering the facts.
"Look Grandpa, this guy thinks HTML5 can compete with native apps!"
It makes sense that people on both sides would get defensive and go on the attack at the idea that their chosen tech would become obsolete. I do believe there is some level of elitism at play for those who savagely defend native apps. Unfortunately, it can get in the way of having a productive discussion about the issue.
So let's start looking at the facts and issues. I'll dive deeper into this topic but let's recap the broad advantages and disadvantages of a HTML5 mobile application:
- Faster development
- Write once and reuse across multiple platforms, including iOS and Android – only having to maintain one codebase is also very desirable
- Can be deployed as a web application or packaged natively with PhoneGap and distributed through app stores
- Only requires one skillset, rather than having to learn the native language of multiple platforms (potentially requiring hiring extra people)
- Requires a UI framework like Sencha Touch or Ionic (generally) which adds overhead.
- Requires native packaging (i.e PhoneGap) for submission to app stores – this adds some overhead and is an extra step in the process
- Access to a lot of native features are not available by default and require the use of PhoneGap to access – this is a more complicated approach and again adds overhead to the project
- Interactions & animations such as list scrolling are not as smooth as native (though with a mature UI framework like Sencha Touch I think this is debatable)
- Reliance on third party tools adds more risk and can cause some delays when new versions device software becomes available
Now, let's take a look at some issues a little closer
Perhaps the biggest advantage of HTML5 mobile applications is the cross platform capability. This is clearly one of the biggest issues facing mobile developers.
It wasn't too long ago when it was acceptable to design a website that was fixed at 900 or so pixels wide, or even developing multiple fixed size versions of a website.
iOS and Android share enough of the market that it is now necessary to have applications available for both platforms – or else suffer the ire of your (lost) customers. This requires a sizeable investment now, but with two platforms it is still a reasonable option.
More players are heading into the game though: Windows, Amazon, Firefox to name a few.
If enough market share is spread around that it becomes expected to have an app available on five or even more different platforms it becomes unreasonable to develop a native application for each. The cost would be enormous.
In response to the fragmentation of screens sizes, websites adapted to using responsive design – one design that can adapt to any screen size. Perhaps the HTML5 approach is the solution for mobile apps.
Nothing is holding HTML5 mobile apps back now in the sense that they are a viable, and often preferable option today.
What's holding HTML5 back from completely taking over native applications now though? It certainly sounds like it should if it saves us from developing multiple versions of the same app in a fragmented environment.
Lack of momentum
There's currently not enough uptake from developers and businesses. Many businesses don't know it's an option and the native development communities are much larger.
Lack of big name support
People follow in the footsteps of giants, and for good reason. Big companies have the resources available to throw large amounts of money at research and development. If they decide to go a certain way, people should certainly pay attention. After initially taking an interest in the HTML5 both LinkedIn and Facebook dropped it in favour of a native approach a couple of years ago.
At the same time though, the issues massive companies face are not the same as smaller businesses. Smaller businesses may not require massive scaling and a perfect interface, they could benefit greatly from the reduced development cost a HTML5 solution could provide. HTML5 is certainly not devoid of support by the big corp players, in fact Netflix uses HTML5 for their applications.
John mentions the Netflix approach of relentlessly experimenting with new technologies and measuring their impact for customers. Key reasons Netflix decided on HTML5 were:
- Ability to push new updates to customers whenever they launch
- Allows for easier live testing with customers
- UI consistency across all their platforms: website, mobile and television
Native apps are still more capable
The fact remains that native apps _are _more capable than HTML5 applications, with or without tools like PhoneGap. The gap is closing though and I believe we will see more and more applications falling into the HTML5 realm and more specialised applications remaining in native territory.
In a previous interview with Phil Merrell, I asked him how he thinks HTML5 and native apps will stack up against each other in the future:
As we move more towards a world where everything is available anywhere on any platform, it seems logical that web apps will help facilitate this over locked down environments like the iOS App Store.
As Phil mentioned, whilst we still run native desktop applications today and will likely continue to do so into the future, most applications are heading off to the cloud. I also foresee a similar future for mobile apps, where HTML5 becomes the default and native is used for specialised apps.
I mentioned before that one of the big draws of HTML5 mobile applications is in the ease of which web developers can make the switch. If you're a web developer who wants to jump on board the mobile app train, enter your email below to be notified when I release my Web to Mobile Developer course:
Thanks! Now check your email.
<p> <!-- Form starts here --> </p>
You'll also receive a free copy of my PhoneGap Build: Quickstart eBook.