In a recent webcast, Amir Nathoo of Trigger.io and Tim Anglade of Apigee examined the tradeoffs of building HTML5 versus native mobile apps. It was a good overview and introduction to what is HTML5 based hybrid apps all about. Towards the end of the webinar, there was a discussion around the controversies surrounding such a hybrid approach.
Notably, this discussion had been going around in the development circles for a while, but was elevated to full blown controversy level by Facebook’s about face on their hybrid mobile apps.
In an article, Robert Scoble of Rackspace outlined, “More and more I’m hearing that designers and developers are ignoring HTML 5, especially for the high end of apps.” And in the words of Mark Zuckerberg of Facebook “Our Biggest Mistake Was Betting Too Much On HTML5”.
So, is it time to stop talking about the controversy and announce a winner? The mobile app community needs more healthy and open discussions on the various aspects of building app via the HTML5 hybrid approach. Such discussions will not only bring to light the current challenges but will guide the future framework development to address those challenges.
In the webinar, around two-thirds of time is spent explaining how the hybrid approach works. More time around the controversies would have been interesting to hear. So here, I will attempt to list the top five controversies as I see them at present and attempt to address them.
1. Is it possible to make great apps using HTML5 hybrid approach?
The very subjective nature of this question is bound to generate passionate arguments both in favor and against it. In the webinar, at around 47:30, this question is addressed. We all know of great apps that are pure native but there are also some examples of good apps which leverage the hybrid approach. An app called harmonious. is built using jqTouch, PhoneGap and the MIT Harmony framework. It allows the user to create beautiful sketches with touch. I played around with the app and while the touch sensitivity could be better, I was able to create pretty good sketches. The user reviews however, do complain of slowness and bugginess.
In the webinar, Amir suggests that it’s a matter of skill. While this is certainly true, the native built apps do seem to be winning in terms of teams that have struggled with the hybrid approach to abandon it in favor of a pure native stack.
2. Can you iterate faster if you choose a HTML5 framework based app?
Again this issue is subjective. There is no denying that not having the download and deployment steps makes it faster to push new functionality out to the user. But this is only true when the functionality does not require any device feature. So in case of Facebook, they would push out new story types and easily handle that using the HTML5 code. Now, with their pure native app, they push new story types out in the News Feed but fall back to HTML5 approach till the point the native version can catch up.
However, Facebook has moved to a six-week deployment cycle for their mobile apps, where they develop for four weeks, followed by a two-week testing and stabilization cycle.
3. Is it possible for HTML5 based hybrid apps to match the speed and performance of native apps?
Mobile Safari’s JavaScript engine, Nitro is not available outside of the browser and not used by the Web View controls inside Hybrid apps. The result is slower execution and the hybrid app approach suffers from slower apps. While adopting the hybrid approach, this has to be a question that needs addressing. If the app is consumer facing, you can count on an unforgiving audience.
Whereas, for internal enterprise apps, this may or may not be a make or break criteria. Critics might argue that its not impossible to meet the speed of native apps, the device and OS fragmentation in a cross-platform world only complicates the picture more. Not all OS and device versions support HTML5 standards equally well and the rendering performance varies. Based on our experience, app aspects such as scrolling, animations, and tap speeds were significantly slower when using the hybrid approach.
4. Can you go to market faster with the hybrid app approach?
Depends. The jury is still out of this particular question. Its true that you can go faster to market with Android platform as there is no submission criteria and qualification process that the apps need to go through. So creating an update and putting it out to the users is fast. But its not as fast as pushing new javascript and HTML out. Perhaps a good developer can write the same feature in native code and HTML5 with similar speeds, given equal skills in both areas. But it would still mean writing for each native platform.
In our experience, when using hybrid frameworks, we have seen the reduction in development time offset by the increased testing, QA and bug-fixing, stabilization time across the multiple devices.
5. Should you preserve investment in existing skills or invest in new skills?
One strong argument in favor of using HTML5 frameworks is that a lot of teams already have these skills and the learning curve is shorter for building mobile apps. This is a powerful argument, when the alternative is to learn each individual platform and build deep skills in those. However, good teams realize that learning newer skills is a fact, no matter what type of code you write. Teams that are filled with inquisitive members will already be itching to try their hands on the latest technologies.
Eric Schmidt of Google said, “mobile apps are better apps and that’s what top programmers want to develop. It’s more specific, more human, more location-aware, more satisfying to them”
Even when building hybrid apps, developers need to dive in and learn about each individual platform that they are targeting. There are plugins that may need developing in each native stack. Building, packaging and deployment are still activities that done on each individual platform.
For any team serious about mobile development, getting familiar with the native stacks only makes them better, regardless of whether they chose to build native or hybrid apps.