Find bugs in JavaScript programs.

This page documents the quick-lint-js Language Server Protocol (LSP) server.

Table of Contents


quick-lint-js supports the Language Server Protocol. This allows code editors to ask quick-lint-js for diagnostics which can be displayed inline.

To start the quick-lint-js LSP server, run the quick-lint-js CLI with the --lsp-server option. The server accepts JSON-RPC+LSP messages from the editor via standard input, and sends JSON-RPC messages to the editor via standard output.

Supported LSP features

quick-lint-js can receive and handle the following LSP requests and notifications:

  • Basic lifecycle

    • exit

    • initialize

    • initialized

    • shutdown

  • Document sync

    • textDocument/didClose

    • textDocument/didOpen

    • textDocument/didChange

quick-lint-js sends the following LSP requests and notifications:

  • textDocument/publishDiagnostics

  • window/showMessage

  • workspace/configuration

quick-lint-js interprets documents with the following document language IDs as if they were JavaScript+JSX files (like the --language=javascript-jsx command line option):

  • javascript

  • javascriptreact

  • js-jsx

  • js

quick-lint-js interprets documents with a base name of quick-lint-js.config as a JSON config file. The document’s language ID is ignored. See quick-lint-js.config(5) for more details.


The quick-lint-js LSP server accepts the following configuration settings, communicated through workspace/configuration:


Log raw LSP messages between the editor and quick-lint-js. A timestamped subdirectory is created inside the tracing directory containing binary log files. If null or an empty string, tracing is disabled.