Helix needs no plugin for JavaScript: its built-in languages.toml assigns typescript-language-server to JavaScript, JSX, TypeScript and TSX, and uses package.json and jsconfig.json as root markers for JavaScript. Install the server with npm and Helix starts it; TypeScript's own server then checks each file with the nearest jsconfig.json, so the errors are tsc's errors.
hx --health shows whether Helix can find the language server for each language.
At a glance
| Editor | Helix |
|---|---|
| What to install | typescript-language-server |
| What checks the code | typescript-language-server, the default for JavaScript, JSX, TypeScript and TSX in Helix's language list |
| Where its TypeScript comes from | Decided by typescript-language-server, which can use the workspace's TypeScript or a tsserver.path you configure |
| Reads | jsconfig.json, tsconfig.json |
| How this page was checked | Not run in Helix for this page. The configuration is from Helix's language documentation and its built-in languages.toml linked below; what the server reports comes from TypeScript's language service, which the site's tests run. |
Install the server, and override settings per project
npm install -g typescript-language-server typescript puts the server on your PATH. Settings go in languages.toml, either in your Helix config folder or in a .helix/languages.toml inside the project, which Helix merges with the built-in file. The config table of a language server becomes its initialization options; the example names the project's TypeScript explicitly with an absolute path.
# the built-in default for JavaScript, written out
[[language]]
name = "javascript"
language-servers = ["typescript-language-server"]
# optional: run this project's TypeScript (an absolute path to typescript/lib)
[language-server.typescript-language-server.config]
tsserver = { path = "/home/you/shop/node_modules/typescript/lib" } Which TypeScript it runs
Per its documentation, typescript-language-server reports one of three sources for its TypeScript: the workspace, a tsserver.path from its initialization options, or its bundled copy. Keeping typescript in the project's dev dependencies, and opening Helix at the project root, lets it use the same version as npm run lint; the tsserver.path setting above removes any doubt.
What differs from tsc
Helix shows diagnostics for the files you open, in the gutter and inline. TypeScript's suggestions come through the server as well, though tsc never prints them; code actions offer the quick fixes.
Make sure it matches tsc
Run npm run lint in a terminal, open a reported file in Helix, and compare the codes. If Helix shows nothing at all, hx --health tells you whether the server was found.
Gotchas
- The built-in configuration sets the server's inlay hint options for JavaScript (parameter names, inferred types); inlay hints are display only and have nothing to do with errors.
- A server that is not on
PATHfails quietly in the editor;hx --healthis the quickest check.
Sources
- Language configuration (languages.toml) · Helix documentation
- Language support · Helix documentation
- languages.toml (built-in defaults) · Helix on GitHub
- typescript-language-server configuration · typescript-language-server on GitHub
Last reviewed 20 October 2026.