PPK: Chromia

Orde Saunders' avatarPublished: by Orde Saunders

PPK was talking about Chromium at Mobilism, these are my notes from his talk.

"Chrome" on Android doesn't exist.

[Chrome on iOS is not Chrome - it's an Apple WebView because Apple doesn't allow other rendering engines. It's a UI/UX/integration skin for Google services.]

Android "Browser" is still larger than Chrome globally but that's changing. Android Chrome is ~19% globally. Global stats do not reflect national stats.

Android Chrome makes up 34% of mobile browsers in the Netherlands. About 30% are latest chrome but surprising amount of Chrome 28 and 30 - ~20% each. About 65% of vendors are Samsung and v28 is ~40% of Samsung.

Chrome has a Desktop UA that will show up as Desktop Chrome on Windows. If you never log into Google play then Chrome won't be updated, this is more of a problem in China.

Device vendors use older Chrome as their default browser version. Starting with the Galaxy S4 the default browser is Chromium 18. This was updated to 28 but has been stuck there for a while. About 30% of Samsung users use the official Chrome.

Chromium 30 is the WebView.

Android's purpose is to spread the use of Google services across the mobile web. It makes economic sense to offer Android free. Back in 200 vendors needed an answer to iPhone and Android was it. Pretty much every vendor (Apple, Nokia and BlackBerry being the exceptions) jumped on the bandwagon. If all phones were running the same software why would a consumer care what phone they bought? People don't get excited about the latest CPU specs.

To start with Google allowed them to differentiate. Vendors could create their own interface layers and change some apps - including the browsers => fragmentation (or differentiation).

There are three Android default browsers.

  1. Android WebKit (Browser) - vendors could turn on and off flags. Development stopped at Android 4.3.
  2. Chrome - Google wants this to be the default browser. Most vendors continued to use Android Webkit.
  3. Chromium - Vendors take the open source Chromium and build their own version.

Nexus devices use Chrome.

Samsung uses Chromium 28, HTC uses 33, LG uses 30 (or 34), Xiaomi uses 34 or 35 (they don't have the details in the UA string), Cyanogen uses 33, Sony ... is complicated (probably the WebView).

WebView

This is the embedded WebView that apps use to render web content. Used to be nearly the same as the default browser.

  • 4.4: Chromium 30
  • 4.4.3: Chomium 33
  • 5: Chomuim 37 and updatable (probably going to be ~3 versions behind Chrome)

Google Services

A package of crucial Google apps such as Gmail, Maps, YouTube ... and Chrome. Device vendors have to take all or none of these. Most opt-in so they have to have Chrome, however it's not required to be the default browser. Most have two browsers installed, the vendor browser (generally the default) and Chrome. About 33% of users use Chrome.

Amazon, Xiaomi, Huawei, ZTE, (and other Chinese vendors), don't include Google Services.

In the future there are only likely to be more Chromium versions. Device vendors prefer Chromium over other browsers, maybe because of the customisation potential.

If you are confused then you are starting to understand.

What's the difference?

Differences aren't huge but they are there.

HTC default browsers will wrap the text to the viewport when you zoom in. This only works with a high end phone but that's what HTC do, it's a differentiator that they hope will bring people back to their platform.

<input type="datetime"/> support is very varied: HTC, LG and Samsung don't. This isn't based on Chromium version. Unlike desktop it can plug into system date-time widget - maybe HTC, LG and Samsung have these hooks?

border-radius CSS property only works with individual top-left &c. long hand forms. Maybe for performance. They don't always have a clue what they are doing.

Somewhere between v28 and v30 the default of CSS left changed from 0 to auto. Older browsers (Samsung) have the old value.

position: fixed changed in v40. Anything stuck prior to this will have the old behaviour.

How to deal with it?

  • Acknowledge you have a problem.
  • Test each new Android phone carefully.
  • AndroidWebkit does not have "Crome" in it. Usually. Even then it doesn't mean it's Google's Chrome.
  • Check for a supported feature - pointer media query is a good mustard cut as Android WebKit doesn't support it.

Test lab

  • High end Smasung
  • Low end Samsung
  • HTC
  • LG
  • Motorola

Don't bother too much with Nexus - few end users have them and you might get lulled into a false sense of security.