DevBolt
Processed in your browser. Your data never leaves your device.

TypeScript 6.0 Breaking Changes — Complete Reference

TypeScript 6.0 is the last JavaScript-based major release before the TS 7.0 Go rewrite. It removes legacy module systems, changes compiler defaults, and deprecates options that will be hard-removed in 7.0. Here is every breaking change you need to know.

TypeScript 6.0 Migration Checker

Paste your tsconfig.json and instantly see every breaking change, deprecated option, and default shift in TypeScript 6.0. Get a readiness grade, step-by-step fixes, and a corrected config. Supports JSONC (comments & trailing commas).

Samples:
Ctrl+Enter to analyze

What changed in TypeScript 6.0?

TypeScript 6.0 is the last JavaScript-based major release before the TypeScript 7.0 Go rewrite. It includes significant breaking changes to compiler defaults, removes legacy module systems, and deprecates options that will be hard-removed in 7.0.

Removed

  • target ES3/ES5
  • outFile option
  • module AMD/UMD/System
  • moduleResolution classic
  • esModuleInterop: false

Deprecated

  • moduleResolution: node
  • baseUrl as resolution root
  • downlevelIteration
  • alwaysStrict: false
  • module: none

New Defaults

  • strict: true
  • target: es2025
  • module: esnext
  • moduleResolution: bundler
  • types: [] (empty)

Build or update your config with the tsconfig.json Visual Builder. All analysis runs client-side — your config never leaves your device.

Removed compiler options

TypeScript 6.0 removes several long-standing options. "target": "es3" and "target": "es5" are no longer valid — the lowest supported target is now "es2015". The "outFile" option is completely removed; use a bundler like Webpack, Rollup, or esbuild instead. The module systems "amd", "umd", and "systemjs" are removed as well. If your project uses any of these, you must update before upgrading to TS 6.0.

Changed default values

Nine compiler option defaults have changed. "strict" now defaults to true (was false), "target" defaults to "es2025" (was "es5"), "module" defaults to "esnext" (was "commonjs"), "moduleResolution" defaults to "bundler" (was "node10"), "rootDir" defaults to the tsconfig.json directory (was inferred), and "types" defaults to an empty array (was all @types). Projects without explicit settings will behave differently after upgrading.

The escape hatch

All deprecations in TS 6.0 can be temporarily silenced by adding "ignoreDeprecations": "6.0" to your tsconfig.json compilerOptions. This buys time for migration but will NOT work in TypeScript 7.0, so plan to address every issue before the next major release.

Frequently Asked Questions

What is the biggest breaking change in TypeScript 6.0?

The biggest impact for most projects is the "strict": true default. Projects that never explicitly set strict will suddenly see many new type errors. The "types": [] default is also impactful — global type declarations like Buffer, process, and Jest matchers will be missing unless explicitly listed.

Can I still target ES5 in TypeScript 6.0?

No. TypeScript 6.0 removes ES3 and ES5 targets. The lowest supported target is "es2015". For ES5 output, use an external tool like esbuild, SWC, or Babel as a post-compilation step.

Is there a migration tool for TypeScript 6.0?

Yes. The ts5to6 CLI tool handles baseUrl removal and rootDir inference fixes automatically. DevBolt's TypeScript 6.0 Migration Checker analyzes your tsconfig.json and shows every issue with step-by-step fixes.

Related Inspect Tools