HTML5 apps on the App Store

There are many HTML5 apps on the App Store but they are not first class citizens on iOS, unlike on other platforms. They have to be executed by UIWebView, a component allowing the presentation of web pages using WebKit but with the major disadvantage that the JavaScript performance is massively throttled compared to performance in Safari (because Safari uses the Nitro engine). This was expressed dramatically by the old Facebook app, and continues to be shown by many other apps.

Apple could quite easily allow developers to produce iOS apps with HTML5 and package them in Xcode for the App Store. Rather than being executed by a UIWebView they could instead be executed by the full Safari engine with its faster JavaScript performance. A similar feature exists in Safari already that allows you to ‘pin’ websites to the Home Screen and opening them executes them like an app, but being run by Safari without the navigation bar.

This would be incredibly advantageous for web developers because it would allow them to charge for their web apps on mobile platforms and lock down the source code if they were distributed via the App Store. It would also make porting between devices a lot easier, although this wouldn’t be as advantageous for Apple.

There are a few main problems with this, of course. The first is In App Purchases. Currently they account for a huge proportion of App Store revenue, however JavaScript has no way of accessing them unless Apple allowed for the transaction to launch the App Store app, which could prove effective.

Another disadvantage is appearance. Should Apple allow web developers to produce regular HTML markup or should it extend the standard to contain UIViews? The advantage of the former is it would make apps easier to design because existing tools and frameworks could be used. The disadvantage is that it would ruin the current design standards that Apple runs on. Interestingly, Intel announced a UIKit toolkit for JavaScript earlier this month.

Native APIs are also a disadvantage. How does an HTML5 app send notifications (Chrome does have an API for this)? How does an HTML5 app access the camera (again, W3 has some drafts on this)? How does an HTML5 app access photos or contacts? Either Apple doesn’t let them and places them at a disadvantage against native apps or it ports the Foundation framework to JavaScript, but that would ruin JavaScript standards if we started relying on NS* rather than JavaScript standards.

Unfortunately there really isn’t much in it for Apple because it either involves a huge port of their libraries of a huge loss of design I’m apps. The bare minimum is to allow current (major?) apps that rely on UIWebView for the majority of their content to access Nitro, ensuring faster performance.

Ultimately I don’t think that Apple will make HTML5 apps first class citizens on the App Store any time soon, but accessing Nitro could provide a major boost to mobile web apps.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s