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

tsconfig.json Migration Guide — TypeScript 5.x to 6.0

This guide walks through every tsconfig.json change needed to upgrade from TypeScript 5.x to 6.0. Follow the priority order to handle the most impactful changes first.

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.

Priority 1: Add explicit types

The most commonly missed change is the "types" default shifting to an empty array. Add "types": ["node"] (and other needed packages like "jest", "vitest", etc.) to your compilerOptions. Without this, global type declarations like Buffer, process, and test matchers will be missing. To restore old behavior, use "types": ["*"].

Priority 2: Set rootDir explicitly

Previously, TypeScript inferred rootDir from input files. Now it defaults to the tsconfig.json directory. Projects with a "src/" structure will see output at dist/src/index.js instead of dist/index.js unless you add "rootDir": "./src" (or your source root) explicitly.

Priority 3: Handle strict mode

If your project wasn't using strict mode, you'll see many new type errors after upgrading. Either add "strict": false to preserve old behavior, or fix the type errors to adopt strict mode. The strict flag enables strictNullChecks, noImplicitAny, strictFunctionTypes, and several other checks.

Priority 4: Update module and target

Set explicit "module" and "target" values if you need specific output. "module" now defaults to "esnext" (was "commonjs") — add "module": "commonjs" if you need require() output. "target" now defaults to "es2025" — add an explicit target if you support older runtimes.

Frequently Asked Questions

Do I need to change my tsconfig.json for TypeScript 6.0?

Almost certainly yes. Even if you have explicit settings for most options, the types default change and rootDir inference removal affect nearly every project. Use the DevBolt Migration Checker to see exactly what needs updating.

What does "ignoreDeprecations": "6.0" do?

It silences all deprecation errors in TypeScript 6.0, letting you upgrade immediately while planning fixes. It's a temporary escape hatch — it will NOT work in TypeScript 7.0.

How do I fix baseUrl deprecation?

Remove "baseUrl" and inline the base path into your "paths" entries. For example, change "baseUrl": "./src" with "@app/*": ["app/*"] to just "@app/*": ["./src/app/*"]. The ts5to6 CLI tool automates this.

Related Inspect Tools