ESM (ES-modules)
Het native modulesysteem van JS, met de syntaxis import / export. Gestandaardiseerd in ES2015 (ES6). Browserondersteuning in 2018, stabiele ondersteuning in Node.js in 2020. Vervangt CommonJS (require) in moderne codebases.
Native in de browser: <script type="module" src="app.js">; de browser handelt imports af zonder bundler. Node.js: "type": "module" in package.json of de extensie .mjs. Tree-shaking-vriendelijk: statische analyse kan ongebruikte imports verwijderen. Ondersteunt top-level await. Interoperabiliteit met CommonJS is subtiel (verwarring rond default-exports). Migratiepijn: bestaande CJS-codebases (Express, veel middleware) zijn niet volledig ESM-compatibel. Bun en Deno zijn ESM-native runtimes. Trend in 2024: nieuwe pakketten publiceren zowel ESM als CJS, en "alleen ESM" is nu acceptabel voor bibliotheekauteurs.