Original URL: http://www.theregister.co.uk/2011/03/15/apple_ios_throttles_web_apps_on_home_screen/

Apple handcuffs 'open' web apps on iPhone home screen

Three bugs? Or three-headed App Store conspiracy?

By Cade Metz

Posted in Developer, 15th March 2011 01:26 GMT

Exclusive Apple's iOS mobile operating system runs web applications at significantly slower speeds when they're launched from the iPhone or iPad home screen in "full-screen mode" as opposed to in the Apple Safari browser, and at the same time, the operating system hampers the performance of these apps in other ways, according to tests from multiple developers and The Register.

It's unclear whether these are accidental bugs or issues consciously introduced by Apple. But the end result is that, at least in some ways, the iOS platform makes it harder for web apps to replace native applications distributed through the Apple App Store, where the company takes a 30 per cent cut of all applications sold. Whereas native apps can only run on Apple's operating system, web apps – built with standard web technologies such as HTML, CSS, and JavaScript – can potentially run on any device.

"Apple is basically using subtle defects to make web apps appear to be low quality – even when they claim HTML5 is a fully supported platform," says one mobile web app developer, who asked that his name not be used.

Apple did not respond to multiple requests for comment.

If a web app is run from the iOS 4.3 home screen – in other words, if it is saved to the screen alongside local apps downloaded from the Apple App Store – and launched into full-screen mode, it runs roughly two to two and a half times slower than it does in the browser, according to various tests. It appears that whereas Apple has updated the iOS 4.3 Safari browser with its high-speed Nitro JavaScript engine, Nitro is not used when web apps are launched from the home screen.

"Essentially, there are two different JavaScript engines," says Alex Kessinger, a mobile application developer and blogger who has focused on building web-standards-based apps for the iPhone. "They're not using the new JavaScript engine with applications that launch from the home screen."

What's more, such "home screen web apps" can't use various web caching systems, including the HTML5 Application Cache, which means they can't be cached to run offline. And they aren't rendered using Apple's newer "asynchronous mode". They're saddled with the old "synchronous mode", which means means they don't quite look as good.

Pie Guy offline on iOS 4.3

Offline 'home screen web app' on Apple iOS 4.3

Though the company did not respond to our inquiries, Apple is apparently aware of all three issues involving home-screen web apps. According to Apple developers posting to the web, the speed issue has been discussed in the company's developer support forums, and one developer – the same unnamed developer quoted above – confirms with The Reg that multiple bugs have been filed on the issue.

He also says that bugs have been filed on the cache and asynchronous mode issues – and that he's actually discussed the problems with Apple. "I've talked to people on the Mobile Safari team who said they knew about the [caching] issue," he tells us. The caching issue is discussed on the popular developer site stackoverflow.

All three issues also affect native iOS web applications that uses Apple's UIWebView API – i.e., native applications that tap the web in a big way. "[UIWebView] is a controller that you can include in your app to offer web content," says Alex Kessinger. "Some people write their entire app in HTML and then just bundle it for inclusion in the App Store."

Last year, as Apple boss Steve Jobs defended the company's decision to ban Adobe Flash from the iPad and the iPhone, he told the world that Apple believed in "open" web standards. "We strongly believe that all standards pertaining to the web should be open. Rather than use Flash, Apple has adopted HTML5, CSS and JavaScript," Jobs said in his famous "Thoughts on Flash" open letter.

"Apple’s mobile devices all ship with high performance, low power implementations of these open standards. HTML5, the new web standard that has been adopted by Apple, Google and many others, lets web developers create advanced graphics, typography, animations and transitions without relying on third party browser plug-ins (like Flash). HTML5 is completely open and controlled by a standards committee, of which Apple is a member."

But at the same time, the company has a vested interest in its App Store, where it takes a 30 per cent cut of all applications sold, and pure web applications are ultimately a threat to the store, particularly when they're loaded to the iOS home screen as if they were local apps. "Some people like to think of it as a conspiracy theory, but it could be a bug," Kessinger says, referring to the speed issue. "If it is conspiracy, it makes a lot of sense for Apple. If you 'disallow' home screen web apps, you prevent people, in a way, from bypassing the App Store."

Down to the test

According to tests from developer Maximiliano Firtman, author the O'Reilly tome, Programming with the Mobile Web, Apple iOS 4.3 runs web applications in the browser about two times faster than when they're launched from the home screen into full-screen mode. And like the three other developers we spoke to, he's sure this is because home screen apps can't take advantage of Nitro.

"I'm not 100% sure, but 99.9999% sure that the timing difference is because of lack of Nitro," Fitman tells us. Nitro was introduced with iOS 4.3. Fitman offers a version of the Sunspider JavaScript benchmark that lets you easily see the speed difference for yourself, embedding Sunspider in an iFrame so that it will run fullscreen on the iPhone and iPad. We confirmed his results with tests of our own.

Running in Safari on an iPhone 4 loaded with iOS 4.3, Sunspider took about 4047ms:

Sunspider on iOS 4.3 Safari

Running from the home screen, it took about 10747ms:

Sunspider on iOS 4.3 homescreen

Apple isn't degrading the speed of home screen web apps. It's boosting the speed of web apps in the browser. But in the long run, the effect is the same. And if this is a bug, Apple has yet to fix it.

On top of this, apps are hampered by the cache and asynchronous mode issues. According to one anonymous developer, access to certain web caches was cut off in iOS 4.2. And the issue is confirmed by a second developer. You can try it yourself with HTML5 apps such as Pie Guy. With earlier versions of the OS, if you move the game to the home screen and run it once, you can then play it offline. But if you try to do so on the latest version of the operating system, you can't.

The first developer also says that WebView native apps and home screen web apps are rendered in synchronous mode, whereas on iOS 4.3, they're rendered in asynchronous mode. "[With synchronous mode], you will sometimes see this weird grid of dark squares," he tells us. "Basically, when repainting the screen, synchronous mode can sometimes show your UI partially repainted."

This developer reiterates that if Apple didn't specifically introduce these problems in iOS, it's aware of them now. And he says that the Mobile Safari team has indicated the issues will not be fixed.

If Apple won't fix them, he says, Google should. "The Android team needs to pick this up and compete on it." ®

Updated: This story has been updated to make it clear that the speed difference occurs when home screen apps are launched into full-screen mode.