← Back to all briefs
Tooling50s read

Babel 8.0 Ships ESM-Only, Drops ES5 Default, Adds Built-In TypeScript Types

Babel 8 modernizes the most-installed npm package: ESM-only distribution, no more ES5 transpilation by default, and first-class TypeScript types baked into every package.

Babel 8.0 shipped June 16, marking the first major version bump in over three years. The changes are about modernization, not new features: every package ships as ESM, @babel/preset-env no longer targets ES5 by default, and built-in .d.ts types eliminate the need for @types/babel__* packages.

The ESM-only shift is the biggest breaking change. Babel 8 relies on Node.js require(esm) support, available in all current LTS releases. If your toolchain still uses require() to load Babel, you will need to switch to dynamic import() or ensure your environment supports CJS-ESM interop. The team shipped six release candidates between January and May to let the ecosystem adapt before the stable cut.

The default compilation target now follows Browserslist, roughly equivalent to ES2023 as of mid-2026 and moving forward. If your app still needs ES5, you set the target explicitly. The reasoning is pragmatic: ES5-only users are a vanishing minority, and transpiling modern syntax to ES5 bloats bundles with polyfills that real browsers no longer need.

TypeScript types are now included in every Babel package. No more installing @types/babel__core, @types/babel__generator, and friends as separate dev dependencies. The types are generated from Babel's own source and kept in sync with each release.

Migration from Babel 7 should be smoother than the 5-to-6 or 6-to-7 transitions. Most breaking behaviors were available behind opt-in flags in Babel 7.x. Node.js 24 or 26 is required. If you are on an older runtime, stick with Babel 7.29.x, the final 7.x minor.