TypeScript 6.0 Ships as Final JavaScript-Based Release, Clearing the Path for Go-Native 7.0
Microsoft released TypeScript 6.0 on March 23, the last version of the compiler written in JavaScript. The release introduces strict-by-default settings and deprecates legacy features ahead of TypeScript 7.0, a full Go rewrite that has shown up to 10x faster compilation in benchmarks.
Overview
Microsoft released TypeScript 6.0 on March 23, 2026, closing a chapter that began with the language’s debut in 2012. This is the final version of the TypeScript compiler written in JavaScript. No 6.1 release is planned; only patch-level fixes for critical security issues or severe regressions will follow. The entire TypeScript team is now focused on TypeScript 7.0, a ground-up rewrite of the compiler in Go that has already demonstrated compilation speedups of 8x to 13x across major open source codebases in preview builds.
The transition represents one of the most consequential architectural shifts in modern tooling. TypeScript is used by millions of developers and underpins the build pipelines of projects ranging from VS Code to Playwright. Rewriting its compiler in a systems language promises to eliminate the performance ceiling that JavaScript imposes on large-scale type checking, while maintaining identical type system behavior.
What Changed in TypeScript 6.0
TypeScript 6.0 is best understood as a transition release. Rather than adding major type system features, it changes nine compiler defaults simultaneously to align the language with modern JavaScript practices and reduce configuration debt before 7.0 arrives.
The most visible change is that strict mode is now enabled by default, activating eight type-checking rules that were previously opt-in. The default module system shifts from CommonJS to ESNext, the compilation target moves from ES3 to ES2025, and module resolution switches from the legacy node10 algorithm to bundler. The esModuleInterop flag, long recommended but not default, is now on by default as well.
These defaults mean that a fresh tsconfig.json in TypeScript 6.0 produces stricter, more modern output than a fully configured TypeScript 5.x project in many cases. For existing projects, the automated migration tool npx @andrewbranch/ts5to6 handles the mechanical adjustments, including baseUrl removal, rootDir configuration, and import assertion-to-attribute conversion.
TypeScript 6.0 also formally deprecates several legacy features that will be removed entirely in 7.0: ES5 output targets, AMD and UMD module formats, the baseUrl configuration option, and out-file bundling. Developers can suppress deprecation warnings using "ignoreDeprecations": "6.0" in their configuration, but that escape hatch will stop functioning when 7.0 arrives.
On the feature side, TypeScript 6.0 adds support for the ES2025 standard library (including Set operations, Promise.try, and Iterator helpers), the Temporal API for immutable date handling, and RegExp.escape() for protection against regex injection. The isolatedDeclarations feature, which enables parallel .d.ts file generation, has been stabilized.
TypeScript 7.0 and the Go Rewrite
The decision to rewrite TypeScript’s compiler in Go was announced by Anders Hejlsberg in March 2025 under the internal codename Project Corsa. Hejlsberg, who designed both TypeScript and C#, described the move as necessary to address performance bottlenecks that had grown unsustainable as codebases scaled.
The numbers from the December 2025 progress report are striking. Compiling VS Code’s 1.5 million lines of TypeScript drops from 77.8 seconds with the current compiler to 7.5 seconds with the native port, a 10.4x improvement. Playwright sees a 10.1x speedup, and TypeORM compiles 13.5x faster. Editor startup time for VS Code’s own codebase falls from 9.6 seconds to 1.2 seconds, with memory usage roughly halved.
As of December 2025, the Go-based compiler had reached 99.6 percent compatibility with the JavaScript implementation, with only 74 discrepancies remaining out of approximately 20,000 test cases. The language service — the component that powers editor features like code completions, go-to-definition, and find-all-references — is largely functional and available as a VS Code extension with daily updates.
TypeScript 7.0 will also introduce its own breaking changes beyond the deprecation removals inherited from 6.0. The --strict flag will be enabled by default (matching 6.0), --target will default to es2025, and the minimum target will be raised to es2015, removing ES5 output entirely. The --moduleResolution node10 option will be replaced by bundler and nodenext. The rewritten implementation will also drop support for several JSDoc tags, including @enum and @constructor, and will no longer treat Object as any in JavaScript files.
Why Go
The choice of Go over Rust, C++, or a self-hosted approach drew significant community discussion when announced. The TypeScript team cited Go’s garbage collector, its straightforward concurrency model, and the relative ease of porting TypeScript’s existing architecture as deciding factors. The compiler’s internal structure maps more naturally to Go’s interfaces and goroutines than to Rust’s ownership model, and the team judged that Go would allow them to ship a production-quality port faster than alternatives.
The Go rewrite also enables shared-memory parallelism in the language service, a feature that was architecturally impossible in the single-threaded JavaScript implementation. Multi-threaded parallel builds are already supported in the preview builds, and the team has rearchitected parts of the language service to take advantage of concurrency.
What Comes Next
Developers can test the native compiler today by installing the @typescript/native-preview npm package, which provides a tsgo command that mirrors tsc functionality. The preview is stable enough for --noEmit type-checking workflows, though some features are still being ported.
The practical recommendation for teams is to migrate to TypeScript 6.0 now, address all deprecation warnings, and begin testing against tsgo in CI pipelines. The "ignoreDeprecations": "6.0" flag provides a temporary bridge, but organizations that delay risk compounding the migration effort when 7.0 ships and that flag ceases to function.
No firm release date for TypeScript 7.0 has been announced, but the pace of the December progress report and the decision to end the 6.x line suggest that a stable release is likely within 2026.