TypeScript 7.0: the native Go compiler arrives with builds up to 12x faster

On July 8, 2026, the TypeScript team published the TypeScript 7.0 announcement, the first stable release of the native compiler port, written in Go. After a long time in preview, the promise of a much faster tsc became the default package on npm. And, like every big rewrite, it comes with huge gains and a few rough edges.

The numbers

According to Microsoft, full builds are typically 8 to 12 times faster. The announcement’s table, with the default of 4 checkers, shows:

Project TS 6 TS 7 Speedup
vscode 125.7 s 10.6 s 11.9x
sentry 139.8 s 15.7 s 8.9x
bluesky 24.3 s 2.8 s 8.7x
playwright 12.8 s 1.47 s 8.7x
tldraw 11.2 s 1.46 s 7.7x

With --checkers 8, the vscode build dropped to 7.51 s. Memory use also went down, between 6% and 26% depending on the project. In the editor, the time to first error in a file from the VS Code codebase went from about 17.5 seconds to under 1.3 seconds. That’s the number that, for me, changes daily work the most: opening a large project and seeing errors almost immediately.

Installation and parallelism

Installation stays the same:

npm install -D typescript
npx tsc

7.0 brings new flags to control parallelism. --checkers sets how many type-check workers run, with a default of 4. --builders sets how many project references build in parallel under --build, and the effect multiplies with --checkers (4 × 4 can mean up to 16 type-checkers at once). --singleThreaded turns parallelism off, including parsing and emit. --checkers and --builders are still experimental. Watch mode was also rebuilt, on a Go port of Parcel’s file watcher.

New defaults and what breaks

This is the part that needs attention during migration. The defaults changed: strict is now true, module is esnext, target is the latest stable ECMAScript version before esnext, noUncheckedSideEffectImports is true, rootDir becomes ./ and types becomes an empty list. That means, for example, that global types such as Node’s or Jest’s have to be listed explicitly:

{
  "compilerOptions": {
    "rootDir": "./src",
    "types": ["node", "jest"]
  }
}

Several old options are now errors: target es5, downlevelIteration, moduleResolution node/node10 or classic, module amd, umd, systemjs or none, baseUrl, esModuleInterop or allowSyntheticDefaultImports set to false, alwaysStrict set to false, and the asserts keyword on imports (use with). Anyone still dragging along a 2018 config will have some work to do.

No programmatic API, for now

The most important caveat: TypeScript 7.0 ships without a programmatic API. The team says it expects to ship a new, different API in 7.1. Meanwhile, the @typescript/typescript6 package provides a tsc6 executable and re-exports the 6.0 API, so tools like typescript-eslint keep working side by side with 7.0.

The direct consequence is that Vue, MDX, Astro, Svelte and others need to stay on TypeScript 6.0 for now, because tools that embed TypeScript, such as Volar, depend on a stable programmatic API. Angular can use 7.0’s tsc for project-wide CLI checks and 6.0 for the editor. The team says it plans to support these workflows.

This affects me directly: this blog is built with Astro and MDX, and that’s why it stays on TypeScript 6 until the ecosystem catches up.

My take

TypeScript 7.0 delivers what it promised on speed, and the numbers come from real projects, not a synthetic benchmark. For backends, libraries and monorepos in plain TypeScript, I’d migrate soon, starting with the new tsconfig defaults, which are the biggest source of friction.

For anyone depending on frameworks with their own templates, the honest answer is to wait. The lack of an API in 7.0 is a conscious decision not to freeze the wrong interface, and it makes sense, but it means a good part of the front-end ecosystem will live on two versions for a while. The version to watch now is 7.1.

Sources