Update for iOS7.1 Mar 12, 2014: the iOS7.1 release happily fixes almost all of the web problems in iOS7.0 that we describe in this blog. Read our recent blog entry describing the HTML5 improvements in iOS7.1.
Table of Contents
iOS 7 Bugs & Features
“We recommend that organizations standardized on HTML5 development, hold off on upgrading to iOS 7 until an update fixes these issues.”
In addition to these decisions, right and left swipe gestures within about 10 percent of display edge are always grabbed by iOS and treated as a forward/back request, and not passed to the browser. Furthermore, if you’ve built back/forward behavior into your app using history push-state, then accidental swipes will load the previous state as if it was a prior web-site. This will probably be unexpected behavior. Chrome for Android was the first browser to introduce this behavior, but has now removed it based on feedback from web developers. We hope Apple follows suit quickly.
In our own testing, we discovered a number of additional bugs in the iOS 7 runtime.
- On iPad, an orientation change when an input is focused shifts content unpredictably, and causes screen rendering artifacts.
- Launching and quitting the same home screen app several times can hard lock the device requiring a hardware reboot.
- requestAnimationFrame animations do not appear to background correctly, and cause performance degradation in RAF animations on the active page. This defeats one of the major purposes of using RAF animations.
- On iPad, if the document body is set to 100 percent height, content is shifted upwards by 20px in landscape mode. This can be worked around by calling window.scrollTo(0, 0) on the orientationchange event.
- In certain cases, resizing a composited layer (an element with 3D transform) does not repaint it correctly. Instead, the cached bitmap is stretched.
- CSS Animations will sometimes fire before implicit z-indexes have been calculated, resulting in incorrect z layering during an animation.
- Scripts running within Web Workers are not suspended unless either the originating page is explicitly killed, or the Safari process is explicitly terminated. Neither switching to another tab, nor minimizing Safari, nor turning off the screen seem to stop Worker execution. This is a serious issue that allows any web page to drain the battery of an iOS 7 device and slow down performance of the whole system without a user alert.
But it’s not all good news on the performance front. During the iOS 7 beta, we were concerned at the very slow DOM interaction benchmarks that we were seeing from Dromaeo on iOS 7, and expected that Apple would get performance back to snuff before final release. For DOM traversal, attributes and modification, performance is now back at iOS 6 levels, which is good. However DOM Query is still 50% of iOS 6 speed. This is a major concern for the many HTML5 apps that perform high numbers of DOM queries, and this needs to be on Apple’s fix-list for its next update.
Test of Canvas performance show a minor improvement in iOS 7 — about 10% in the Fishtank test and on Mindcat microbenchmarks. But SVG is the real revelation. Thanks to a switch to a new drawing algorithm, SVG Path drawing speed has improved 200x. Yes that’s literally 200 times faster. In iOS 6, a 10,000 segment SVG path took about 11 seconds to draw. In iOS 7 that’s now 53 milliseconds. iOS is now 6x faster than the Surface RT — the previous champ at SVG drawing performance.
Other SVG capabilities experience similar speed-ups. Some SVG Filter operations now appear to be GPU accelerated — which means that meaningful filter animations are now possible on iOS. But performance is dependent on specific filters. Color transformations (Color Matrix & Color Curves) and displacementMaps are fast. Complex compositing and lighting effects are still slow.
iOS 7: A Beta Release of Web
Given all these bugs and issues, combined with some genuine major advances, it’s hard not to interpret this as a beta release that was rushed into production for the release of the iPhone 5S. In a way, it reminds us of the Android 3 release — which was rushed into production for the Motorola Xoom tablet — with severe bugs and performance deficiencies. We’re eagerly awaiting the release of the first update for iOS 7 when we hope Apple delivers on its usual commitment to quality.
But beyond bugs, the design decisions in iOS 7 clearly privilege consumer content over business applications. We remain convinced that Enterprises that want to deploy HTML5 applications to mobile devices can’t rely on consumer browsers and need a secure and predictable mobile environment designed for business applications. iOS 7 has convinced us that more than ever that the future of HTML5 app deployment for business is Sencha Space.
Tom Coulton says
We’ve posted a Japanese translation of this blog article here: http://www.xenophy.com/sencha-blog/8938
Also, details of the Japan Sencha User Group can be found here: http://www.meetup.com/Japan-Sencha-User-Group/
Michael Mullany says
The UI usability bugs are now in bug reporter:
15099865 – Left/Right swipe activates forward/back actions
15100098 – Auto-hiding footer chrome causes usability problems when pages have bottom positioned elements
Michael Mullany says
@Antoine – we’ll file bugs. It’s nice to see someone from the Apple webkit team reading the blog. I hope you guys have a chance to fix these (and reconsider some of the browser chrome decisions – particularly the bottom chrome action – it’s wrecking our toolbars)
Antoine Quint says
@Michael We’re always on the lookout for issues related to performance and bugs introduced by new releases. Don’t hesitate to email me personally with a list of bugs once you’ve raised them, that way we can make sure they’re tracked appropriately. WebKit bugs should go to http://bugs.webkit.org and Safari bugs (UI-related issues) should go to http://bugreporter.apple.com. Thanks for your help!
Michael Mullany says
@ David L. No I wouldn’t characterize it like that. The bugs in the UIWebView will be fixed eventually, but the design decisions around how the browser chrome works won’t without a bunch of pressure from web developers. Space is friendlier to app-style designs than the iOS7 consumer browser.
btw. There are plenty of other bugs in iOS7 software at ship – we just focused on the web bugs.
Dave L says
“We remain convinced that Enterprises that want to deploy HTML5 applications to mobile devices can’t rely on consumer browsers and need a secure and predictable mobile environment designed for business applications. iOS 7 has convinced us that more than ever that the future of HTML5 app deployment for business is Sencha Space.”
That is quite a statement from a company that depends on the web platform and gets its value from papering over browser incompatibilities. Sencha Space depends on the iOS UIWebView component, which is just a wrapper for the “consumer” browser. It will also have breaking changes and bugs.
A more accurate statement
“Enterprises that want to deploy applications to mobile devices can’t rely on browsers”
FYI … including a startup image on a retina iPad with an app launched from the home screen constantly causes an iOS lockup, requiring a hard reset. If you do not include the startup image, the problem seems to go away on my iPad 3 (3rd gen).
Niels Matthijs says
A more thorough explanation of the problem can be found here
Antoine Quint says
Have you had a chance to file bugs for the issues you’ve encountered? This would help getting those issues tracked and fixed by Apple and the WebKit community at large. You can file WebKit bugs at http://bugs.webkit.org/ and Safari bugs at bugreporter.apple.com.