Editor setup

Type-checked JavaScript in Helix

  • Helix
  • typescript-language-server

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

EditorHelix
What to installtypescript-language-server
What checks the codetypescript-language-server, the default for JavaScript, JSX, TypeScript and TSX in Helix's language list
Where its TypeScript comes fromDecided by typescript-language-server, which can use the workspace's TypeScript or a tsserver.path you configure
Readsjsconfig.json, tsconfig.json
How this page was checkedNot 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.

.helix/languages.toml
# 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 PATH fails quietly in the editor; hx --health is the quickest check.

Sources

Last reviewed 20 October 2026.