Many developers run into this debate when building mobile apps for iOS and Android. Modern smartphone OS's and browsers are now quite powerful and can run fully featured HTML5 web applications. So, why not build your apps in HTML5 (there are a few open source frameworks that can help as well) and just forget all the trouble of getting app store approvals and dealing with upgrade issues of installed native applications? Didn't we just leave desktop apps in the dust in the 90s for all the great benefits of on-demand web applications (nothing to download or install...etc)?
The choice may not be so straight forward. Let us compare the the options for using web apps:Pros:
- With web apps there are no store approvals needed
- Upgrade the app at your leisure
- Build it once for Android and iPhone - many web frameworks let you build web apps that will run on Safari or Chrome
- HTML5 gives you access to many low-level OS features (geo-location, local storage...etc)
- You are not alone. Big players like Google have gone the web app route for GVoice and GMail, to name a few examples
- Avoid revenue sharing with app stores
- Your app is not easy to find - app stores make apps easier to find and rate
- Native apps have access to low level hardware/APIs like OpenGL and full access to the OS (more or less)
- Native apps generally can be made to look much better and perform faster
- Installing a native app is a much more seamless experience
- Can't use convenient revenue collection/sharing mechanisms available for paid apps and for in-app advertising and up selling features found in native APIs
- You can typically trust native apps not do something sinister since they have been reviewed and approved by a higher authority
- Native apps have better debuggers and emulators
If you flip the pros/cons around you would get the case for and against native apps.
While web apps have some clear advantages, in the end, native apps just deliver a better experience to end users from both a user interface and marketing perspective. This may change in the future as HTML5 gets more powerful and there are better cross browser frameworks, web based store fronts, and rating systems for web apps. For now going native is the best option, but I am sure the debate will continue.