know.2nth.ai Software Languages TypeScript 7.0
software · Languages · TypeScript 7.0

Ported to Go. And it broke your linter.

TypeScript 7.0 reached GA on 8 July 2026. It is the compiler and language service ported to Go — the type-checking semantics carry over from 6.0 by design; the implementation language is what changed. Microsoft reports full-build speedups typically between 8x and 12x. The catch is the same fact that made it fast: 7.0 ships no programmatic compiler API. If your app is React or Node, you can upgrade today. If your toolchain embeds the compiler — Vue, Svelte, Astro, Angular templates, typescript-eslint — you are waiting for 7.1. The speed and the breakage have one cause.

Go port GA 8 Jul 2026 8–12x builds No compiler API tsc · npm

The same compiler, rewritten in a different language.

TypeScript 7.0, GA on 8 July 2026, is the TypeScript compiler and language service ported from TypeScript to Go (the effort Microsoft codenamed Corsa, succeeding the JavaScript-era Strada). It ships as the standard typescript package on npm, with a tsc binary — the RC-era tsgo name is retired. Crucially, this is a port, not a rewrite: Microsoft deliberately preserved the structure and logic of the original so that type-checking results stay consistent. Your types check the same; the thing under them runs on Go.

The immediate predecessor, TypeScript 6.0 (GA 23 March 2026), was the final release on the JavaScript codebase. 7.0 inherits 6.0's deprecations wholesale, which is why several long-standing options are now hard errors (below). Read 7.0 as "6.0's semantics, on a new engine, with the old escape hatches removed."

The one fact that decides your upgrade

7.0 ships with no programmatic compiler API at all — not an unstable one, none. Microsoft says a new and different API will arrive in 7.1. If nothing in your stack calls the compiler as a library, that is a non-event. If something does — a linter, a template checker, a code transformer — it is the whole story. The @typescript/typescript6 compatibility package ships a tsc6 binary and re-exports the 6.0 API for side-by-side operation while you wait.

Parallelism, new defaults, and a faster watch.

The headline is speed, and it comes from parallelism the old single-threaded compiler couldn't do. But the defaults changed too, and two of them will break a working build before you notice the speed.

Parallelism. A fixed pool of type-checker workers — default 4, set with --checkers — divides the work deterministically (workers duplicate some shared work by design so the division stays reproducible). --builders parallelises project-reference builds and multiplies against it: --checkers 4 --builders 4 permits 16 concurrent checkers. --singleThreaded turns it all off. --checkers and --builders are marked experimental.

New defaults. 7.0 defaults strict: true, module: esnext, and — the two Microsoft flags as most surprising — rootDir: ./ and types: []. Those two are the ones that break a working build silently. Several old options are now hard errors: target: es5, downlevelIteration, moduleResolution: node/node10/classic, module: amd/umd/systemjs/none, and baseUrl; esModuleInterop and alwaysStrict can no longer be set to false. --watch was rebuilt on a Go port of @parcel/watcher, because polling was too expensive at node_modules scale and the C++ original would have added a toolchain dependency.

Microsoft's own benchmark figures (July 2026, machine unspecified) put the VS Code codebase at 125.7s → 10.6s (11.9x) at the default --checkers 4, and 7.51s (16.7x) at --checkers 8; memory moves between −6% and −26% across their five test codebases. The gap between the two checker settings is the more useful engineering fact than either number alone.

The side-by-side install a team will actually paste — run 7.0 as tsc, keep the 6.0 API available for tools that still need it:

// package.json — 7.0 as the default, 6.0 kept for API-dependent tooling
{
  "devDependencies": {
    "typescript": "^7.0.0",
    "@typescript/typescript6": "^6.0.0"   // provides the tsc6 binary + 6.0 API
  }
}
// tsc   -> 7.0 (fast, Go, no API)
// tsc6  -> 6.0 (the programmatic API surface, until 7.1 ships a new one)

The speed and the ecosystem cost are the same decision.

The port preserved type-checking and discarded the programmatic API. That is not an oversight — it is the direct consequence of moving to a language whose object model does not expose the same surface. Microsoft got the speed by giving up the thing the ecosystem was built on top of, and both follow from the one move.

What that means concretely depends on your stack. If it is React, Next.js, or plain Node services, app-code type-checking has no API dependency and the upgrade is available now. If it involves Vue, MDX, Astro, Svelte, or Angular template type-checking, the editor experience breaks — Microsoft says so in its own release notes, because Volar-class tools embed the compiler as a library. The sharpest case, and the one to check first because it needs no one's word, is typescript-eslint: issue #12518, filed on GA day, was closed as not planned, and the published peer range stops the install before anything runs — npm refuses it outright with an ERESOLVE. Microsoft made side-by-side operation a priority precisely for tools like this, and on day one npm still won't install it without an alias. Both are true; hold both.

One more trap for continuous integration. Because --checkers divides work across a variable number of workers, it can in rare cases surface order-dependent results — a flag that changes output as a function of worker count is a reproducibility concern, not just a tuning knob. Microsoft recommends pinning a fixed --checkers value across all build environments. Treat it as a lockfile-class setting, not a performance dial.

Upgrade now when

  • Your app is React, Next.js, or plain Node/TS services
  • Type-checking is your CI bottleneck and you feel the minutes
  • Nothing in the toolchain reads types programmatically
  • You can pin --checkers across every build environment

This is a runner-sizing decision, not a developer-experience one.

The speed-up is easy to read as a nice-to-have. For a South African team billing CI in dollars against a rand budget, it is a line item. A type-check step that drops from minutes to seconds changes runner sizing, not just wall-clock: teams provisioning 8- or 16-core runners specifically to parallelise type-checking at the project level are paying for concurrency the compiler now does internally. Moving to 7.0 on the app-code path can let you drop to a smaller, cheaper runner and still finish faster — the saving compounds every push, every branch, every developer, every month. Weigh that against the blocker: if the same pipeline runs typescript-eslint, the linter stage still needs 6.0, so the win is on the type-check stage first and the lint stage only after 7.1. Cost the upgrade per pipeline stage, not per repo.

Where TypeScript 7.0 links in the tree.

Primary sources.

Microsoft's own release notes and the Go repo — and one independent anchor (the typescript-eslint issue) you can check without taking the vendor's word. Last reviewed 2026-07-27; benchmark figures are Microsoft's own.