The biggest TypeScript release in the language's history — a complete native compiler in Go delivering ~10x faster builds, shared-memory parallelism, and new configuration controls. What it means for your projects and how to migrate.
On June 18, 2026, Daniel Rosenwasser (Microsoft) announced the TypeScript 7.0 Release Candidate — a milestone that has been years in the making. For the first time in TypeScript's history, the compiler is not written in TypeScript. Instead, Microsoft has methodically ported the entire codebase to Go, codenamed "Project Corsa".
This is not a rewrite from scratch — the type-checking logic is structurally identical to TypeScript 6.0. Every inference rule, every variance check, every control flow analysis was carefully ported line by line. The result is a compiler that produces identical type-checking results but runs approximately 10 times faster — and in some cases significantly more on large codebases.
The speed improvement comes from two architectural changes:
Getting started is the same as any npm package:
npm install -D typescript@rc
Verify the installation:
> npx tsc --version
Version 7.0.1-rc
For editor support, install the TypeScript Native Preview extension for VS Code. It uses the same Go compiler foundation, so you get the same performance improvements in your editor as on the command line. The extension is built on the Language Server Protocol (LSP), making it compatible with most modern editors and tools like Copilot CLI.
TypeScript 7.0 RC can coexist with TypeScript 6.0 on the same system. Install it as a separate package:
npm install -D typescript@rc
# Your tsconfig.json can reference [email protected] globally
# while specific projects use the RC
The VS Code extension runs independently from the built-in TypeScript version in your editor. You can configure which projects use TS 7.0 and which stay on 6.0 through your workspace settings.
The most impactful architectural change in TypeScript 7.0 is true multi-threaded parallelism. The old JavaScript compiler was fundamentally single-threaded — even with async I/O, the CPU-intensive work (parsing, type-checking, emitting) ran sequentially. The Go compiler can distribute this work across threads.
--checkers)
TypeScript 7.0 introduces a pool of parallel type-checker workers. The --checkers flag controls how many
workers are spawned (default: 4). These workers operate independently on different source files and
their results are merged at the end — producing identical output regardless of execution order.
# Use more checkers for large codebases (more memory, faster)
npx tsc --checkers 8
# Use fewer for small projects (less overhead)
npx tsc --checkers 2
Increasing the checker count significantly speeds up large codebases at the cost of higher memory usage and CPU. For smaller projects, the default 4 may be more than necessary — reducing to 2 can actually be faster by avoiding worker management overhead.
--buildJobs)
For monorepo setups using TypeScript project references, the new --buildJobs flag enables parallel
building across projects. The build system respects the project dependency graph — a project cannot start building
before its dependencies are complete — but independent projects are built concurrently.
# Enable parallel project builds in monorepos
npx tsc --build --buildJobs 4
--singleThreaded)
For debugging, profiling, or resource-constrained environments (CI runners with limited cores), the
--singleThreaded flag disables all parallelism:
# Force single-threaded execution
npx tsc --singleThreaded
--watch Mode
The incremental compilation system has been rebuilt on the new Go foundation. The --watch mode now uses:
fs.watch on some platforms)
For VS Code users, the extension handles tsconfig.json paths more reliably and reduces unnecessary toolchain
dependencies in the editor process.
TypeScript 7.0 modernizes several long-standing defaults that have been best practices for years:
| Option | TS 6.x Default | TS 7.0 Default |
|---|---|---|
strict |
false |
true |
module |
commonjs |
esnext |
target |
es5 |
Latest stable ES |
noUnusedSideEffectImports |
false |
true |
types |
["node", ...] |
[] |
stableLibOrdering |
false |
true (locked) |
The most impactful change is strict: true as default. For existing projects migrating from 6.x, you may
need to explicitly set "strict": false in tsconfig.json if you have a large codebase not yet fully typed.
New projects should embrace these defaults.
Several legacy options have been removed to modernize the language and simplify the compiler:
es3 — no longer supported. JavaScript engines that can't run ES5+ effectively don't run TypeScript's output eitheramd, umd, system — legacy module formats. Use ESM or bundler insteadnode16, node22 resolution modes removed — use nodeNext or bundlerdownlevelIteration — removed. Modern targets natively support iterablesjsx: preserve and jsx: react — replaced by jsx: react-jsx and jsx: react-jsxdev@enum JSDoc tag — no longer recognized. Use TypeScript's enum keywordasserts keyword banned in namespace bodies
Import attributes now require the type keyword explicitly:
// Before (TS 6.x — deprecated but accepted)
import data from './data.json' with { type: 'json' };
// After (TS 7.0 — required)
import data from './data.json' with { type: 'json' };
// This also requires the type keyword now:
import { type } from './module.js';
TypeScript 7.0 improves how template literal types handle Unicode. The new compiler preserves Unicode code points naturally — emoji sequences and complex characters are treated as single units instead of being split into surrogate pairs. This aligns template literal type inference with JavaScript's actual runtime behavior:
type Emoji = '👍' | '🚀' | '💡';
type WithPrefix = `icon-${Emoji}`;
// TS 7.0 preserves the emoji as a single unit
// 'icon-👍' | 'icon-🚀' | 'icon-💡'
For projects using checkJs: true, several JSDoc-related behaviors are now stricter:
@enum, @class, and @this tags enforce stricter validity rulestypeofis checks are not valid types without a preceding type annotationthis or reassigning function prototypes) is no longer trusted by the type systemMoving from TypeScript 6.x to 7.0 requires some planning. Here's a recommended approach:
Run npx typescript@rc --showConfig to see what new defaults would apply. Pay special attention to:
strict: true — if you relied on strict: false, explicitly set it backnoUnusedSideEffectImports: true — may cause errors if you import for side effectsmodule: esnext — verify your bundler/runner supports ESM outputtypes: [] — explicitly list @types/node or other type packages you need
If you use amd, umd, or system, migrate to ESM or let your bundler handle it.
If you use node16 or node22 resolution, switch to nodeNext.
Install typescript@rc alongside your existing version and run your CI pipeline. The type-checking
semantics are identical, so any new errors are from the default changes — not the type system itself.
# Test in CI alongside existing TS version
npm install -D typescript@rc
npx tsc --noEmit # Check for config-related errors
Once the RC is passing, experiment with --checkers and --buildJobs to find the optimal
settings for your codebase and CI runners. Start with defaults, then increase for faster builds.
npm install -D typescript@rc. Verify with npx tsc --version which should return Version 7.0.1-rc. For editor support, install the TypeScript Native Preview extension for VS Code, which uses the same Go compiler foundation for editor performance improvements.--checkers (default 4) controls parallel type-checking worker count; --buildJobs enables parallel building of TypeScript project references in monorepos; --singleThreaded disables all parallelism for debugging. New defaults include strict: true, module: esnext, noUnusedSideEffectImports: true, and types: [] (empty). stableLibOrdering is now always enabled.TypeScript 7.0 is the most significant release in the language's history, and migrating your project's configuration and build pipeline requires careful planning. If your team needs help with the upgrade — or if you're building a new project and want to start on the right foot — reach out to me.
I'm a full-stack web developer with deep experience in TypeScript, Node.js, React, and the modern JavaScript ecosystem. Based in Minsk and working worldwide, I help businesses build performant, well-architected web applications. Let's discuss your project.
Planning a TypeScript project or need help migrating to TypeScript 7.0? Tell me about your project — I'll provide a preliminary estimate. Free of charge.