The TypeScript 7 extension finds a workspace's own TypeScript 7 only in node_modules/@typescript/native-preview. That package was last published on 2026-07-07 (7.0.0-dev.20260707.2). TypeScript 7 now ships as typescript: typescript@7.0.2 came out the next day, and the 7.1 nightlies ship as typescript@next (7.1.0-dev.20260930.4 today). So a project that installs TypeScript 7 the current way runs the extension's bundled compiler instead of its own. Nothing tells the user, and the only fix is to write a tsdk setting by hand.
Versions: TypeScript 7 extension 1.0.1, VS Code 1.140.0, macOS.
Repro
- In an empty folder, run
npm install -D typescript@next and add main.ts with export const n: number = 1;.
- Open the folder in VS Code with the TypeScript 7 extension installed, and open
main.ts. No setting is needed: on its first start, the extension turns TypeScript 7 on by itself (it writes "js/ts.experimental.useTsgo": true into the user settings). If TypeScript 7 was turned off later, run TypeScript: Enable TypeScript 7 Language Server.
Expected: the extension offers the workspace's TypeScript, as it does for @typescript/native-preview: the "This workspace has TypeScript 7 installed" prompt, and Use Workspace Version in TypeScript: Select TypeScript Version.
Actual: no prompt, and the server runs the extension's own compiler (7.0.2), not node_modules/typescript (7.1):
…/extensions/typescriptteam.native-preview-1.0.1-darwin-x64/lib/tsc --lsp --stdio
With "js/ts.tsdk.path": "node_modules/typescript", the same project runs the workspace compiler. So only the detection is missing: resolveTsdkPathToExe already accepts a typescript package (bin tsc).
Where
In packages/vscode-typescript/src/session.ts (main at 43521c8), findWorkspaceNativePreviewPackages checks only node_modules/@typescript/native-preview. Both promptUseWorkspaceVersion and the version picker (promptSelectVersion) use it.
Suggestion
Also detect node_modules/typescript when it is TypeScript 7 or newer. pathHasTsserverJs already tells a TypeScript 5 or 6 package apart from a TypeScript 7 one.
Why it matters
- The editor and the project's
tsc (CLI, CI) then run the same compiler.
- Features that need a 7.1 nightly, such as content mappers with
--runExternalCode, now need either the TypeScript 7 Nightly extension or a hand-written tsdk setting. The Nightly extension applies to every workspace and changes daily. The tsdk setting is easy to miss, because the extension never mentions it.
The TypeScript 7 extension finds a workspace's own TypeScript 7 only in
node_modules/@typescript/native-preview. That package was last published on 2026-07-07 (7.0.0-dev.20260707.2). TypeScript 7 now ships astypescript:typescript@7.0.2came out the next day, and the 7.1 nightlies ship astypescript@next(7.1.0-dev.20260930.4today). So a project that installs TypeScript 7 the current way runs the extension's bundled compiler instead of its own. Nothing tells the user, and the only fix is to write atsdksetting by hand.Versions: TypeScript 7 extension 1.0.1, VS Code 1.140.0, macOS.
Repro
npm install -D typescript@nextand addmain.tswithexport const n: number = 1;.main.ts. No setting is needed: on its first start, the extension turns TypeScript 7 on by itself (it writes"js/ts.experimental.useTsgo": trueinto the user settings). If TypeScript 7 was turned off later, run TypeScript: Enable TypeScript 7 Language Server.Expected: the extension offers the workspace's TypeScript, as it does for
@typescript/native-preview: the "This workspace has TypeScript 7 installed" prompt, and Use Workspace Version in TypeScript: Select TypeScript Version.Actual: no prompt, and the server runs the extension's own compiler (7.0.2), not
node_modules/typescript(7.1):With
"js/ts.tsdk.path": "node_modules/typescript", the same project runs the workspace compiler. So only the detection is missing:resolveTsdkPathToExealready accepts atypescriptpackage (bintsc).Where
In
packages/vscode-typescript/src/session.ts(main at 43521c8),findWorkspaceNativePreviewPackageschecks onlynode_modules/@typescript/native-preview. BothpromptUseWorkspaceVersionand the version picker (promptSelectVersion) use it.Suggestion
Also detect
node_modules/typescriptwhen it is TypeScript 7 or newer.pathHasTsserverJsalready tells a TypeScript 5 or 6 package apart from a TypeScript 7 one.Why it matters
tsc(CLI, CI) then run the same compiler.--runExternalCode, now need either the TypeScript 7 Nightly extension or a hand-writtentsdksetting. The Nightly extension applies to every workspace and changes daily. Thetsdksetting is easy to miss, because the extension never mentions it.