Skip to content

TypeScript 7 VS Code extension: let extensions that serve their language through content mappers opt out of the tsserver-plugin warning #64356

Description

@leonidaz

🔎 Search Terms

  • TypeScript server plugins from the will not be loaded because TypeScript 7 is enabled globally
  • warnAboutTsServerPlugins typescriptServerPlugins content mapper

🕗 Version & Regression Information

  • The TypeScript 7 VS Code extension built from packages/vscode-typescript at f29aeb9 (main, 2026-09-16), VS Code 1.138.0, macOS 26.6 x64
  • The warning and its exemption list are unchanged since the published TypeScriptTeam.native-preview 0.20260708.2

⏯ Playground Link

n/a (VS Code extension behaviour)

💻 Code

warnAboutTsServerPlugins in packages/vscode-typescript/src/extension.ts warns once per session, when js/ts.experimental.useTsgo is set at user level, for every installed extension whose manifest contributes typescriptServerPlugins:

TypeScript server plugins from the "TSRX.tsrx-vscode-plugin" extension will not be loaded because TypeScript 7 is enabled globally.

The only exemption is the hardcoded suppressedPluginExtensionIds set (github.copilot, github.copilot-chat).

An extension for a content-mapped language needs both mechanisms: a typescriptServerPlugins contribution so that VS Code's built-in TypeScript extension (TypeScript 5.9/6, tsserver) can serve its files, and a content mapper (declared in the project's tsconfig.json under contentMappers) so that TypeScript 7 can. When TypeScript 7 is enabled, the plugin is intentionally not needed: the mapper takes over. The warning is then accurate but misleading, since the extension's language works fine.

🙁 Actual behavior

Every user of such an extension who enables TypeScript 7 globally sees a warning suggesting the extension is broken under TypeScript 7, with "Disable Native Preview in Workspace" offered as a remedy, although nothing is lost.

🙂 Expected behavior

A way for an extension to declare that its language is served through content mappers on TypeScript 7, for example a per-plugin flag on the contribution ("typescriptServerPlugins": [{ "name": "...", "contentMappers": true }] or similar), which the warning would then skip, as it skips the hardcoded ids today.

Additional information about the issue

Found while wiring the TSRX VS Code extension (tsrx-org/tsrx#135); its README currently tells users to dismiss the warning with "Don't Show Again".

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions