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 - 128: Supported
- ✅ 129: Supported
- ✅ 130 - 132: Supported
Edge
- ❌ 12 - 14: Not supported
- ❌ 15: Disabled by default
- ✅ 16 - 18: Supported
- ✅ 79 - 128: Supported
- ✅ 129: Supported
Safari
- ❌ 3.1 - 10: Not supported
- ◐ 10.1: Partial support
- ✅ 11 - 17.6: Supported
- ✅ 18.0: Supported
- ✅ 18.1 - TP: Supported
Firefox
- ❌ 2 - 53: Not supported
- ❌ 54 - 59: Disabled by default
- ✅ 60 - 129: Supported
- ✅ 130: Supported
- ✅ 131 - 133: 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
- ✅ 129: Supported
Safari on iOS
- ❌ 3.2 - 10.2: Not supported
- ◐ 10.3: Partial support
- ✅ 11 - 17.6: Supported
- ✅ 18.0: Supported
- ✅ 18.1: Supported
Samsung Internet
- ❌ 4 - 7.4: Not supported
- ✅ 8.2 - 24: Supported
- ✅ 25: 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
- ✅ 129: Supported
Firefox for Android
- ✅ 130: 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()