Page MenuHomePhabricator

Bump basic and modern supported Android browsers to v5
Open, Needs TriagePublic


WARNING: This is not yet actionable, simply a collection of data points so far.


Affected components: MediaWiki core, all skins/extensions, Wikimedia Foundation product, third-parties.

Android up to 4.4.4 is currently responsible for many of the remaining -webkit- vendor prefixed properties in render critical CSS, for example on transition property. (Chrome up to 42 is the other one, but that's more neglible as it's non-existent in our access stats with Chrome 38 as somewhat significant outlier with up to 0.5% of pageviews 2021 according to


Turnilo breakdown (login only) of OS family, major and minor versions for last 30d, showing Android 4.2 leading, 4.4 behind, 4.3 and others basically non-existing. Altogether at widely under 1%.

Possible alternative to proceed on

Focus on CSS only and remove -webkit- vendor properties and leave JS support, browserslist-config-wikimedia and infrastructure access untouched.

Further reading

Event Timeline

Chrome up to 42 is the other one, but that's more neglible as it's non-existent in our access stats

Mobile Chrome 38 is prevalent in Dashiki's browser views, some 2% of all Chrome Mobile views and accordingly 0.5% of all views. I don't know why since I haven't been able to identify anything special about the version (unlike e.g. Firefox 78).

Hmm, I was just about to file a similar task about dropping this support, for JS reasons[1]. Note that Android 4.2 is already not supported per T266866: Remove "Basic" support (Grade C) for browsers without TLS 1.2+ (MediaWiki core and WMF infra), so this would be just dropping 4.3 and 4.4.

What is the threshold needed to drop modern/javascript support?

[1] as far as I can tell the only reason mw.loader needs to handle window.Set not existing is for Android 4.3 and 4.4 support, since the only functionality used there is Set.add and Set.has, which the other browsers all support, except for the bit where IE11 has Set.add return undefined instead of the set itself, but the return value isn't needed