IE11 support. Targeting es6 browsers only

It would be nice to have clarification on IE11 guidelines. There was similar thread last October, but that never got answered and this is somewhat more detailed question.
https://discuss.dev.twitch.com/t/extension-browser-compatibility/12339

  • Is IE11 support required/recommended/optional?
  • Will my extension fail the review process unless I have IE11 support?
  • Will my extension fail the review process if I use es6 features like modules (breaking all pre 2017 browsers, but working on all recommended browsers except IE)
  • If I don’t want to support IE, can I just disable the extension completely for IE users (eg. with html content tags)?

I tried some of the existing extensions with IE11 for science and the results were mixed.

Working:

  • Streamlabs leaderboards
  • Viewer geolocation

Has issues or not working at all:

  • Darwin project: works with graphical glitches (incorrect element alignment)
  • Muxy leaderboard: nothing (script error at es2015 string repeat)
  • StreamElements Leaderboards: failing static assets (uses es6 modules & async etc.)
  • Hearthstone innkeeper: mostly working, but unreliable & laggy (on a gaming desktop)

It’s also worth noting that the whole twitch site itself barely works on IE. Sometimes streams don’t load and I had to restart the browser twice during these tests because it froze after page transitions. Adding extensions to that probably doesn’t help.

I think explicitly allowing the use of es6 modules (which apparently some extensions are using already) would make vendor bundling story clearer. All the other recommended browsers have support for this (and other features that would make building extensions faster and nicer)

JS bundling related discussions:
https://discuss.dev.twitch.com/t/webpack-not-allowed-official-answer-requested/12220

I don’t support old browsers in my (live, approved) extensions. My default approach is to put display: none; on the viewer html body, and wrap all of my client side javascript inside a

$(() => {
    $("body").show();
    // All client side code here
});

If the browser can’t handle the arrow function (looking at you IE) then nothing gets displayed or run. Probably not the best approach but easy and it works.

1 Like