
TypeScript 6.0 ships as the last JavaScript-based release
TypeScript 6.0 landed March 23 with strict mode on by default, ESM as default module, and ES5 deprecated. Microsoft has confirmed 6.0 is the final JavaScript-based release before the Go-native 7.0 compiler ships.
TypeScript 6.0 shipped on March 23. The release is positioned as a transition release — the last one written in JavaScript before TypeScript 7.0, the Go-native rewrite [TypeScript 6.0 release notes].
── What shipped ──
The breaking changes are deliberate.
strictis nowtrueby default. New projects start fully strict. Opt-out is explicit.moduledefaults toesnext. ESM is the assumed default; CommonJS becomes the legacy path.target: es5is deprecated. ES2015 is now the lowest supported target. Projects on ES5 must migrate or use an external compiler.#/-prefixed subpath imports (a recent Node.js capability) are supported undernodenextandbundlerresolution.--moduleResolution bundler+--module commonjsis now a valid combination.
A new --stableTypeOrdering flag lets you preview 7.0's type-ordering behaviour [Microsoft blog].
── Why it matters ──
Two things at once.
For migration: 6.0 is the bridge. The breaking changes — strict default, ES5 deprecation, ESM default — are the same direction 7.0 will continue. Upgrading to 6.0 now de-risks the 7.0 jump.
For the ecosystem: 7.0 is the bigger story. Microsoft is rebuilding the TypeScript compiler and language service in Go to take advantage of native code performance and shared-memory multi-threading. The promise is materially faster typecheck and IDE responsiveness on large codebases.
For developers, the pragmatic move is to migrate to 6.0 in the next quarter, fix the strict-default fallout, and treat the 7.0 jump as mechanical when it ships.
── Editor's take ──
The Go-rewrite is the most consequential decision in TypeScript's history. JavaScript-based tooling rewriting itself in Go (Esbuild, Bun's transpiler, Turbopack's parser) has been the dominant performance-engineering story of the last three years. Microsoft going the same way concedes the architectural argument. Node-on-Node tooling is yesterday's bet.
// newsletter_offline · provider_not_configured