The Native vs HTML5 argument has been beaten to death but I need to weigh in with my opinion.
I come down of the side of Native apps. Here’s why.
Typically, those that favour HTML5 would argue a number of benefits such as:
- your app will be available on every platform,
- development environment is based on common W3C standards,
- everything is open source,
- there’s lots of existing libraries to solve all your problems,
- your existing skills are transferable from web development,
- you can use tools to automagically make the app native,
- it’s easy! Just HTML + JS + CSS + Backend.
But those are all advantages for the developer or the company building the app? Where’s the end user advantages? are there any? I personally don’t think so. And even from a developer point of view, the above list of advantages are not based in reality.
As discussed by PPK, every mobile platform implements HTML5 differently and has different levels of support, eliminating the idea that your HTML5 app will automatically be cross platforms. Sure the basic elements and features will work but once you start to require more advanced features like drag-and-drop, web sockets, database communications, or offline access, your going to see the hell of what HTML5 is really like. Your app will be a mess of special cases for each platform and browser.
Likewise, the the W3C standards are still in progress, they’re not final. Even advantages like open source and libraries become problematic. Yes, there’s tons of options and frameworks available but most of them are crap so you’ll end up writing your own 90% of the time (or you’ll have to invest time in learning a framework so why not just learn the native language instead?). Also, you’re never going to get a one click “convert my sucky cross platform HTML5 app to native sweetness” tool. It’s just not going to happen. Your app is not just HTML + JS + CSS + Backend in a magic wrapper. It takes knowledge to build a good app, not just some paint on your existing web site.
What it comes down to is the fact that existing web-dev skills are transferable to HTML5 mobile apps. That’s it. That’s the advantage of HTML5 over Native. If you’re already employing a dozen web developers HTML5 is a cheaper way to get your mobile app built. However, if your employing developers who know iOS, Android and BlackBerry then you probably wouldn’t even consider exploring HTML5 options.
The question is then: “Is focusing on transferable skills really the best for your end user?”. You wouldn’t want a lawn mower mechanic to work on your Bugatti Veyron Super Sports so why do you want desktop web developers to build your mobile apps?
You can look anywhere for a real world examples. Pretty much 99.9% of all popular apps are native. The only decent HMTL5 app I can think of is Netflix. Facebook tried it, taking advantage of their highly skilled web developers but even they gave up and went native because that’s what is best for their users.
So whenever anyone asks me about one over the other I don’t really care which they choose, I ask “What’s the best for your end users?” They’re the ones that are going to be using and relying one your app and they could really care less how hard or easy it was for you to build. They deserve the best experience and as far as I’ve seen the only way to consistently deliver the best experience is to go native.