After we ended support for Internet Explorer 8 in our Grade A "JavaScript" run-time (T118303 and https://gerrit.wikimedia.org/r/252383), we now start work on aligning the remainder differences between MediaWiki and jQuery browser support. Not all of it, but at least the bottom line of Grade A support so that we can upgrade to jQuery 3.0.
In the next release of jQuery, the 1.x and 2.x branches are being rebranded. The jQuery 2.x branch naturally becomes jQuery 3.0. The jQuery 1.x branch becomes jQuery 3.0 Compat. This better reflects what 1.x branch is (that is, the same API with additional support code for MSIE 6-8).
However, during the jQuery 3.0 alpha release cycle, it has become clear that there is no longer much need in maintaining the Compat branch. After Microsoft publicly announced that MSIE 8, 9 and 10 are EOL effective immediately, jQuery followed suit. jQuery 3.0 will still support IE9+, but not IE8. As such, jQuery Compat (for IE6-8) will no longer be maintained.
There are a few other support differences between jQuery 1.x (the version we currently use) and jQuery 2.x/3.x, so we're not quite there. Specifically, older versions of Safari (Mac), Mobile Safari (iOS), and Android will likely encounter run-time failures if we don't blacklist them from Grade A (so we may provide the non-javascript Grade C experience instead.)
Timeline
Documentation
jQuery 1.11 to 1.12 (or jQuery 2.1 to jQuery 2.2)
jQuery 1.12 to jQuery 3.0 (or jQuery 2.2 to jQuery 3.0)
- https://blog.jquery.com/2015/07/13/jquery-3-0-and-jquery-compat-3-0-alpha-versions-released/
- https://blog.jquery.com/2016/01/14/jquery-3-0-beta-released/
- http://blog.jquery.com/2016/05/19/jquery-migrate-1-4-1-released-and-the-path-to-jquery-3-0/
- https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/
- https://jquery.com/upgrade-guide/3.0/
jQuery 3.x
- https://blog.jquery.com/2016/07/07/jquery-3-1-0-released-no-more-silent-errors/
- https://blog.jquery.com/2016/09/22/jquery-3-1-1-released/
- https://blog.jquery.com/2017/03/16/jquery-3-2-0-is-out/
- https://blog.jquery.com/2017/03/20/jquery-3-2-1-now-available/
Blockers
Regressions that may affect us:
- https://github.com/jquery/jquery/issues/3573 - holdReady undefined.
- https://github.com/jquery/jquery/issues/3571 - width()/height() for inline elements.
- https://github.com/jquery/jquery/issues/3602 - width()/height() for inline elements on Android 4.
- https://github.com/jquery/jquery/issues/3611 - outerWidth() edge case.
- https://github.com/jquery/jquery/issues/3612 - Avoid future read-only regressions for offset().
- https://github.com/jquery/jquery/issues/3606 - Performance of $.Deferred().
- https://github.com/jquery/jquery/issues/3646 - Deferred unwrap bug (invalid – T163510).