Microsoft 11962 Published by

TypeScript 6.0 has been released as a transitional step that aligns the compiler with upcoming performance improvements in the native Go rewrite scheduled for version 7.0. Significant configuration defaults have changed, requiring developers to explicitly set strict mode and list type packages since automatic discovery is now disabled. The release introduces support for modern standards including es2025 features and new Map methods while deprecating legacy module systems like AMD and ES5 targets. Users must update their tsconfig files immediately to handle breaking changes such as removed baseUrl functionality and the shift toward ESM defaults.



TypeScript 6.0 Released With Config Defaults That Break Existing tsconfig Files

Developers must update their configuration files immediately because the new defaults break existing setups. The release aligns the tool for the upcoming Go-based rewrite while enforcing stricter modern module standards that require explicit compiler options. This guide explains how to fix configuration without a rebuild nightmare so builds stay fast and errors disappear.

Updating Module Resolution and Path Defaults

The biggest friction point comes from changes in how TypeScript resolves modules and finds type definitions. The types field now defaults to an empty array which prevents the accidental loading of hundreds of unnecessary declaration files at build time. This change improves performance by twenty or fifty percent in large monorepos but leaves many users with errors regarding missing identifiers like process or fs. You need to add an entry for node to your tsconfig.json explicitly if you want global declarations back. The baseUrl option is deprecated and no longer serves as a lookup root for module resolution so developers must update path prefixes directly inside the paths configuration object. Setting the correct rootDir becomes mandatory because it now defaults to the directory containing the configuration file rather than inferring a common source directory automatically. Projects that rely on external bundlers should migrate away from outFile since this option was removed in favor of tools like Rollup or Webpack which handle concatenation better.

Managing Legacy Targets and Deprecations

Several compiler options have been deprecated to streamline the environment for the upcoming Go-based port in version 7.0. The target: es5 flag is no longer supported because all modern browsers support ECMAScript 2015 as a baseline requirement. Users relying on downlevelIteration must switch their target to es2015 to avoid errors since that flag has effectively become useless for future versions. Legacy module systems like AMD and UMD are gone from the supported syntax list so code using those formats needs to move toward ECMAScript modules or use an external compiler. The strict mode is enabled by default which changes the behavior of reserved words and async functions compared to older defaults. Teams need to decide if they want strict checking for every project or revert this setting to false in their configuration file.

The transition period acts as a bridge between the current JavaScript codebase and the new native architecture planned for version 7.0. Most changes focus on aligning behavior for parallel type checking which introduces non-deterministic output without explicit ordering flags. You can use the stableTypeOrdering flag to ensure declaration files remain consistent but expect slower performance during the build process. Using an explicit type argument when passing complex objects or function callbacks resolves inference issues that arise from internal type ID sorting. Adopting these changes early ensures compatibility when the new codebase takes full control over the compiler logic in later releases.

For more information, check out the release announcement below:

Announcing TypeScript 6.0 - TypeScript

TypeScript 6.0 is now available! TypeScript 6 is a stepping-stone release, aligning with the upcoming native-speed 7.0 release.

Announcing TypeScript 6.0 - TypeScript