OK, I had this post written already a couple of times, evaluating HTML5 tech versus native technology for mobile apps. Dealing with clients developing mobile apps puts me regularly in the position that I have to help out choosing between the two. A very concise but long post, written as a consultant so that any company that was facing this decision could figure out what is best for them. But in the end it boils down to this:
Native technology allows for excellent apps, whereas HTML5 apps will be at best just OK
Just look at the top 25’s of any category in the Apple iTunes store or the Google Play store. Most if not all apps are built using native technology. Yes, you can build crappy apps with a native mobile language also, that is not hard thing to do. Excellent HTML developers can get pretty close to native with their hybrid apps, look at the LinkedIn iOS app. But still, you can see the interface is not as fast and snappy as for instance Path or the new Facebook iOS app. Fact is, users now know you can build excellent apps for mobile so will expect this from any app.
Cross platform is a means, not a goal
As software developers, our goal is to create the best apps that reach as many people as possible, with the least amount of development effort. By definition, there is a tradeoff: by choosing HTML5 that has the promise of cross platform development you will limit yourself profoundly. No smooth animations. Difficult if any access to system level API’s and hardware. No extensive control over threads, and I can go on. Sometimes I talk to developers and I get the feeling that for them cross platform is a goal by itself, to the point that it becomes a cross platform fetishism. Cross platform is a means, not a goal. No user cares about what technology is used, it is about the end result.
Write once deploy everywhere is a myth for mobile
Mobile browsers differ quite a bit. The standard browsers that shipped with pre 3.0 (Honeycomb) Android are notoriously slow and bad. So trying to serve all browsers with the same HTML technology will be hard, and even frameworks like Sencha and jQueryMobile will not help a 100 % with that. Furthermore, iOS, Android and also Blackberry and Windows Phone have different user interface standards. Users on each particular platform will notice if you serve exactly the same app for all. So even using HTML5, you will build multiple versions for different platforms and platform versions.
It is effectively a duopoly for iOS and Android
Android and iOS dominate the mobile ecosystem, taking as much as 80 % of mobile usage . You can forget for now about Blackberry or Windows Phone, so instead of one mobile web app you have to create only 2 native apps. OK 4 maybe, customizing both for phone and tablet devices, but you would have to do the same for your mobile web app.
Native is not that hard
Yes both Objective-C (iOS) and Java (Android) are strongly typed messages object-oriented languages and that might seem scary at first for web developers. In the days of the iPhone 3 I spent a couple of months cursing at Objective-C, it strange syntax and the fact that the few books about iOS development were mediocre because of Apple’s insane NDA but I managed. Nowadays iOS and Android have matured a lot, meaning that the tools are great, libraries are excellent and there is a lot of knowledge and learning material out there. iOS has ARC now so you don’t have to worry about memory management anymore.
Web developers, don’t be lazy, and pick up
a native mobile language
Mobile Internet usage is growing like crazy, and already more smartphones are sold than computers. Mobile is where the future is. A lot of effort is put into HTML for mobile, but it will be years for it is up to par with native. Yes it is easier to use technologies that you are familiar with, but not always will you get the best results. So you as a web developer shouldn’t be lazy: get a web developer buddy, pick a straw each and start learning either iOS or Android development. Your users will be much happier with your apps, which will mean more money in the bank for you.