With the new iPhone SDK, there’s been a flurry of new applications, many of them for some of the most popular services and websites. And many of these new apps already had an existing web app that was designed specifically for the iPhone. First of all, in my opinion, a native iPhone app isn’t really an rich internet application. I believe that RIAs must really be web apps, and ideally built upon cross-platform standards (HTML, CSS, Javascript). So why did so many decide to build a native app for their site?
Native apps are supposed to be faster, that’s for sure. You can define your own caching strategies, your own network services, and your own event/threading model.
Native apps also get access to the camera and the GPS. They can also persist data in their own local data store, even being able to use SQLite, and allow offline access.
Native apps are publicized on the very popular iTunes app store page providing a lot of free traffic.
But is this how it needs to be for a regular website app? Let’s take a look at the new Facebook application, one of the most popular apps right now with a huge install base. Facebook probably had the coolest iPhone web app, they were the ones who made the very popular IUI framework, which made their web app look like an iPhone app. The new Facebook app though has most of the same features as their web app with a few missing. The biggest new feature is their Facebook chat, which is not on the web app. However, only has 1 feature that can’t be done in Safari — taking a photo with the camera and uploading it. I’m sure eventually their native app will also take advantage of GPS for updating your status.
I believe if Apple allowed it, they could expose the camera and GPS device APIs through a Javascript API in Safari. They could ask the user to allow permission on a per-domain basis. And actually, being able to install Gears in the iPhone solves many of the offline problems as well as give access to a Geolocation API.
The speed of the Javascript engine in Safari has greatly improved, and with the back and forth that they are having with Mozilla on browser speeds, you should be able to write a heavy application and have the same performance as a native app.
Some might also argue that a native app provides extra security and you don’t have cross domain issues. Well, cross-domain issues are a solved problem in the web world. And until a recent firmware upgrade, any iPhone app that you installed, was able to read the application data of any other iPhone app.
If your app doesn’t need camera, GPS, offline access, or multimedia sound/graphics, then it’s probably OK to write it as a web app. You’ll be able to use existing standards and frameworks, and much of the same technology from your existing site.
Popularity: 12% [?]












{ 1 trackback }
{ 3 comments… read them below or add one }
Nice, concise rundown you’ve provided, this is a very valuable article. Thanks for your opinion!
Thanks for this post.
Although I disagree with you on a native app not being able to be classified a rich internet app (that really just boils down to semantics, however), I’ve personally been wondering why there is no JavaScript API access to some of the platform facilities, especially the CoreLocation services. Like you mention in your point about cross-domain issues, security for that kind of access is an all but solved problem.
The Big 5 iPhone browser project (http://code.google.com/p/big5/ and http://www.big5apps.com/) allows the iPhone location/GPS service to be accessed via JavaScript.
… just add JavaScript access to the iPhone local data store and there are a lot of nice, light-weight apps that would flow.
I would be very nice to see Apple offer a similar JavaScript API interface!