Building the product · Edition No. 47 · 11 Oct 2026

oxc-project/oxc

Fast replacements for the usual JavaScript checker, formatter, parser and minifier, usable one piece at a time.

← Building the productRead the whole edition →

22,805 stars · MIT, read from /blob/main/LICENSE, plain, with TWO copyright holders: '(c) 2024-present VoidZero Inc. & Contributors' and '(c) 2023 Boshen' · oxlint_v1.87.0 (2026-10-05), read from /releases/latest; the year was absent and was settled against the npm registry, whose dist-tag matches 1.87.0 and whose staging timestamp resolves to 2026-10-05 — a staging timestamp, not a stated publish date, and recorded as such · Track this in Scout

Fast replacements for the usual JavaScript checker, formatter, parser and minifier, usable one piece at a time.

▶Repo detailsthe review · specs · pros & cons · install

What it does

It takes JavaScript and TypeScript source files. The checker, called oxlint, reads them and prints the problems it finds, and will fix the fixable ones with --fix. The formatter, oxfmt, rewrites the spacing and line breaks. There is also a parser, a transformer that turns newer syntax into older syntax, a minifier that shrinks code for the web, and a module resolver that works out which file an import refers to. The project publishes a rule count and a speed claim: oxlint has "871 built-in rules" and its own benchmarks put it "50 to 100 times faster than ESLint depending on the number of CPU cores". The transformer is stated as four times faster than its nearest rival, using 20 per cent less memory. What it does not do is cover the plugin ecosystem: support for existing checker plugins is marked alpha, and in framework files such as Vue or Svelte it lints "only their <script> blocks", so the markup part of those files is not checked at all.

Why it matters

Who it suits. Anyone whose JavaScript checker takes minutes rather than seconds, which usually means a codebase of a few hundred files or more. It also suits a project where the check runs on every save, because the difference between two seconds and two hundred milliseconds changes how often people run it. Skip it if your rules depend on a plugin outside the built-in 871, and skip it if most of your logic lives inside Vue or Svelte markup rather than in script blocks.

Verdict. The easiest two minutes in this edition. npx oxlint@latest downloads it, runs it, and leaves nothing behind, so there is no decision to make before trying it. Keep your existing checker in place while you compare the two lists of problems, because the rule sets are not identical and a shorter list is not automatically a better one. The pieces to be careful about are the newer ones: the formatter and the plugin layer are much younger than the checker, and the project routes anyone wanting a complete toolchain towards a commercial product rather than to oxc itself. Worth knowing that biomejs/biome does the same job in the same language and is a direct competitor at 25,747 stars; Edition 17 covered it.

Stars22,805
LicenceMIT, read from /blob/main/LICENSE, plain, with TWO copyright holders: '(c) 2024-present VoidZero Inc. & Contributors' and '(c) 2023 Boshen'
Latestoxlint_v1.87.0 (2026-10-05), read from /releases/latest; the year was absent and was settled against the npm registry, whose dist-tag matches 1.87.0 and whose staging timestamp resolves to 2026-10-05 — a staging timestamp, not a stated publish date, and recorded as such
Good
  • One command through npx tries the checker with nothing installed permanently.
  • The pieces are separate, so you can adopt the checker and ignore the formatter, parser and minifier.
  • MIT licence, read from the file, with two copyright holders named and no added conditions.
Watch for
  • Support for existing checker plugins is marked alpha, so a rule you depend on may simply not exist.
  • In Vue and Svelte files it checks only the script blocks, and the markup is left unchecked.
  • Every speed figure the project publishes is a multiple of a rival, never an absolute time, and no benchmark machine is named.
Similar repositories
  • biomejs/biome

    The closest match, also Rust, also one tool for checking and formatting, and further along on formatting; it does not try to replace the parser and minifier as well.

    Track this in Scout
  • swc-project/swc

    The established Rust replacement for the transformer and minifier only, with no checker; oxc's own figures are measured against it.

    Track this in Scout
  • eslint/eslint

    The original checker, written in JavaScript, with the plugin ecosystem that is the real reason to stay.

    Track this in Scout
Install
# Try it with nothing installed
npx oxlint@latest
# Or add it to a project
pnpm add -D oxlint
pnpm oxlint          # check
pnpm oxlint --fix    # check and fix what it can

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.