These days you should be shipping two sets of bundles with your webapp.

These days you should be shipping two sets of bundles with your webapp. One which targets IE11 and the other that targets JavaScript.

http://main.mjs

http://fallback.js

Browsers that understand type=”module” ignore scripts with a nomodule attribute. This means you can serve a module-based payload to module-supporting browsers while providing a fallback to other browsers. The ability to make this distinction is amazing, if only for performance! Think about it: only modern browsers support modules. If a browser understands your module code, it also supports features that were around before modules, such as arrow functions or async-await. You don’t have to transpile those features in your module bundle anymore! You can serve smaller and largely untranspiled module-based payloads to modern browsers. Only legacy browsers get the nomodule payload.

The web always wins in the long run. On mobile (ahem, Apple) it’s going to take a little longer.

The web always wins in the long run. On mobile (ahem, Apple) it’s going to take a little longer.

Quoting from the article:

*I built a PWA and published it in 3 app stores. Here’s what I learned.*

Summary: Turning a web app into a Progressive Web App (PWA) and submitting it to 3 app stores requires about a month of work, a few hundred dollars, and lots of red tape.