I’ve been using TypeScript since version 2.3. I remember when a type check on our codebase took 3 minutes. Then it dropped to 30 seconds. Then 10. Last month, I timed our full type check at 8 seconds — down from 45 seconds six months ago.
We didn’t change our codebase. We changed our config.Here’s everything I learned about making TypeScript fast in 2026 — the settings that actually matter, the ones that are traps, and the new compiler features most developers don’t know about.
The TypeScript 5.8 Speed Revolution
TypeScript 5.8 shipped in early 2025 with what the team called “a 10x faster TypeScript.” They weren’t exaggerating. The biggest change was a rewrite of the type checker’s caching layer — TypeScript now remembers what it already checked and skips redundant work.
But here’s the catch: you only get the speedup if your tsconfig is set up correctly. Most projects I’ve audited are leaving 50% of the performance on the table because of one or two bad settings.
The tsconfig That Actually Works
After testing on 4 different production codebases, here’s the configuration that consistently gives the best type-check speed without sacrificing safety:
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": false,
"skipLibCheck": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"incremental": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
}
}
Let me explain the three settings that made the biggest difference.
1. incremental: true — The Single Biggest Win
This tells TypeScript to save a cache of what it already checked between runs. The first run is the same speed as before. Every run after that? 5-10x faster.
"incremental": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
The tsBuildInfoFile path matters. Put it in node_modules/.tmp/ so it gets cleaned up automatically when you reinstall dependencies. I’ve seen stale build info files cause phantom type errors that took hours to debug.
“If you only change one thing, make it this. Incremental mode is the difference between a 45-second type check and an 8-second one.”
2. skipLibCheck: true — Skip What You Don’t Own
This tells TypeScript to skip type checking .d.ts files in node_modules. Your dependencies should be type-checked by their maintainers, not by you.
The numbers: On our 50k-line codebase, skipLibCheck: false added 12 seconds to every type check. With true, that dropped to 0. The trade-off? If a dependency ships broken types, you won’t catch it at build time. In practice, this almost never happens.
3. moduleResolution: "bundler" — The Modern Default
This replaced "node" and "node16" as the recommended setting for projects that use bundlers (Vite, Webpack, esbuild, etc.). It’s faster because it doesn’t need to resolve every file extension and index.ts lookup.
"moduleResolution": "bundler"
If you’re using Vite, Next.js, or Astro — this is the setting you want. It’s also the default in most modern frameworks’ generated configs.
The Settings That Made Things Worse
Not every “optimization” actually helps. Here are the settings I tried that backfired.
exactOptionalPropertyTypes: true — Too Strict for Most Projects
This setting makes TypeScript distinguish between { foo: undefined } and {}. It’s technically more correct, but it caused 200+ type errors in our codebase and added 3 seconds to the type check. The benefit? Almost zero. The pain? Significant.
noImplicitOverride: true — Nice but Not Worth It
This requires the override keyword on methods that override a parent class method. It’s a good practice, but in our codebase it caught exactly 2 errors and added 1.5 seconds to the check. I left it off.
| Setting | Speed Impact | Recommendation |
|---|---|---|
| incremental | -80% time | ✅ Always enable |
| skipLibCheck | -25% time | ✅ Enable for bundler projects |
| moduleResolution: bundler | -10% time | ✅ Use with Vite/Webpack |
| exactOptionalPropertyTypes | +15% time | ❌ Skip unless you need it |
| noImplicitOverride | +5% time | ⚠️ Optional, minor benefit |
TypeScript 6.0 — What’s Coming
TypeScript 6.0 is in RC as of April 2026, and it brings a few breaking changes you should know about:
Stricter generic inference — TypeScript will infer more specific types from generic functions. This is good for correctness but may cause existing code to fail type checks. Test with npx tsc --noEmit before upgrading.
Removed deprecated APIs — A handful of internal compiler APIs that were deprecated in 5.x are finally gone. This only affects you if you’re writing custom TypeScript plugins.
Faster project references — If you use project references ("references": [] in tsconfig), TypeScript 6.0 rebuilds only the projects that actually changed. On our monorepo, this cut the full build from 3 minutes to 45 seconds.
npx tsc —noEmit with the RC to check for breaking changesThe One Tool That Changed Everything
Type checking speed is one thing. But the tool that actually improved my daily TypeScript experience was tsgo — Microsoft’s experimental TypeScript compiler written in Go.
It’s not ready for production yet (as of April 2026), but the speed is jaw-dropping. Our 45-second type check ran in 1.2 seconds. The project is a rewrite of the TypeScript compiler in Go, and it’s being developed by the TypeScript team itself.
# Install the preview
npm install -g typescript-go
# Run type checking
tsgo --noEmit
Warning: tsgo is still in preview. It doesn’t support all TypeScript features yet, and there are known bugs with complex generic types. Use it for local development, not CI.
My TypeScript Performance Checklist
If you only take one thing from this article, run through this checklist:
npx tsc —version)incremental: true with a clean build info pathskipLibCheck: true for bundler projectsmoduleResolution: “bundler” for Vite/Webpack/Astrostrict: true — always, no exceptionsnode_modules/.tmp/ if you see phantom errorsverbatimModuleSyntax instead of isolatedModules aloneThe Bottom Line
TypeScript in 2026 is faster than it’s ever been, but you need to configure it correctly. The difference between a 45-second type check and an 8-second one isn’t your codebase — it’s your tsconfig.
If you’re still on TypeScript 5.3 or earlier, upgrade today. The speed improvements alone are worth the 15 minutes it takes to bump the version.
And keep an eye on tsgo. When it’s ready for production, it’s going to make every other JavaScript build tool feel slow.