Repository navigation
fix(claude-code): replace typescript-lsp with typescript-native-lsp (#194) - #195
Merged
Merged
Conversation
…194) The official typescript-lsp plugin wraps tsserver, which TypeScript 7 no longer ships, so it fails every request on TS 7 projects. Install rubberduck-studio/typescript-native-lsp instead: it runs `tsc --lsp` on TS 7+ and falls back to typescript-language-server on TS 6 and older. Two plugins claiming .ts can't coexist, and the persistent ~/.claude volume keeps the old plugin installed, so init-plugins.sh now disables typescript-lsp when it's still enabled. Closes #194
gatezh
force-pushed
the
fix/194-typescript-native-lsp
branch
from
October 6, 2026 19:37
5d1bcee to
ed73c0b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #194
Why
The template installs
typescript-lsp@claude-plugins-official, which runstypescript-language-serveron top oftsserver. TypeScript 7 ships notsserver.js, so on a TS 7 project every LSP request fails and Claude gets no type errors after edits, no go-to-definition and no find-references. Nothing upstream is scheduled to fix it (anthropics/claude-plugins-official#4492 is still open and unassigned).What changed
claude-code/.devcontainer/init-plugins.shrubberduck-studio/typescript-native-lspmarketplace.typescript-lsp@claude-plugins-officialwithtypescript-native-lsp@typescript-native-lsp. It runstsc --lspon TS 7+ and falls back totypescript-language-serveron TS 6 and older.DISABLED_PLUGINSlist. When two plugins claim.ts, Claude Code starts only the one that registers first. Because~/.claudeis a persistent volume, existing containers still have the official plugin installed, so the script disables it ifclaude plugin list --jsonshows it as enabled. Fresh containers never install it, so for them this step does nothing. The guard is needed becauseclaude plugin disableexits 1 on a plugin that is already disabled or missing, and that would tripset -e.claude-code/README.md: updates the bundled-plugins table and the marketplace count, and adds a note on why the official plugin was replaced and when to switch back.Verification
bash -nandshellcheck(koalaman/shellcheck:stable) pass oninit-plugins.sh.claude plugin list --jsonoutput from Claude Code 2.1.291, plus synthetic cases. It matches an enabled plugin, and does not match a disabled plugin, a missing plugin or an empty list.typescript-native-lsp, so the id istypescript-native-lsp@typescript-native-lsp. Its requirement of Node ≥ 22.22 is met by thenode:24base.Caveats
typescript-language-serverinstalled in the project or globally. The official plugin had the same requirement.init-plugins.sh, so they need to pull this change in (claude-code template: plugins added to init-plugins.sh never reach existing containers unless the script is run by hand #171).