Repository navigation
Description
Microsoft has recently announced dropping IE<11 support completely in January 2020, including on Windows Server & Embedded versions. IE 11 will be made available to those supported systems that only had access to Internet Explorer 10 until now.
It seems jQuery 4.0 might be where we'd like to drop IE<11 support. When evaluating that, remember we're not releasing 4.0 right now but most likely closer to 2020 so the situation will make it more & more realistic. And with our strategy to reduce browser support only in major releases, if we don't drop those versions we'll be stuck with them for a long time.
Dropping IE<11 support could help a lot with the big planned refactors, like a rewrite of the event system that gets us closer to native and dropping Sizzle in favor of a smaller querySelectorAll wrapper with selector rewriting to work around issues.
Market share of IE<11 seems very low even right now. StatCounter data shows global IE 10 usage at 0.15% and IE 9 at 0.36%. Even in countries with historically high IE usage like China IE 10 & IE 9 already have small market share. In South Korea IE 11 has high usage at 20.1% but IE 10 - only 0.40% and IE 9 - only 0.18%.
Event netmarketshare.com, which historically shown way higher IE usage than StatCounter, shows all IE<11 versions combined had market of 1.13% in January, 2019.
Let's look at some other popular tools. Most of the ones I checked either already support only IE 11 or no IE at all or plan to drop IE<11 support in their next versions.
- UI libraries
- jQuery UI stopped testing on IE<11 more than 2 years ago.
- Semantic UI supports IE 11 only.
- Materialize supports IE 11 only.
- Material UI supports IE 11 only.
- Bootstrap 4, released a year ago supports IE 10+. Currently it seems to plan to drop all IE versions in v5, together with no longer depending on jQuery.
- Foundation supports IE 9+ but plans to only support IE 11 in the next version.
- Pure.css supports IE 8+. As far as I understand, it's a CSS-only library.
- UIKit supports IE 11 only.
- Skeleton officially supports IE 11 only but declares it may work in older versions.
- Frameworks
- React supports IE 9+ but requires polyfills for Map & Set .for IE<11 and requestAnimationFrame for IE 9. It also seems likely from various discussions that the next major version of React may drop IE<11.
- Angular supports IE 9+. It's the only framework in the list where I couldn't find information about plans to drop IE<11. IE 9 support, in particular, requires the app to load many polyfills.
- AngularJS supports IE 9+ but currently it's on life support, only receiving security fixes for the next ~2.5 years.
- Vue.js supports IE 9+. The next version will only support IE 11 and in a limited way.
- Ember dropped support for IE<11 a year ago
- Utility libraries
- Lodash supports IE 9+, but version 5 will only support IE 11
- Three.js support is not clear; only IE 11 works with the WebGL renderer which is faster & has more features than the other ones. Older browsers should work with other renderers; it's not specified how far the support goes, though.
- D3.js v5 doesn't support IE at all
- Axios, a popular HTTP library, supports IE 11 only
- Moment.js supports IE 9+
- Tools to prepare test cases:
What do you think?
Activity
dmethvin commentedon Feb 18, 2019
Anyone who needs IE<11 support can continue to use jQuery<4 so there's no heavy burden being put on those who need to run on older browsers. I think we've also had a policy that if the vendor doesn't support it we don't support it either. Not just IE but browsers like Firefox where we don't support anything older than ESR.
I've seen people continue to use jQuery 1.x and HTML5 Boilerplate thinking that gives them better compat with older IE, but they're actually using CSS and JS features that aren't supported in IE9. It all works out in the end because they never test on those browsers so they don't know it's broken. 😏
The only other common case I've seen is people running IE11 in IE9 compat mode, but jQuery never supported that. It may kinda sorta work today though, so we might get some people surprised their IE11 in IE9 mode doesn't run jQuery 4.0.
Johann-S commentedon Feb 19, 2019
Hi,
Yep in Bootstrap v5 we remove totally IE support, but we'll list polyfills needed for those who plan to use our v5 on IE 11.
BTW our v5 can work with and without jQuery 👍
According to your planning I think it's a good idea to remove IE 11 and it'll decrease a lot jQuery size 👍
mgol commentedon Feb 19, 2019
@Johann-S This issue is about dropping support for IE<11. I don’t think we’re ready to drop IE 11 just yet.
cseelus commentedon Feb 19, 2019
@Johann-S Unfortunately IE11 still is used quite a lot in some countries (~3% worldwide, South Korea ~20%[1]), so dropping support for it would exclude a lot of users.
marcus-hiles commentedon Feb 20, 2019
woow thats a big one, not a fan of IE, but I think this will affect lots of people and lots of sites.
These guys just keep disturbing developers lives!
dmethvin commentedon Feb 20, 2019
@marcus-hiles not sure I understand. Do you know of a lot of sites that have users of IE10 or earlier? Are those sites actively developing their code and updating their jQuery to the latest version? No site currently using jQuery 1.x, 2.x, or 3.x will be affected by us releasing jQuery 4.0. How would people be affected?
marcus-hiles commentedon Feb 21, 2019
@dmethvin
Trust me, u'll get about 60% of developers who are newbies or mid-level developers who hardly check all browser support versions before jumping to the latest versions of libraries, and this can happen to them with jquery 4.0. Normally once they check their code in the browser they are working in, which might be Firefox or chrome and since it works for them, they are done. Only for their applications to go live and clients start complaining several times and even stop using their plugins or site, before they notice. If they are lucky, they'll discover this early and work on it, if not its doomsday for them.
A lil suggestion is, there could be a fallback implemented in jquery, so that it detects if your browser is <IE11 and calls a deprecated function or native javascript function in the background to implement whatever jquery function you call.
mgol commentedon Feb 21, 2019
@marcus-hiles If a developer only checks how their site looks & works only in Chrome & Firefox, the chance it will work properly in IE is minuscule, even if they use libraries in versions that support IE <11. jQuery makes it easier to avoid cross-browser issues but it doesn't solve this problem completely. You still need to use only those browser features that are supported and even then your code may trigger bugs in some legacy browsers (e.g. even IE 11 has lots of flexbox issues).
With IE <11 having a tiny market share that will only get tinier when we release 4.0 (this will not happen anytime soon) most people shouldn't care about their code working in those browsers.
It's not that simple. We have browser-related workarounds sprinkled around the code base and they are usually not jQuery representatives of a native method. If we remove support for older IE then the support is gone and it's impossible to make it work via some clever hacks like that.
DemonCloud commentedon Feb 22, 2019
remove IE<11 support. Let developers who need to be compatible with lower-level browsers use the old version of jQuery. jQuery needs to streamline code and improve performance
PlippiePlop commentedon Feb 22, 2019
Is it not easier to make an IE-JQ-polyfill.js for < IE11 which you can load in case you need < IE11 support in 2020. Even IE11 support is questionable in 2020
mgol commentedon Feb 22, 2019
@PlippiePlop No, it's not that simple for the reasons I mentioned in my last comment. This would only increase code complexity and wouldn't buy us anything.
3 remaining items
Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
[-]jQuery: Drop IE<11 support in jQuery 4.0?[/-][+]jQuery: Drop IE<11 support in jQuery 4.0[/+]Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
Core: Drop support for IE <11, iOS <10, Android Browser & PhantomJS
Core: Drop support for IE <11, iOS <11, Firefox <65, Android Browser …
Core: Drop support for IE <11, iOS <11, Firefox <65, Android Browser …