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 - 112: Supported
- 113: Supported
- 114 - 116: Supported
Edge
- 12 - 14: Not supported
- 15: Disabled by default
- 16 - 18: Supported
- 79 - 112: Supported
- 113: Supported
Safari
- 3.1 - 10: Not supported
- 10.1: Partial support
- 11 - 16.4: Supported
- 16.5: Supported
- 16.6 - TP: Supported
Firefox
- 2 - 53: Not supported
- 54 - 59: Disabled by default
- 60 - 112: Supported
- 113: Supported
- 114 - 115: Supported
Opera
- 9 - 46: Not supported
- 47: Disabled by default
- 48 - 98: Supported
- 99: Supported
IE
- 5.5 - 10: Not supported
- 11: Not supported
Chrome for Android
- 113: Supported
Safari on iOS
- 3.2 - 10.2: Not supported
- 10.3: Partial support
- 11 - 16.4: Supported
- 16.5: Supported
Samsung Internet
- 4 - 7.4: Not supported
- 8.2 - 20: Supported
- 21: Supported
Opera Mini
- all: Not supported
Opera Mobile
- 10 - 12.1: Not supported
- 73: Supported
UC Browser for Android
- 13.4: Supported
Android Browser
- 2.1 - 4.4.4: Not supported
- 113: Supported
Firefox for Android
- 113: Supported
QQ Browser
- 13.1: Supported
Baidu Browser
- 13.18: 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()