TL;DR; IE… it’s IE.
JavaScript, specifically most things >ECMAScript 5 (ES5), has a major anchor in the business application development sector. Here we are, about to complete 2018, and we’re still being denied access to all the great new features.
At the time of writing, Internet Explorer still has nearly a 10% market share on US desktops. This varies wildly depending on the site and target audience. In business applications we maintain, for instance, we have seen this number jump as high as 70%. This is counting IE 8-11. We still see IE8/NT5.1 (Windows XP) in user agents.
What does this mean for us when developing business applications? We are stuck supporting IE11 on the majority of our new projects. IE11 has a 99% implementation of ES5 features. The linked chart is interactive and allows you to explore the details of support across many major browsers. If you continue over to the ES6 support table, you’ll notice an ugly red column for IE11. That is our anchor.
Believe me, we’ve tried. Ultimately, requirement decisions are not ours to make. On some internal use applications, we can make the case to use only modern browsers. However, when it comes to B2B or B2C applications, we have no control over the end users.
We do have a safety net as part of our build processes that automatically transpiles down to ES5. This is just in case we let something slip through. I find it cumbersome when developing new features to run a special transpiled version of the application for IE testing. There’s something nice about edit and run without the mandatory build step. Many of the new features are just syntactical sugar so writing it the old way still works fine, if a bit more verbose. We do use a polyfill to handle some things like promises. They don’t work the same as native promises, but they get the job done (mostly).
I have no idea. Microsoft has promised security fixes for IE11 through 2025. Many businesses still have legacy applications which only work properly in some version of IE. Users seem to be reluctant to have one browser for older applications, and one for everything else. They will just use IE11 for everything.
I still had to support IE6 on some applications until 2012. That’s an 11 year run. IE11 was only released in 2013. Hopefully, it won’t outshine IE6 and we can drop support by 2024.