 E6 native modules have stable support on Chrome 60 and Safari 10. Other browsers have it in development and behind the flag. So while a couple of browsers can handle the new import and export syntax, others cannot. The question is, what do you ship to the browser? Traditionally, you would have two choices. Use Babel to transpile the native module syntax to one of the older open source formats like CommonJS, AMD, or SystemJS, or bundle your modules into one file using roll-up. The former requires you to load an additional loader while the latter produces big monolithic JavaScript files that don't cache very well. Surprisingly, another solution is to do both. Include both the native and the transpiled version of your code. The transpiled version gets the no-module attribute on the script tag, while the module version must have type equals module. Browsers that support type equals module also ignore script tags with a no-module attribute, so in this case, only one of the two versions will be loaded. Browsers without module support won't load the type equals module script tag as they don't know what the type is, and these browsers also don't know what no-module means, which means they will load this script instead. As you can see, every browser will only load one version. This allows you to deliver better performance to newer browsers without breaking older ones. Hooray for modules! See you next time!