JavaScript modules via script tag
- LSLoading JavaScript module scripts (aka ES6 modules) using <script type="module">
Includes support for the nomodule
attribute.
Chrome
- ❌ 4 - 59: Not supported
- ❌ 60: Disabled by default
- ✅ 61 - 130: Supported
- ✅ 131: Supported
- ✅ 132 - 134: Supported
Edge
- ❌ 12 - 14: Not supported
- ❌ 15: Disabled by default
- ✅ 16 - 18: Supported
- ✅ 79 - 130: Supported
- ✅ 131: Supported
Safari
- ❌ 3.1 - 10: Not supported
- ◐ 10.1: Partial support
- ✅ 11 - 18.0: Supported
- ✅ 18.1: Supported
- ✅ 18.2 - TP: Supported
Firefox
- ❌ 2 - 53: Not supported
- ❌ 54 - 59: Disabled by default
- ✅ 60 - 131: Supported
- ✅ 132: Supported
- ✅ 133 - 135: Supported
Opera
- ❌ 9 - 46: Not supported
- ❌ 47: Disabled by default
- ✅ 48 - 113: Supported
- ✅ 114: Supported
IE
- ❌ 5.5 - 10: Not supported
- ❌ 11: Not supported
Chrome for Android
- ✅ 131: Supported
Safari on iOS
- ❌ 3.2 - 10.2: Not supported
- ◐ 10.3: Partial support
- ✅ 11 - 18.0: Supported
- ✅ 18.1: Supported
- ✅ 18.2: Supported
Samsung Internet
- ❌ 4 - 7.4: Not supported
- ✅ 8.2 - 25: Supported
- ✅ 26: Supported
Opera Mini
- ❌ all: Not supported
Opera Mobile
- ❌ 10 - 12.1: Not supported
- ✅ 80: Supported
UC Browser for Android
- ✅ 15.5: Supported
Android Browser
- ❌ 2.1 - 4.4.4: Not supported
- ✅ 131: Supported
Firefox for Android
- ✅ 132: Supported
QQ Browser
- ✅ 14.9: Supported
Baidu Browser
- ✅ 13.52: Supported
KaiOS Browser
- ❌ 2.5: Not supported
- ✅ 3: Supported
- Resources:
- Blog post: Native ECMAScript modules - the first overview
- MS Edge blog post
- Firefox support bug
- Will it double-fetch? Browser behavior with `module` / `nomodule` scripts
- Mozilla hacks article
- Blog post on using nomodule
- Specification for nomodule attribute
- Intro to ES6 modules
- Counterpart ECMAScript specification for import/export syntax
- Sub-features:
- JavaScript modules: dynamic import()