Page MenuHomePhabricator

Safari support for Modern (Grade A) (proposal for current + 3 previous major versions)
Open, Needs TriagePublic

Description

https://www.mediawiki.org/wiki/Compatibility#Browser_support_matrix

I would like to propose adjusting Safari support for Modern (Grade A) to current and previous 3 major versions.

Before: Safari 11.1
After: Safari 15 (current minus 3 previous major version, current is 18)

Statistics
The data from Static shows Safari <14 don't even make the list. The least used browser in this list is only 0.36%.

Wikimedia statistics

  • Safari iOS 14: 0.38% of Safari iOS users (0.08% of all)
  • Safari iOS 12: 0.5% of Safari iOS users (0.1% of all)
  • Safari iOS 11, 13: <0.1% of Safari iOS users (<0.02% of all)
  • Safari 14: 2% of Safari users (0.072% of all)
  • Safari 13: 0.86% of Safari users (0.032% of all)
  • Safari 12: 0.16% of Safari users (0.006% of all)
  • Safari 11: 0.4% of Safari users (0.014% of all)

Total Safari (macOS, iOS) 11-14: 0.324% of all pageviews

CSS and JS Properties to Gain
Full Support

  • CSS3 tab-size
  • CSS math functions min(), max() and clamp()
  • :is() CSS pseudo-class
  • Date.prototype.toLocaleDateString
  • WOFF 2.0 - Web Open Font Format
  • FLAC audio format
  • Scroll methods on elements (scroll, scrollTo, scrollBy)
  • prefers-color-scheme media query
  • gap property for Flexbox
  • CSS3 image-orientation
  • CSS Conical Gradients
  • display: flow-root
  • Pointer events
  • WebGL 2.0
  • Color input type
  • Printing Events
  • BigInt
  • flat & flatMap array methods
  • AbortController & AbortSignal
  • FIDO U2F API
  • Intl.PluralRules API
  • WebAssembly Threads and Atomics
  • WebAssembly Sign Extension Operators
  • WebAssembly Reference Types
  • WebAssembly Non-trapping float-to-int Conversion
  • WebAssembly Import/Export of Mutable Globals
  • WebAssembly Multi-Value
  • WebAssembly Bulk Memory Operations
  • WebAssembly BigInt to i64 conversion in JS API
  • Web Animations API
  • Resize Observer
  • MediaRecorder API
  • IntersectionObserver
  • TLS 1.3
  • 'SameSite' cookie attribute

Partial support

  • Datalist element
  • Asynchronous Clipboard API
  • Web Authentication API
  • Server Timing
  • WebP image format
  • WebM video format
  • Ogg Vorbis audio format
  • HTTP/3 protocol
  • Date and time input types
  • createImageBitmap

Without prefix

  • CSS text-orientation
  • CSS position:sticky
  • Web Audio API
  • CSS Logical Properties
  • Encrypted Media Extensions
  • CSS clip-path property (for HTML) (partial)
  • text-decoration styling (partial)

Source: https://caniuse.com/?compare=chrome+96,edge+96,safari+11.1,safari+15,firefox+94&compareCats=all

Event Timeline

Note:

  • Chrome and Firefox use last 3 year version rule. Currently Safari does not use such rule, probably because Safari in iOS can not be upgraded individually.
  • The Grade A and Grade C defined are normative only.
    • It does not define which browser will get JavaScript (which is detected via feature check in startup module)
    • Non-JS features must work in all Grade C browsers, and JS features must work in Grade A browsers (but might work in some Grade C ones)
  • Using newer JS features is not only blocked by this requirement, but also blocked by T277675: Add native support for ES2016-ES2020 or higher versions. Currently, only features up to ES7 can be used in Wikimedia code, where all Grade A browsers at least supports ES8.

However for Safari, we will drop support for version <14 completely once T367821: Discovery: Deprecation of TLS 1.2 is resolved.

https://analytics.wikimedia.org/dashboards/browsers/#all-sites-by-browser/browser-family-and-major-hierarchical-view

  • Safari iOS 14: 0.38% of Safari iOS users (0.08% of all)
  • Safari iOS 12: 0.5% of Safari iOS users (0.1% of all)
  • Safari iOS 11, 13: <0.1% of Safari iOS users (<0.02% of all)
  • Safari 14: 2% of Safari users (0.072% of all)
  • Safari 13: 0.86% of Safari users (0.032% of all)
  • Safari 12: 0.16% of Safari users (0.006% of all)
  • Safari 11: 0.4% of Safari users (0.014% of all)

Total Safari (macOS, iOS) 11-14: 0.324% of all pageviews

Historically, we've raised the browser support requirements based on a feature we want to use that we think is worth the trade-off. GZWDer is correct that the auto-upgrade features of Chromium- and Firefox-based desktop browsers have meant that we've changed to a rolling three-(ish)-year window, and that doing this for mobile-based devices like iOS Safari and Android Chrome would be a more aggressive change.

Is there a specific feature that is being held back from production by raising iOS and desktop Safari to 15+ (i.e., every other browser including Android 5 support it)?

https://gitlab.wikimedia.org/repos/ci-tools/browserslist-config-wikimedia is where the code version of our standard lives, but let's decide first before writing patches. :-)

  • Android 5, released in 2014, supports up to Chrome 95 (released in 2021) (3 years old) as well as the latest version of Firefox (2024)
  • iOS 14, released in 2020, supports only Safari 14, also released in 2020.

Chrome and Firefox for Android can be updated through Play Store.

I agree that if there is no specific need for this version bump, it's probably best to wait on T367821 since that will have the same effect on the current matrix.