TypeScript 6 shipped with stricter inference, a new type-level module system, and several long-standing behaviours finally corrected. Most of it is additive — but three changes will break existing codebases silently. Here's what to audit before you upgrade.
What Shipped in TypeScript 6
The TypeScript team landed over 60 fixes and a handful of new features in 6.0, with the stated goal of making the type system more predictable — even where that means stricter errors on previously accepted code.
- Released: March 2025
- Node.js minimum: 18.x
- tsconfig target default raised to ES2022
Three Breaking Changes to Audit
These don't throw errors at compile time in all cases — which makes them the most dangerous. They change runtime behaviour or silent type widening that your tests may not catch.
- Narrowing of
in operatornow respects optional properties strictly - Template literal types no longer widen to
stringin certain inference contexts - Decorator metadata is now opt-in — existing decorator libraries may break
Run tsc --noEmit after upgrading before touching anything else. Treat every new error as a bug that was already in your code.
New Features Worth Using
Beyond the fixes, TypeScript 6 ships several quality-of-life additions that reduce boilerplate and close gaps that developers have worked around for years.
- Named tuple element inference: labels preserved through spreads
- satisfies operator improvement: now works in type positions
- Isolated declarations mode: faster incremental builds in monorepos
Upgrade Checklist
- Bump
typescriptto^6.0.0and run noEmit check - Audit all packages that use decorator metadata (NestJS, TypeORM, inversify)
- Update tsconfig target and lib if you support older runtimes
