Microsoft 12004 Published by

Microsoft has officially released TypeScript 7.0, replacing the JavaScript-based compiler with a complete rewrite in Go. The new architecture unlocks true multi-threaded compilation and delivers roughly 10x faster build times across typical workloads. As part of this overhaul, older module resolutions and deprecated flags are gone, while defaults like strict and esnext are now hard requirements for all projects. Teams can run old and new versions side-by-side using the @typescript/typescript6 compatibility package while waiting for stable programmatic APIs in TypeScript 7.1.



Microsoft Rewrites TypeScript Compiler in Go, Delivers 10x Speed Boost with v7.0

The TypeScript team at Microsoft has officially released TypeScript 7.0. The new version is built entirely from scratch on a native Go codebase. It delivers performance improvements that dwarf previous releases, with the compiler running approximately 10x faster than version 6.0 across typical workloads.

The announcement came from Daniel Rosenwasser, Principal Product Manager on the TypeScript team, via the official blog. The release follows over a year of development under the codename "Project Corsa" and extensive pre-release testing with major technology companies including Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel, and VoidZero.

This is not an incremental update. It represents a complete rewrite of the compiler and language service from TypeScript into Go. The port was done methodically, with the Go codebase mirroring the existing implementation structurally rather than being rewritten from scratch. This means type-checking logic remains identical to TypeScript 6.0. Developers keep the exact semantics they rely on daily.

The shift to native Go unlocks two major advantages, though you lose the old JavaScript-based tooling for now. First, native execution speed means you no longer run inside a Node.js runtime for compilation. Second, shared-memory parallelism allows true multi-threaded compilation and type-checking across CPU cores.

Parallel Processing and New Defaults

The compiler now spawns a configurable number of type-checker worker threads. The default is four. You can adjust this via --checkers. Each worker maintains its own view of the world but divides files identically to ensure deterministic results. On large monorepos with many CPU cores, increasing this value can yield further speedups at the cost of memory usage.

Project reference building also gets a speed boost. TypeScript 7.0 can build multiple projects concurrently via a new --builders flag. This is particularly beneficial for monorepo setups where several packages depend on each other through project references. Keep in mind that --checkers and --builders multiply together. Teams should find the right balance for their hardware. Running --checkers 4 --builders 4 allows up to 16 concurrent type-checker instances.

The file-watching infrastructure has been entirely rebuilt using a Go port of Parcel's highly-regarded @parcel/watcher. The standard Go library lacks built-in cross-platform file watching. Pure-polling solutions proved too expensive at scale. The resulting watcher is self-contained, idiomatic Go code that delivers significant resource improvements across all platforms.

TypeScript 7.0 adopts TypeScript 6.0's newer defaults as hard requirements. Projects that worked under TS 5.x may need adjustments. The strict flag now defaults to true. module defaults to esnext. target defaults to the current stable ECMAScript. noUncheckedSideEffectImports defaults to true. libReplacement defaults to false. stableTypeOrdering defaults to true and cannot be turned off. rootDir defaults to ./. types defaults to an empty array.

Several deprecated features have been removed entirely. target: es5 is gone. downlevelIteration is gone. moduleResolution: node/node10/classic has been replaced by nodenext and bundler. module: amd, umd, systemjs, none is replaced by esnext or preserve with bundlers. baseUrl is removed. You need relative paths via paths instead. esModuleInterop and allowSyntheticDefaultImports set to false are no longer allowed. alwaysStrict: false cannot be disabled. The asserts keyword on imports must now use with. /// <reference no-default-lib /> directives are ignored under skipDefaultLibCheck.

Template Literal Inference and JavaScript Analysis

Template literal types now preserve Unicode code points. This is a notable breaking change. String patterns follow UTF-8 code point semantics rather than JavaScript's internal UTF-16 encoding.

If you use template literal inference on strings like ":grinning:abc", the result will now be [":grinning:", "abc"]. Previously it would be ["\ud83d", "\ude00abc"]. This aligns template literal inference with how developers intuitively think about strings. Projects that intentionally modeled UTF-16 code units for string length utilities may need updates.

JavaScript analysis has been reworked. Values cannot be used where types are expected. You need to use typeof someValue instead. @enum is no longer specially recognized. Standalone ? is not usable as a type. You need to use any. @class no longer makes a function a constructor. Postfix ! is no longer supported for non-null assertion. Closure-style function syntax is removed in favor of TypeScript shorthands.

Editor Tooling and Migration

The Go rewrite delivers performance gains directly to editor experiences. VS Code users can install the TypeScript Native Preview extension. It provides tight TS 7 support. Internal metrics show a 20x reduction in failing language server commands compared to TS 6.0. Visual Studio automatically enables TypeScript 7 based on workspace configuration. Any editor supporting LSP should work thanks to the new Language Server Protocol foundation.

The shipping timeline for TypeScript 7.0 has been one of the biggest questions about the Go rewrite since Project Corsa was announced. Microsoft let developers spend weeks with the beta build in late 2025, and the consensus was positive. At the time of that hands-on, the team said the stable release would arrive in early 2026. But in February, the compiler team announced that ongoing memory and storage crunch had forced it to revisit its shipping plans. The long wait finally ended on July 8.

Microsoft has published @typescript/typescript6, a compatibility package providing an executable named tsc6. This avoids conflicts with TS 7's tsc. It also re-exports the TypeScript 6.0 API for tooling that depends on the older programmatic interface.

Teams can run both versions side-by-side using npm aliases. The configuration is straightforward. You can pin to the latest version while testing the new one.

The announcement has been met with strong enthusiasm from the developer community. Developers have highlighted the dramatic build time improvements in large monorepos. Some are reporting their CI pipelines dropping from minutes to seconds of type-checking overhead. The Go rewrite also resonates with developers who have long awaited a faster toolchain that doesn't require Node.js just for compilation.

As one community member noted: "Together with oxlint and oxfmt, this typescript rewrite will speed up development greatly."

Not cheap. The shift to Go does mean you lose the old JavaScript-based tooling for now. However, at the same time, the performance gains are hard to ignore. The programmatic API will remain unstable for several months. Work on TypeScript 7.1 is already underway. Nightly builds are available via @typescript/native-preview on npm. They will eventually be published under the main typescript package. The team has indicated that a stable programmatic API should arrive with TypeScript 7.1.

Install TypeScript 7.0 today with npm install -D typescript@latest. Run npx tsc --version to confirm you are on version 7.0.x. VS Code users wanting the new editing experience can install the TypeScript Native Preview extension from the marketplace.

Check out the official TypeScript blog for the full announcement:

Announcing TypeScript 7.0

Today we are proud to announce the availability of TypeScript 7, a 10x faster native port of TypeScript!

Announcing TypeScript 7.0 - TypeScript