mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Dev Toolsevaluationupdated 26 Aug 2026

oxc review

Oxc is a Rust-based toolchain for JavaScript and TypeScript. It provides the Oxlint linter and Oxfmt formatter for application teams, plus parser, transformer, minifier, resolver, and code-generation pieces for developers building other tools.

+109stars / 7d
Verdict

Our Oxc install took 31 seconds, but the build failed in 7 seconds and the test command failed in 5 seconds before running any tests, so the source checkout did not validate in a Node-only sandbox. Oxlint is still worth a side-by-side CI trial because released binaries avoid most monorepo setup and the project is intensely active. Keep ESLint or Prettier available until your plugins, disable comments, printed configuration, formatting output, and editor workflow all match what the team relies on.

We ran it

Lab card: what happened when we ran oxcScreenshot of oxc (oxc.rs)
Install✓ · 31s745 packages · 688 MB
Build✗ · 7s
Tests✗ · 5sran, no count parsed
Repo13995 files~1,339,156 lines of source · 73.6 MB · 32 CI workflows

Answers from our run

Does oxc build from source?

Dependencies installed in 31 seconds (745 packages), and the build failed. We cloned commit 0e969e8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do oxc's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use oxc?

Teams requiring complete ESLint plugin and configuration parity: issue 22117 says --print-config drops JavaScript-plugin rules, and issue 26115 reports incorrect disable-prefix handling.

What are the alternatives to oxc?

ESLint, Prettier, Biome. Our Oxc install took 31 seconds, but the build failed in 7 seconds and the test command failed in 5 seconds before running any tests, so the source checkout did not validate in a Node-only sandbox.

Setup3/5Released CLIs are direct; the source workspace failed build and test
Docs4/5Separate guides cover each tool, migration, fixes, and contribution
Community5/5Pushed August 2026 with same-day issues, fixes, and releases
Maturity4/5Oxlint is established; formatter and some plugin paths still move fast

Discussed on

  1. hnOxc (popular front-end tooling) forked my parser but removed my copyright notice14 points
  2. hnA collection of JavaScript tools written in Rust5 points

Who it’s for

JavaScript and TypeScript teams willing to trial Oxlint beside ESLint on a real configuration.
Projects that want one fast executable for linting or formatting through npm.
Tool authors who need Rust crates or Node bindings for parsing, transformation, minification, or resolution.
Contributors comfortable working across a large Rust and pnpm monorepo.

Who it’s NOT for

Teams requiring complete ESLint plugin and configuration parity: issue 22117 says --print-config drops JavaScript-plugin rules, and issue 26115 reports incorrect disable-prefix handling.
Projects that treat formatter output as frozen: the latest combined release labels Oxfmt 0.65.0 while Oxlint is 1.80.0.
Contributors with only Node installed: our monorepo build reached an N-API Cargo-metadata step and failed in the minify workspace.
Buyers who need our checked-out source to pass before adoption: both build and test commands returned exit 1 in the sandbox.
Teams wanting a tiny repository to fork: the checkout held 13,995 files and about 1,339,156 source lines.

Setup reality

Our sandbox installed 745 pnpm packages in 31 seconds and used 688 MB. The build failed after 7 seconds in napi/minify; the tail shows @napi-rs/cli calling Cargo metadata before pnpm reported a recursive first failure.

Tests failed after 5 seconds. Vitest reported 2 failed files and no tests, then the oxc-minify workspace returned exit 1. The supplied tails do not show the underlying Cargo error or a test assertion, so we cannot assign a cause beyond those stages.

Most users can install released Oxlint or Oxfmt through npm without building the monorepo. Source contributors need the pnpm workspace and its Rust-backed build path. Local linting needs no credentials; CI integration still needs configuration, migration checks, and a pinned version.

Oxlint is the easiest part of Oxc to adopt

Oxc contains several layers of a JavaScript and TypeScript toolchain, all centered on Rust implementations. Application teams can run Oxlint and Oxfmt from npm. Tool authors can use the parser, transformer, minifier, resolver, and related crates or Node bindings. Rolldown uses Oxc for parsing, transformation, and minification, while the README names Nuxt, Preact, Shopify, and others as users of specific pieces.

That breadth can obscure the first decision. Most teams should evaluate one released CLI rather than replace an entire stack. Add Oxlint beside ESLint, compare diagnostics and ignored files, then decide which rules can move. Formatting deserves a separate review because Oxfmt and Oxlint have different release numbers and compatibility risks. Tool authors face a larger API commitment than CLI users.

The monorepo is 1.3 million lines across Rust and Node

