HTML5 or Native App for mobile ?

Published on November 24, 2011

This is a decision that mobile developers got to make when they develop an app.

There are pros and cons to both the platforms, and the decision largely depends on what you need to accomplish. These are the main factors.


  • Capabilities
    The #1 factor would be the capabilities offered by the 2. Native App provides more integration with the mobile OS, and therefore can do much more. If you need access to address book, photo album, MP3, camera, etc, and accessing them is important to your app, then native app is a better choice. HTML5 is still pretty restricted, and is best for data-oriented web apps.
  • User Experience
    Native app provides native UI components from the OS, and that makes you feel like the app belongs to the OS itself. Native app also perform better, such as faster scrolling and switching views. HTML5 can provide more fanciful interfaces, largely because of the available JavaScript components.
  • Where can it run
    Native app must be built per mobile platform. So you got to build separately for iOS, Android, WP7, BlackBerry, etc. That means the same app built multiple times, with multiple programming languages and platform! HTML5 can be run on most new mobile platform. That is write once, run everywhere (but usually with some incompatibilities).
  • Updates
    Native app needs to be installed on the phone, and updating the software is controlled by the user, which means usually days or months before they do so. That is bad for critical bugs or rolling out of features. HTML5 on the other hand is instantaneous.
  • Development Effort
    Native app takes more time and more people with different skills on different platforms. It is also harder to code than HTML5. HTML5 is easier and faster develop.

However, you don’t really need to pick sides. A hybrid approach is possible, such as how Pandora does it. You can build a native app, which contains a webview that loads the HTML5 website (webview is a native app UI component such as iOS UIWebView)!