Oxc
The JavaScript Oxidation Compiler: Rust building blocks (parser, transformer, minifier, resolver) under Rolldown and Vite, plus the Oxlint linter and Oxfmt formatter.
- What it is
- Linters, formatters and type checkers (linters),Bundlers and dev servers
- 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-tsgolintpackage 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,
tsgolintis built directly on TypeScript 7, so lint rules see exactly the types the compiler sees.
Timeline
- 2023
Boshen Chen writes about the JavaScript Oxidation Compiler, a personal project (March)
- 2023
Oxlint becomes generally available (December)
- 2024
Transformer alpha; VoidZero founded to build Rolldown on Oxc
- 2025
Minifier alpha (March), Oxlint 1.0 (June), Oxfmt alpha (December)
- 2026
Oxfmt beta (February), JS plugins alpha (March), stable type-aware linting (July)
- 2026
VoidZero joins Cloudflare (June); Oxc stays MIT-licensed
- Boshen: Pursuit of performance on building a JavaScript compiler (Rust Magazine, Mar 2023)
- Oxc blog: Oxlint general availability (Dec 2023)
- Oxc blog: Transformer alpha (Sep 2024)
- Oxc blog: Minifier alpha (Mar 2025)
- Evan You (VoidZero): Announcing VoidZero (Oxc’s copyright and direction, Oct 2024)
- VoidZero: About (Boshen Chen, creator of Oxc)
- VoidZero: Announcing Oxlint 1.0 (June 2025)
- VoidZero: Announcing Oxfmt alpha (Dec 2025)
- Oxc blog: Oxfmt beta (Feb 2026)
- Oxc blog: Oxlint JS plugins alpha (Mar 2026)
- Oxc blog: Type-aware linting stable (July 2026)
- Evan You (VoidZero): VoidZero is joining Cloudflare (June 2026)
Sources11 · facts checked 9 October 2026
- Oxc docs: What is Oxc?
- Oxc docs: Oxlint (rule count, speed, defaults)
- Oxc docs: Oxfmt
- Oxc docs: Type-aware linting
- Oxc blog: Oxlint general availability (Shopify’s 75 minutes to 10 seconds, Dec 2023)
- VoidZero: Announcing Oxlint 1.0 (versioning, editor extensions, June 2025)
- Oxc blog: Oxfmt beta (Prettier conformance, import and Tailwind sorting, Feb 2026)
- Oxc blog: Oxlint JS plugins alpha (Mar 2026)
- Oxc blog: Type-aware linting stable (tsgolint on TypeScript 7, July 2026)
- VoidZero: Announcing Rolldown 1.0 (Oxc does Rolldown’s parsing and minification, May 2026)
- VoidZero: Announcing Vite+ 1.0 (`vp check` runs Oxfmt and Oxlint, Sep 2026)