The End of the npm Install Dance
ES Modules—import, export, and friends—are now firmly supported in browsers, assuming you've moved past Internet Explorer. That opens a question the front-end world has been circling for years: what parts of the traditional JavaScript build setup are actually still necessary?
The old model involved a lot of ceremony. You'd declare dependencies in package.json, run npm install, write import statements that weren't valid ESM, and then hand everything to a bundler that was expected to figure out the mess—mostly because you were told you needed it for performance and for running Babel.
That logic is increasingly under pressure. If browsers handle ESM natively, why pre-bundle locally? If global CDNs and HTTP/2 make fetching individual modules viable, is the performance argument still airtight? And with mounting evidence that we're over-compiling, down-transpiling modern code to legacy syntax may be doing more harm than good.
The New Generation of Tooling
A wave of tools is betting that you can skip the install and build phases entirely. Snowpack 3 just shipped, and its pitch is notable: write React with JSX normally, and you get a dev server with reloading—but no npm install, no node_modules directory, and no build step. Dependencies are fetched and served on demand as real ESM.
Similar thinking drives WMR, a tool from the Preact team that Chris and Una discussed recently on Toolsday. It's spiritually aligned with Snowpack and Skypack: use npm packages without installing them, write JSX, TypeScript, or CSS Modules, and get server and hot-reload conveniences on top.
The pattern across all of these is an embrace of ESM as the runtime format, rather than an intermediate step toward a bundle.
The npm Ecosystem Turns ESM-Only
Node.js is pushing the same direction. Node 10 reaches end-of-life at the end of April 2021, forcing maintainers to target Node 12—the first version with full ESM support. Sindre Sorhus, who maintains over 1,000 npm packages, is planning to migrate almost all of them to ESM-only in 2021. No dual-format outputs, no fallback to CommonJS. Just ESM.
"At the end of April 2021, Node.js 10 will be end-of-life, which means that package maintainers can target Node.js 12. This Node.js version has full support for JavaScript Modules."
That shift matters beyond the server. When the npm ecosystem ships true ESM, browser-based consumption becomes trivial—no bundler needed to interpret package internals. And for cases where you still need a bundle, because a dependency isn't ESM-ready, the next-generation bundlers are fast enough to make the process painless.



