TypeScript 7 keeps npm but replaces the compiler core
TypeScript still solves the same problem: JavaScript is flexible at runtime, but large teams need names, shapes, and relationships checked before code ships. Developers add types, the compiler reports mismatches, and emitted output remains standards-based JavaScript. Editors use the same analysis for completion, navigation, rename, and diagnostics. The language works with existing JavaScript incrementally rather than demanding a clean rewrite.
Version 7 changes the implementation beneath that contract. Microsoft ported the compiler and language server to Go, publishes the native executable through the familiar typescript npm package, and uses the Language Server Protocol for editors. The release announcement says full builds commonly improve by 8x to 12x in Microsoft's comparisons. Those are vendor measurements, not numbers from our sandbox, and teams should measure their own projects.
The repository now reflects that move. GitHub identifies Go as its primary language, and the contributor guide names Go 1.26 plus Node.js 24 as prerequisites. A Go workspace holds compiler modules under tsc/ and tools/, while Node still orchestrates builds, packages, generated assets, and workspace tasks. Anyone remembering TypeScript as a self-hosted compiler should reset their source-development assumptions.
The missing API is the main 7.0 compatibility boundary
TypeScript 7.0 does not expose a stable programmatic compiler API. Microsoft provides @typescript/typescript6, including a tsc6 executable and the 6.0 API, so projects can use the native compiler for ordinary checks while tools keep importing the older API. npm aliases help when a peer dependency insists that the package be named typescript. This is a workable bridge, but it is extra dependency and configuration work.
The gap matters most to tools that embed TypeScript. The release post says Vue, MDX, Astro, Svelte, and specialized Angular template checking will likely remain on 6.0 until a new API is available. It says the team expects 7.1 to ship a new and different API, which is an expectation rather than a guarantee we should turn into a delivery promise. Framework teams should verify their exact plugin path before upgrading.
Ordinary application builds have a cleaner story. TypeScript 7 aims for compatible type checking and command-line behavior with 6.0 when the documented settings are used, though it also adopts 6.0 defaults and rejects constructs deprecated there. Parallel parsing, checking, emitting, and project builds can use several cores. Flags control checker and builder counts, while --singleThreaded supports constrained systems and debugging.
What happened when we ran it
Our run installed 445 npm packages in 31 seconds and left 447 MB on disk. npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severities. The checkout itself was 211.8 MB, containing 65,848 files and about 2,560,730 lines of source. This is a large compiler and language-service monorepo, despite the small user-facing install command.
The build failed with exit code 1 after 7 seconds. Hereby started the library copy and tsc:build, then attempted go build for the native compiler. The process returned spawn go ENOENT, which plainly means no go executable was available. The failure happened in 15 milliseconds inside that task, before compiler code could build.
Tests failed with exit code 1 after 6 seconds for the same missing executable. Hereby invoked go test ./... --timeout=45m; process creation returned spawn go ENOENT after 8 milliseconds. The log shows no Go test case starting and no failed assertion. Our Node 22 image was enough for npm ci, but it did not meet the documented Go 1.26 and Node 24 contributor prerequisites.
The type system helps at compile time, not at your API edge
TypeScript types disappear from emitted JavaScript. A typed request body can still contain bad runtime data, and an as assertion can silence useful checking without changing the value. Production applications still need schema validation for HTTP payloads, environment variables, database rows, and files. TypeScript is strongest when it catches mistakes between trusted parts of a codebase, not when it is treated as a runtime security layer.
Its structural type system fits JavaScript patterns well, and declaration files let plain JavaScript packages describe their public surface. The cost is that advanced conditional, mapped, and recursive types can become programs of their own. When a team spends more time deciphering helper types than reading application logic, simpler annotations are usually the better design even if the compiler could express more.
SWC is a relevant alternative when fast syntax transformation is enough, but it does not replace full TypeScript checking. Deno is compelling when a team can choose an integrated runtime and toolchain. Flow remains an option for existing Flow shops. For mainstream JavaScript libraries and applications, TypeScript's package and editor reach makes it the baseline comparison rather than a niche upgrade.
Same-day issue work shows an active migration
GitHub showed 110,686 stars, 5,191 open issues and PRs, and a push on 2026-08-25. Release v7.0.2 arrived on 2026-08-20. Current reports cover native-preview editor behavior, LSP failures, auto-imports, API requests, and compatibility regressions. That queue includes suggestions and pull requests, so it is not a count of confirmed bugs. It does expose the breadth of the migration still being tuned.
The contribution policy is unusually explicit about AI. A human may use Claude Code, Codex, Cursor, or another agent for a selected change if they understand it, disclose assistance, and handle review. Bulk agent-driven submissions and automated issue comments are forbidden. That rule is grounded in duplicate patches already consuming maintainer time, and contributors should treat it as an access boundary rather than optional etiquette.
TypeScript 7 is ready to evaluate as the main compiler for normal JavaScript and TypeScript builds. The 6.0 compatibility package remains necessary for compiler-API consumers and several embedded-language tools. Users get the native executable through one npm dependency; contributors need the full Go and Node toolchain that our sandbox lacked.

