Last week I spent a lot of time on WebKit in order to produce a comprehensive comparison of all WebKits. My purpose was to prove there is no “WebKit on Mobile,” and to gain some more insight in the complicated relations between the various WebKits.
Therefore I now present the Great WebKit Comparison Table. In it I compare 19 different WebKits on 27 tests.
Senior web thinkers from Alex Russell to Tim Bray have envisioned a bright new future for the mobile web based on the argument that “WebKit on Mobile” is taking over, and that, with browser incompatibilities out of the way, developers can concentrate on building compelling web applications.
Much as I hate to disagree with them, I feel honour-bound to point out that there is no “WebKit on Mobile.” There’s iPhone WebKit, Android WebKit, S60 WebKit (at least two versions each), Bolt, Iris, Ozone, and Palm Pre, and I don’t doubt that I’ve overlooked a few minor WebKits along the way.
All 10 mobile WebKits I’ve identified so far are subtly or wildly different.
Media queries, especially, which are the most important single technique for creating consistent interfaces across inconsistent devices, have wildly differing support levels.
And Acid 3 scores range from a complete fail to 100 out of 100.
This is not consistency; it’s thinly veiled chaos.
Therefore, testing all your mobile web applications and sites in several WebKits will remain mandatory for the time being.
querySelectorAll(), and a few new HTML5 functionalities such as geolocation and localStorage.
My main criterion for test inclusion was that a certain method, property, or declaration must be supported by at least two WebKits, but not by all. I made an exception for geolocation, since it’s so totally crucial for the mobile platform. (Geolocation is currently supported only by iPhone 3.1)
I tested three Safari versions, three Chrome versions, one Konqueror version (with a newer one hopefully coming up), the 10 mobile WebKits I mentioned above, and at the request of Vodafone I added the JIL Emulator (it's an Android G2 except that it supports media queries).
Emulators are not allowed (except for the JIL one, which doesn’t claim to emulate any existing browser). Few mobile browser vendors will take the trouble to port their browser to Windows or Mac. Instead they’ll opt for an already-existing WebKit on those platforms; probably Safari. However, as the tests show, Safari is wildly different from all mobile WebKits. Therefore emulators are not to be trusted.
Note that I only test for compatibility. Other factors, notably user interface and performance, are left out of the equation — and that may have to be corrected in the future, seeing that S60v3 WebKit, which is by far the worst-scoring one, at least has a workable user interface, something that much-higher scoring WebKits such as Iris don’t.
I devised a scoring system. I’m not 100% certain that this is a good idea, but I desperately needed an automated method to judge WebKits. Details are on the page.
With the scoring system in place I created a script that does a bit of basic data mining in trying to establish the number of differences between WebKits as well as an exact list of those differences. The results were surprising:
All in all I hope that this research shows that there are many flavours of WebKit, and that “WebKit taking over the mobile space” does not equate “there are no more browser differences.” (Besides, let’s not forget Opera, shall we?)
Update: Most Palm Pre results added thanks to a reader.
widthunreliable on Android?
I’ll be around at the following conferences:
Comments are closed.