Today, everyone is linking to a provocative article from The Register with the headline Apple handcuffs ‘open’ web apps on iPhone home screen. There are three separate issues, all of which cause Web applications that are launched from the home screen to work more poorly than they do if you run them in Safari. The biggest issue is that Applications run from the home screen are not making use of the new JavaScript interpreter in iOS 4.3.

A friend who’s a software developer boils down that issue as follows:

  • Nitro is a JIT engine and requires that an executable using it be able to mark data memory pages as executable. Safari is a system app so it gets to do that (there’s a signed entitlement in the app that allows this).
  • Third-party apps using UIWebView (e.g. PhoneGap apps) do not get that capability so they do not get Nitro and I wouldn’t expect them to, since permitting marking data as executable makes app store review kind of pointless.
  • Web apps running from home screen but not in full-screen mode (which launch inside Safari) run Nitro fine.
  • Web apps running from home screen in full-screen mode launch inside Web.app, which is a system app and in theory should be able to run Nitro but it’s not because it lacks the entitlement.

Sounds like a bug to me.

For the discussion behind those points, see this thread at Hacker News.