Check if a browser supports ES6

javascript-logo-banner

Great snippet by Benjamin De Cock:

var supportsES6 = function() {
  try {
    new Function("(a = 0) => a");
    return true;
  }
  catch (err) {
    return false;
  }
}();

The critical test is the a = 0. All browsers supporting default parameters have a fairly complete support of ES6 — for example, Edge 13 will be rejected by this test despite a decent ES6 coverage.

The Stripe website for example ships with untranspiled ES6, which is only executed if the supportsES6 check checks out:

if (supportsES6) {
  var script = document.createElement("script");
  script.src = "my-es6-file.js";
  document.head.appendChild(script);
}

Test if ES6 is ~fully supported →

Elsewhere , , ,

3 Responses to Check if a browser supports ES6

  1. Ralf says:

    This is “nice” but requires CSP headers to include support for ‘unsafe-eval’. Any idea how to do this without this requirement?

  2. Pingback: Check basic ES6 support without “unsave-eval” [duplicate] – program faq

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.