So you’re developing a mobile app. Which platform do you choose? Well, if you’re looking for the biggest market, you’ll probably lean towards iOS. Alternatively, if you don’t want to give 30% to Apple, you might go Android. And, of course, for some of us, Windows Phone is totally the way forward (admittedly, I’m a little biased on this one).
Now, before we get into a fanboy face-off, let’s just pause for a minute. Because, if the latest forecasts from IDC are accurate, native mobile apps might be going the way of the dodo.
It’s predicted that, by the end of 2013, there will be some one billion HTML5-friendly mobile phones in circulation. More than this, 15% of apps launching in 2012 will be HTML5 web apps. That’s huge.
So can we finally put away our native code and simply go the web app route?
Before you do, I just want to focus on a couple of the key issues.
It’s easier to write a native app (until you go cross-device)
There is an argument that goes along the lines of: because they’re based on tried and tested programming languages, native apps are simply easier to write and debug. HTML5 on the other hand doesn’t play the same in all browsers (and maybe never will) and the tools are generally poorer.
I’ve got some sympathy with this. But what it fails to acknowledge is that for today’s mobile app developers, trying to settle on the right platform is like nailing jelly to the ceiling. The OSes are in such flux (especially Android) that deciding precisely what you’re developing for (and how long it will last) is a constant challenge.
And then there’s the whole cross-platform issue. The jostling between the different OSes means that if you choose just one, you’ll leave a huge group of users out. Yet, if you try to please everyone, you have to virtually start from scratch for each OS.
HTML5 offers the promise of a write once run anywhere, but really it’s a fallacy. To get the most out of HTML5 you need to write once, customise everywhere.
But an HTML5 app will never rival the performance of a native app
It’s true, at the moment most native apps outperform HTML5 web apps. But whether you need this level of performance (and whether your users will notice) depends on the app itself and precisely what it has to do.
One aspect of this is that traditionally HTML5 has not been able to interact with the hardware features of the phone (eg the accelerometer). However, even this is being overcome. So it might not be quite the limiting factor that people claim.
So where does that leave us?
Native apps certainly have the drop on HTML5 apps in terms of being more established. Users are used to them and marketplaces make applications discoverable.
In reality, right now the jury’s out. HTML5 holds out lots of promise for developers looking to create multi-platform mobile apps. But they will, more often than not, have to make compromises to do so. The question is: will these compromises outweigh the opportunity to radically simplify cross-platform mobile dev?
I personally think developers should think about choosing the right platform for the Job and the right platform is different from project to project. HTML5 is great in most situations; but not every situation. To move HTML5 adoption forward we need to make sure we are using it in the right situations and not over-emphasising it’s potential and then under delivering against our clients expectations.
Three articles worth checking out
Silicon.com has a good balanced article on this: Should your next mobile app be an HTML5 web app?
For the pro-HTML5 argument, How HTML5 will kill the native app pulls no punches.
And for a robust argument against HTML, check out: HTML5 versus Native Apps: The truth you need to know