Go native or go HTML5?
HTML5 and responsive design are promising tools in the hands of talented web designers and developers seeking to “write once, run anywhere.” But can they deliver? How do you choose between the mobile web, hybrid mobile apps, and native for your next project? The answers are not simple, as we deal with constantly moving targets in terms of software and hardware capabilities and user’s expectations. Prepare to spend some time researching the current state of affairs and debating internally the best path for your particular situation. This article will hopefully give you a head start.
What’s the difference?
- Mobile web app: an application developed using standard web technologies such as HTML5, JavaScript and CSS and accessed in a browser on your mobile device. Example: maps.google.com, viewed in a mobile browser
- Native app: an application developed using platform specific technologies that runs on a particular operating system. Example: Instagram
- Hybrid mobile app: an application developed using a cross platform framework and standard web technologies that basically packages a mobile web app in a thin native wrapper. Example: Untappd
How do I decide?
There’s not an easy answer to this question. You might think, “If I use HTML5 or a hybrid approach, I can code my app once and deploy it to all platforms! And I might even be able to reuse my code for the desktop browser version of my app!” As is often the case with technology, it isn’t that easy.
To illustrate the difficulties in choosing between these options for mobile apps, let’s talk a little bit about infinite scroll. This user interface paradigm – a page that doesn’t seem to have an end but keeps on loading new data as you scroll – shows up everywhere these days, from websites like Pinterest to many iOS and Android apps, including Facebook and LinkedIn.
I’ll leave it up to you whether this is a good UI paradigm. But I don’t think it’s a stretch to say that if you have an app, with a list, that’s used on touch devices, your users will expect to be able to swipe this list up and see more content.
The problem is, this is difficult to implement on phones and tablets, where memory tends to be the main performance bottleneck. If you develop a native app, there will be a component that allows you to easily create a long, smooth scrolling, infinite list that performs well (e.g. UITableViewController on iOS). But if you’re using HTML5 or a hybrid mobile app, you’re going to have to do more work. And a lot of testing. And even if you succeed for awhile with HTML5, you might decide to go back to native (Facebook did).
I would recommend you read about how two of the major players in this space have dealt with this issue recently:
- LinkedIn iPhone and iPad LinkedIn for iPad: 5 techniques for smooth infinite scrolling in HTML5
- Mark Zuckerberg: Our Biggest Mistake Was Betting Too Much On HTML5
- Under the hood: Rebuilding Facebook for iOS
- PRESIDENTIAL SMACKDOWN EDITION Separate Mobile Website Vs. Responsive Website By Brad Frost
Conclusion and more resources
You’ll need to spend some time evaluating your app before you decide what route to take between mobile web apps, native apps, or hybrid web apps. Who is your target market? Are you using capabilities of a mobile device such as geolocation, camera, accelerometer? Do you have certain screens that might be problematic unless they are developed with native APIs? Learn from others’ experiences, do some preliminary testing, and go for it. Good luck!