So, you want to make an app for an iOS device? Well, you have two choices when creating your app. The first option is a native app written in Objective-C while the second option would be to build a mobile web app powered by HTML5, CSS3 and whatever javascript framework makes you happy. Here are some reasons why you might want to take another look at an HTML5 web app…
Online or offline doesn’t matter
You don’t have to be afraid that a mobile web app would require a user to be online in order for it to work. With modern browsers like Mobile Safari, you can persist your data and cache your source files in a manner that allows the app to work in online or offline modes. When a user comes back online, your app can easily sync back to your site if necessary.
Cross device compatibility
With a native app, you’re are locked in to Apple’s (or Android’s for that matter) technology for deploying applications. With a mobile web app, you are in control and are only limited by how far you are willing to go to make your app work on various platforms. A properly thought out application can work with both Mobile Safari and Mobile Chrome easily as both are powered by the open source Webkit browser engine. From that starting point it would be up to you to decide whether or not to support other variants of mobile phones.
Skip the app store
The biggest problem with creating native applications for the iPhone is getting them approved for distribution via the app store. When the iPhone was initially released, the thinking was that developers would simply create mobile web apps to power new apps. This didn’t work out very well, because at the time Mobile Safari was new and still an unknown.
As time as moved on, we’ve progressed to iOS 4.0 with a heavy emphasis on making Mobile Safari powerful enough to make mobile web apps more feasible to develop. This has led to new apps (and a mobile web app store) being created that avoid the Apple approval process.
You can do anything a fair amount of what a native app can do
With javascript, you can achieve almost any behavior that is possible with a native app in a mobile web app. While not every feature is supported by mobile browsers (looking at you crazy gestures), you can replicate quite a lot of functionality. With a mobile javascript framework like Sencha Touch, you get access to pinch and swipe gestures. What you don’t get is access to device hardware like the camera.
The web is changing rapidly and mobile web apps built using HTML5, CSS3 and Javascript are at the bleeding edge. Especially when working with them in offline mode. The problems that are inherent with mobile devices will also force you to change your application design and implementation, but that will have to wait for another post on another day.