Cloud Parts

Oxc

The JavaScript Oxidation Compiler: Rust building blocks (parser, transformer, minifier, resolver) under Rolldown and Vite, plus the Oxlint linter and Oxfmt formatter.

Type
Open source
Made by
VoidZero (now part of Cloudflare)
License
MIT
Facts checked
9 October 2026

What it is

Oxc is a set of tools for JavaScript and TypeScript written in Rust (the name plays on oxidation, the process that makes rust). At the bottom are reusable compiler parts: a parser that produces a syntax tree for tooling, a transformer for TypeScript, JSX and newer syntax, a minifier, and a Node-compatible module resolver. They are shared by everything above them, so the linter, formatter and bundler parse code the same way. Rolldown uses them for all its language work, which makes Oxc the compiler inside Vite 8.

Two end-user tools come with it. Oxlint is a linter with more than 870 built-in rules taken from ESLint, typescript-eslint and popular plugins, which the project benchmarks at 50 to 100 times faster than ESLint; its defaults favour rules that catch real bugs. Type-aware rules run through tsgolint, built on TypeScript 7 (tsgo), and a JavaScript plugin API (alpha) runs existing ESLint plugins. Oxfmt, in beta since February 2026, is a Prettier-compatible formatter that passes all of Prettier’s JavaScript and TypeScript conformance tests and sorts imports and Tailwind classes itself. Vite+ runs both through vp check.

Why teams pick it

  • Speed: Shopify’s ESLint run of 75 CI minutes took about 10 seconds with Oxlint on a single worker
  • Built to replace ESLint and Prettier in place: it reads their configs through migration commands and runs most ESLint plugins unchanged
  • Type-aware linting covers 59 of typescript-eslint’s 61 type-aware rules and can report TypeScript errors in the same pass
  • One parser and resolver for linting, formatting, transforming and bundling, so the tools agree on what the code means

Watch out for

  • Oxfmt is still in beta (pre-1.0) and doesn’t cover every Prettier option or plugin yet
  • JavaScript plugins are alpha: limited support for Vue, Svelte and Angular file formats, and no custom type-aware rules
  • Type-aware linting needs a separate oxlint-tsgolint package tied to a specific TypeScript version
  • Minor releases add rules, which can fail CI on code that passed before

Alternatives

What all linters have in common →

How it fits with other technologies

Lint and format a file with no config (run with Oxlint 1.87 and Oxfmt 0.72) · bash

cat > app.js <<'EOF'
const items = [3,1,2]
if (items.length = 0) {console.log("empty")}
debugger
EOF
npm install -D oxlint oxfmt --silent

npx oxlint --format=unix app.js
# app.js:2:18: Expected a conditional expression and instead saw an assignment [Warning/eslint(no-cond-assign)]
# app.js:2:5: Unexpected constant condition [Warning/eslint(no-constant-condition)]
# app.js:3:1: `debugger` statement is not allowed [Warning/eslint(no-debugger)]
#
# 3 problems

npx oxfmt app.js && cat app.js
# const items = [3, 1, 2];
# if ((items.length = 0)) {
#   console.log("empty");
# }
# debugger;

See it in a real stack

No architecture uses Oxc yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2023–2026

Boshen Chen wanted to become a full-time Rust developer and joined Rome, a project rewriting JavaScript tooling in Rust. Feeling out of depth with parsers and compilers, Boshen started writing a JavaScript compiler from scratch to learn, and by March 2023 that personal project, the JavaScript Oxidation Compiler, had a linter that processed about 1,000 files in 100 milliseconds. A Rust Magazine article from then describes the work: allocating the whole syntax tree in a memory arena, shrinking source positions to 32 bits, and parsing files in parallel.

Oxlint became generally available in December 2023, pitched as a fast first pass before ESLint rather than a replacement; Shopify cut a 75-minute lint to about 10 seconds. In 2024 VoidZero, whose team includes Boshen Chen, picked Oxc over SWC as the base for Rolldown, Vite’s new bundler, and from October 2024 held Oxc’s copyright and funded its development. A transformer (2024) and minifier (2025) followed, then Oxlint 1.0 in June 2025, the Oxfmt formatter in December 2025, and stable type-aware linting in July 2026. Since June 2026 VoidZero is part of Cloudflare, and Oxc stays MIT-licensed.

Why it’s built this way

Allocate the syntax tree in a memory arena
An arena grabs memory in big chunks and frees it all at once, so building and dropping a tree is cheap. Boshen reported about 20% faster parsing after switching, at the cost of lifetime annotations everywhere in the Rust code.
Shared building blocks for every tool
The linter, formatter, transformer, minifier and bundler all use the same parser, semantic analysis and resolver, so work isn’t duplicated and behaviour stays consistent across the stack.
Compatibility over a fresh rule set
Oxlint ports ESLint rules and runs ESLint plugins, and Oxfmt matches Prettier’s output, so teams can switch without arguing about new rules or reformatting the codebase in a new style.
Type-aware rules on TypeScript 7 itself
Rather than reimplement TypeScript’s type checker, tsgolint is built directly on TypeScript 7, so lint rules see exactly the types the compiler sees.

Timeline

  1. 2023

    Boshen Chen writes about the JavaScript Oxidation Compiler, a personal project (March)

  2. 2023

    Oxlint becomes generally available (December)

  3. 2024

    Transformer alpha; VoidZero founded to build Rolldown on Oxc

  4. 2025

    Minifier alpha (March), Oxlint 1.0 (June), Oxfmt alpha (December)

  5. 2026

    Oxfmt beta (February), JS plugins alpha (March), stable type-aware linting (July)

  6. 2026

    VoidZero joins Cloudflare (June); Oxc stays MIT-licensed

Sources11 · facts checked 9 October 2026

Improve this page on GitHub