Our checkout at commit 0e969e8 had 13,995 files, about 1,339,156 lines of source, and occupied 73.6 MB. It is a pnpm workspace monorepo with 32 CI workflow files. The scan found no Dockerfile and no directory literally named tests, although the repository plainly contains testing through workspace-specific layouts and commands.

Pnpm installed 745 packages in 31 seconds and consumed 688 MB. That dependency footprint belongs to source development across the workspace, not to the standalone binary a normal Oxlint user downloads through npm. The distinction matters for adoption: consuming one published tool is much easier than contributing to parser, semantic analysis, code generation, N-API bindings, and release packages together.

What happened when we ran it

Our build returned exit code 1 after 7 seconds. The tail shows @napi-rs/cli executing Cargo metadata while building the napi/minify workspace. Pnpm then reported ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL for oxc-minify@0.147.0 and stopped the recursive build. The visible log does not include the lower-level Cargo error, so it does not support a more specific diagnosis.

The test command failed after 5 seconds. Vitest summarized 2 failed files and no tests, then the same napi/minify package reported a recursive first failure for its test script. No assertion ran in the supplied tail. This is different from a suite with failing behavior: the workspace command failed before Vitest found executable tests in those files.

We ran these commands in a fresh unprivileged Node 22 Debian container with 3 CPUs and 8 GB of RAM. We did not benchmark Oxlint, compare output with ESLint, or run a released binary against an application. The failure says the monorepo was not self-contained in that environment; it does not measure the speed or correctness of the published CLI.

Plugin compatibility still needs a migration audit

Oxlint supports many familiar rules, but current issues show edges around JavaScript plugins. Issue 22117 says --print-config silently removes rules supplied through jsPlugins, even though those rules work during linting. That makes the printed configuration unreliable for one common migration check. A team should test effective behavior on files, not trust configuration output alone.

Issue 26115 reports that a disable comment with the wrong plugin prefix can silence a built-in rule sharing the same rule name. The reporter describes false negatives in Oxlint 1.80.0. This is a precise reason to compare suppression comments during migration, especially in a repository with many eslint-disable or plugin-specific directives. A faster linter that skips an intended diagnostic is not an acceptable trade.

A separate Oxlint 1.79.0 issue reports a React compiler invariant failure on computed-property destructuring. The report includes a short TypeScript reproduction and compares the official React compiler response. Teams enabling newer React rules should run them over the full codebase before making Oxlint required, because unusual syntax often lives outside the files chosen for a quick demo.

Releases move several products at different speeds

The latest GitHub release on August 24, 2026 combines Oxlint 1.80.0 with Oxfmt 0.65.0. Its notes include one new TypeScript lint suggestion, several rule and semantic fixes, and a formatter fix for decorators around suppressed statements. A combined release is convenient, but the different major versions show that the formatter and linter are at different maturity points.

GitHub listed 22,503 stars and 811 combined open issues and pull requests when fetched. The last push was August 26, and new issues plus patches were moving the same day. That queue reflects a broad, busy project rather than 811 confirmed bugs. It also means behavior can change quickly, so pin exact CLI versions in CI instead of running @latest there.

Trial one job before replacing the toolchain

Oxc is a credible foundation for JavaScript tooling, and the MIT license keeps commercial adoption simple. Its released binaries give application teams a low-cost way to try Oxlint without reproducing our failed 688 MB source workspace. Start with warnings only, capture diagnostic differences, and measure the repository's own CI time rather than borrowing project marketing.

Do not migrate linting and formatting together unless both comparisons pass. Keep ESLint for missing plugins, check every suppression namespace, compare --print-config with actual lint results, and review the Oxfmt diff as code. Our 7-second build failure is a contributor warning; the open compatibility reports are the stronger reason to stage adoption carefully.

Alternatives

ProjectWhat it isPick it when
ESLint gh↗The established JavaScript linter with a large plugin ecosystem.pick this instead when plugin compatibility and mature configuration behavior matter more than execution speed.
Prettier gh↗An opinionated formatter with broad language and editor support.pick this instead when stable formatter compatibility across an existing team matters most.
Biome gh↗A Rust-based formatter and linter distributed as one toolchain.pick this instead when you want a combined formatter and linter with one configuration surface today.
SWC gh↗A Rust platform for JavaScript and TypeScript compilation and transformation.pick this instead when compiler transformation is the main job and its ecosystem already fits your build.

What people are saying

  1. [github-trending] oxc-project/oxc

Sources

  1. Oxc README
  2. Oxc repository
  3. Oxlint 1.80.0 and Oxfmt 0.65.0 release
  4. JavaScript plugin print-config issue
  5. Disable directive prefix issue
  6. React compiler invariant issue

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →