It’s time to stop supporting all Internet Explorer versions

Observation

We are in 2020, I manage a website used all over the world and some people are still using Internet Explorer.
At the same time I work on the new version of that website and I have to decide which kind of tool I will use.

The global consensus is to use webpack and babel, providing all polyfills, for supporting old browsers.
While it was a good idea before 2020, when it was complicated to change habits and IT systems, now it’s bad for everyone to continue like this.

Why stop support?

When something works since years you don’t want to change for no real reasons.
For example I don’t update drivers for my graphic card until I’m forced.

By using polyfills, bootstrap, and tools that allow us to produce code for everyone, we don’t encourage people to change or update their browsers.
Since their navigation keeps working, why do they want to change?

Some others are just too lazy to change and count on developers to maintain that status quo on it.
Finally there are companies which stay in the past because of their previous tools using activex, flash, etc…

Furthermore for developers, when it’s time to create a new website, we always choose the same solution.
Because it’s what we have to do by the tech pressure.
We add a lot of tools and processes for transpiling code while it’s maybe not useful.
And Internet Explorer continues to annoy us because we continue to support it.
Take a deep breath and now refuse that scheme.

Solution

Hence it’s time to end this period of compliance with a radical solution: simply stop supporting Internet Explorer.
When I said that I mean to simply block access to websites to those browsers.

Be careful!
If your site is intended for use by the government, the medical sector, or developing countries it’s not a good idea to block access (maybe in 2030).

How to do that? With special HTML headers and javascript for detecting Internet Explorer and redirect them to a page listing all other browsers compatible.
First you have to create a new HTML page called ie.html and you will put this code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>My website is not for Internet Explorer</title>
    <meta name="description" content="My website is not for Internet Explorer" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en" />
</head>
<body>
    <h1>My website is not for Internet Explorer</h1>
    <p>This website, is not available for Internet Explorer from version 5.5 to 11, consequently you have to use a modern browser.<br />
        So this a list of compatible browsers with this website.</p>
    <ul>
        <li><a href="https://brave.com">Brave - https://brave.com</a></li>
        <li><a href="https://www.google.com/chrome">Chrome - https://www.google.com/chrome</a></li>
        <li><a href="https://www.microsoft.com/edge">Edge - https://www.microsoft.com/edge</a></li>
        <li><a href="https://www.mozilla.org/firefox/new/">Firefox - https://www.mozilla.org/firefox/new/</a></li>
        <li><a href="https://www.opera.com">Opera - https://www.opera.com</a></li>
        <li><a href="https://vivaldi.com">Vivaldi - https://vivaldi.com</a></li>
    </ul>
</body>
</html>

For some of you, you have recognize an old doctype XHTML 1.0 Strict (it’s been a long time my friend).

Then you will add inside the head tag of all your other pages:

<head>
    <!--[if IE]>
        <meta HTTP-EQUIV="REFRESH" content="0; url=/ie.html">
    <![endif]-->
<head>

This will work for Internet Explorer from 5.5 to 9.

Finally you have to add this script before all other your scripts:

if(window.navigator.userAgent.toUpperCase().indexOf("TRIDENT") !== -1 || window.navigator.userAgent.toUpperCase().indexOf("MSIE") !== -1) {window.location.assign('/ie.html');}

This will work for Internet Explorer from 10 to 11.