# TypeScript 5.8-7.0
tint: #CAD3F2
blurb: Releases, dates, breaking changes and what's next

id: 36560cec-d8b8-4c87-a4c4-251caecfb8fa
Q: When did TypeScript 5.8, 5.9, 6.0 and 7.0 ship?
A: 5.8 on 28 Feb 2025, 5.9 on 1 Aug 2025, 6.0 on 23 Mar 2026 and 7.0 on 8 Jul 2026. The 5.x line ran on a roughly 3-month cadence; 6.0 and 7.0 arrived four months apart in 2026. id: 1a9f8837-47fd-4a22-8801-273a713f4749
id: d7910f69-61e1-4c6f-b6de-15d03d67f29b
Q: What is TypeScript 7.0, and why is it a landmark release?
A: It is the compiler and language service ported from JavaScript to Go, released 8 Jul 2026. Microsoft measured 7.7x-11.9x faster builds on real codebases with 6-26% lower memory use. id: 93a025f0-b6df-4153-8773-53d6f611032f
id: ab234267-8e61-4ee7-9a56-3137134427c9
Q: Is TypeScript 7 a new language or type system?
A: No - it is a port, not a redesign. The syntax, type system and checking semantics are the same as 6.0; what changed is the implementation, the supported config surface and the tooling around it. id: c5641be1-503d-4cda-b1df-cd6213ada69e
id: 13546c8e-57b3-49de-9ae0-e9d24d2375ff
Q: How does TypeScript 7 use multiple cores?
A: New --checkers flag (default 4) runs type-checking across parallel workers and --builders parallelises project-reference builds; --singleThreaded turns parallelism off. id: 3ce72215-5be1-46f8-9319-49ceb655f045
id: c0d161f6-4180-418b-8dc6-8f3bbb366e9b
Q: What happened to tsc's watch mode and editor support in 7.0?
A: --watch was rebuilt on a Go port of Parcel's file watcher, and the language server was rewritten on LSP - over 80% fewer failing commands and 60% fewer server crashes than 6.0. id: 19cff139-825b-4f1c-8cd9-132385e4d551
id: 3ab36e87-4883-447e-9b3a-e2598fe1233b
Q: Which tsconfig defaults changed on the way to 7.0?
A: strict is now true, module defaults to esnext, target to es2025 (6.0), rootDir to the tsconfig's own directory, and types to an empty array. id: f39d0975-4ad7-4cf5-adf3-fa923cf30460
id: 2568fe3b-bb95-4daf-932d-9136cfb855ab
Q: Why does "types": [] as a default break so many projects?
A: Previously every package under node_modules/@types was auto-included. Now you must list them explicitly, e.g. "types": ["node"], or globals like process and __dirname stop resolving. id: 0d3a8992-5664-412a-beda-511caf888e3c
id: 07994be1-31ea-4aa3-9b07-ffaca903e9e0
Q: What did TypeScript 6.0 deprecate?
A: target es5, downlevelIteration, moduleResolution node10 and classic, module amd/umd/system/none, baseUrl, outFile, esModuleInterop false, legacy module namespace syntax and import assert. id: 33dc3048-438d-46ff-b841-8da90696bcf5
id: dee4903d-a03d-457e-b68e-47702e142a0a
Q: What does "ignoreDeprecations": "6.0" do?
A: It downgrades 6.0's deprecation errors back to warnings so a project can keep building on the old options - an escape hatch for migration, not a long-term setting, since 7.0 removes them outright. id: 04e9a4ea-7122-4511-8789-2eefe56af5bb
id: ce855464-a116-41bb-9c87-6a8df5437eaf
Q: Why did TypeScript 6.0 exist at all?
A: It is the bridge release: the last JavaScript-based compiler, whose job was to surface 7.0's breaking changes as deprecations while you were still on the familiar codebase. id: 67c35cf7-9d5f-43f9-bc8e-2ec358fcfcf9
id: 625c0222-5e3e-4e28-bd91-13237d6a5f4d
Q: Which options are gone for good in TypeScript 7.0?
A: target es5 and downlevelIteration, moduleResolution node10/classic, module amd/umd/systemjs/none, baseUrl, and esModuleInterop or allowSyntheticDefaultImports set to false. id: d9bd7254-8f89-4cc3-82e0-84651025c365
id: b2401adc-e9c9-4e60-8720-55b917437a40
Q: How did TypeScript 7 change checking of plain JavaScript files?
A: JS support was tightened to match TS rules: values can no longer stand in for types, Closure-style annotations are no longer recognised, and postfix ! is unsupported. id: 5299219e-b8dc-4ba5-888a-bfbd8d32de2e
id: ddcc44d4-0aa4-4552-9c9d-91fe531dc12a
Q: Can Vue, Svelte, Angular, Astro or MDX use TypeScript 7 today?
A: Not yet. Embedded-language tooling depends on the compiler API, which is only stabilised in 7.1 - until then those frameworks stay on the 6.0 toolchain. id: a4727286-ba89-414a-8c17-aac9ce14d717
id: 1e409ea4-59be-4995-bc5a-ff8ceaec5bfa
Q: What was tsgo, and what does TypeScript 7 ship as now?
A: tsgo was the preview executable in the @typescript/native-preview package. Stable 7.0 ships in the normal typescript package and is invoked as tsc. id: 94de8bec-36b1-4514-9c6a-48a8d5f7ea63
id: 0e80d634-38cb-43d3-b013-b522fa5642d9
Q: How do you run TypeScript 6 and 7 side by side?
A: Install the @typescript/typescript6 compatibility package, which lets both compilers coexist without name collisions while you migrate parts of a repo. id: 14ce4da3-676e-46d0-b2d2-429a5098d129
id: 4fa9bd63-bcfa-4621-88e0-42d2fd4b253a
Q: What is planned for TypeScript 7.1, and when?
A: Per the published iteration plan: beta 9 Sep 2026, RC 20 Oct, stable 10 Nov 2026. Headline item is the stable programmatic API, plus ES2026 lib/target and type on import attributes. id: 42b50981-9920-4870-ba9e-fb1b68218d10
id: fbaf78f9-4e94-4b6c-8a39-a18a31c5a0ef
Q: Why does the missing programmatic API in 7.0 matter?
A: Everything built on the old JS compiler API - typed ESLint rules, ts-jest, bundler plugins, framework language tooling - cannot target the Go compiler until 7.1 stabilises that API. id: cadcffef-ab0d-4672-93b4-11d139a00262
id: b0277e8c-d747-4b15-aaca-3546d1a502cb
Q: What release cadence has the team signalled after 7.0?
A: A return to the pre-7.0 rhythm: featureful releases roughly every 3-4 months. id: d805fc6e-8fdb-45a2-b5ca-f42115292ecf
id: acd0d4fc-b359-4852-8b5c-1a281900cf56
Q: What is import defer, added in 5.9?
A: Syntax like import defer * as ns from "./m" loads a module but delays evaluating it until one of its exports is actually touched - a startup-cost optimisation. 5.9 added the type-checking for it. id: 007ee4bd-0a15-4966-af4b-3afac5e73e63
id: 3247879e-a51f-468b-8a8f-70e3c925fb5b
Q: Why did 5.9 add --module node20 when nodenext exists?
A: nodenext floats: its behaviour shifts as Node evolves. node20 pins the semantics of Node 20 so builds stay reproducible, exactly as node18 did in 5.8. id: c2e93e14-6681-4bfa-a073-3bbaf2aef407
id: 3cf0c907-8192-4255-94a9-eb10485f2ebc
Q: What else did 5.9 bring to everyday DX?
A: A much leaner, more prescriptive tsc --init output, MDN-sourced summaries on DOM APIs, and expandable +/- quick-info hovers with a configurable length limit. id: ba71b7d6-4194-48cc-8f50-ff0154573852
id: 49b141db-2c60-4f62-ad99-9fd0a39cac43
Q: What is --erasableSyntaxOnly (5.8) for?
A: It errors on TypeScript constructs that emit runtime code - enums, namespaces, parameter properties - so the file is valid under Node's type-stripping, where types are simply erased. id: b4dad803-a465-4944-8c30-6bcf09740a42
id: 0a12461d-57d4-480f-8a86-492a3dfbe457
Q: What return-type bug did 5.8 start catching?
A: For a conditional expression in a return statement, each branch is now checked against the declared return type, instead of only the union-ed result. id: a2d80053-92da-48a3-b265-6546c25690a7
id: 11aa42a6-8306-46d7-89d5-b6bcfe45c59f
Q: What did 5.8 change about requiring ESM?
A: Under --module nodenext, require() of an ES module is allowed, matching Node 22. The new --module node18 keeps the older rules for projects still on Node 18.
