# Oxlint ### 🚀 Features -6a0e19clinter/eslint/no-unmodified-loop-condition: Support `checkConditionalExpressions` option (#26249) (camc314) ### 🐛 Bug Fixes -562dd14jsx-a11y/anchor-has-content: Allow anchors passed as custom component props (#26360) (Mikhail Baev) -253cdb2linter/eslint/id-length: Exempt TS interface/type-literal members with never (#26310) (Pearce Ropion) -8c7ea76ast_visit: Account for trimmed source offsets (#26223) (Cameron) -5f9cffclinter/typescript/no-explicit-any: Fix rest parameter to `unknown[]` (#26279) (camc314) -4de9fa3linter/react/jsx-no-literals: Check nested JSX expression literals (#26253) (camc314) -07851b9parser: Fix debug assert failure when lexer error with tokens enabled (#26229) (overlookmotel) -9cee146oxlint/lsp: Don't try to parse fix message, always fallback (#26204) (Sysix) -a662c40linter/eslint/no-useless-assignment: Handle destructuring assignments (#25925) (camc314) -304bd9alinter/eslint/no-array-constructor: Handle ASI hazards in fixer (#26166) (Hamody We) -b41bb35linter: Qualify rules in rules output (#26250) (camc314) -895c685linter/typescript/no-extraneous-class: Avoid deleting class expressions (#26231) (camc314) -4ba33c8linter/eslint/no-unused-vars: Handle stored arrow references (#26225) (camc314) ### 🛡️ Security -9a612d5deps: Update npm packages (#26178) (renovate[bot]) # Oxfmt ### 💥 BREAKING CHANGES -2c9a947parser: [**BREAKING**] Reduce `MAX_LEN` to 256 bytes below `u32::MAX` (#26352) (overlookmotel) ### 🚀 Features -68e12abformatter_css: Follow the oxc-css-parser's acceptance line (#26337) (leaysgur) ### 🐛 Bug Fixes -f7acdc0formatter: Treat a JSDoc cast target as opaque in chain layouts (#26375) (leaysgur) -104061bformatter: Keep JSDoc cast parens with a comment inside them (#26374) (leaysgur) -3d00a76formatter_css: Keep comment inside important and simple-vars colon (#26370) (leaysgur) -172ddb6formatter_css: Keep a same-line line comment on its line (#26321) (leaysgur) -cafaf32formatter_css: Never drop comments inside an at-rule prelude (#26320) (leaysgur) -534a0feformatter_css: Keep a line comment on its comma's line (#26319) (leaysgur) -99cfd75formatter_css: Hide raw comment printing API, use strcut instead (#26316) (leaysgur) -2028896formatter_css: Preserve comments around SCSS/Less variable values (#26276) (leaysgur) -6752abcformatter_css: Keep leading comments before (#26272) (leaysgur) -3b054deformatter_graphql: Align comment printing after open `{` (#26271) (leaysgur) -b3c287aformatter_css: Fix SCSS bracket list printing (#26270) (leaysgur) -bac770aformatter_css: Preserve comment in SCSS paren comma list (#26269) (leaysgur) -c7b57efformatter_css: Print SCSS map consisntent with and without comment (#26268) (leaysgur) -063e2b6formatter_css: Preserve trailing comma in single-item scss lists (#26245) (leaysgur) -5f9580doxfmt: Bump prettier-plugin-tailwindcss (#26273) (leaysgur) ### ⚡ Performance -1cad286oxfmt: Match editorconfig once per file (#26239) (Yuji Sugiura) -260c5eboxfmt: Match `overrides` once per file (#26238) (leaysgur) -61565bcoxfmt: Share resolved `FormatConfig` via `Arc` instead of cloning per file (#26237) (leaysgur) ### 📚 Documentation -32084d4formatter_core: Clarify printer hard_line compression (#26312) (leaysgur) -4fabdccformatter,formatter_css,formatter_graphql,formatter_yaml: Update DIVERGENCES.md (#26267) (leaysgur) -26a1fa4formatter_core: Refine FORMATTER_POLICY (#26266) (leaysgur) ### 🛡️ Security -9a612d5deps: Update npm packages (#26178) (renovate[bot])
DIVERGENCES.md out from AGENTS.md (#26121)
⚓ Oxc
/oʊ ɛks siː/
The Oxidation Compiler is a collection of high-performance tools for JavaScript and TypeScript written in Rust.
Oxc is part of VoidZero's vision for a unified, high-performance toolchain for JavaScript. It powers Rolldown (Vite's bundler) and enables the next generation of ultra-fast development tools that work seamlessly together.
For more information, check out our website at oxc.rs.
* Oxidation is the chemical process that creates rust
🙋 Who's using Oxc?
Rolldown and Nuxt use Oxc for parsing. Rolldown also uses Oxc for transformation and minification. Nova, swc-node, and knip use oxc_resolver for module resolution. Preact, Shopify, ByteDance, and Shopee use oxlint for linting.
🔧 Lint or Format a Codebase
🧰 Build Tooling on Top of Oxc
- Parse JavaScript and TypeScript: Parser
- Transform TypeScript, JSX, and modern JavaScript: Transformer
- Minify JavaScript for production builds: Minifier
- Resolve modules for JavaScript and TypeScript: Resolver
✍️ Contribute
Check out some of the good first issues or ask us on Discord.
See CONTRIBUTING.md for guidance, or read the complete contributing guide on our website →
If you are unable to contribute by code, you can still participate by:
- Add a GitHub Star to the project
- Join us on Discord
- Follow me on X and post about this project
📚 Other Resources
Sponsored By
📖 License
Oxc is free and open-source software licensed under the MIT License.
Thank you to namespace.so for powering our CI/CD pipelines with fast, free macOS and Linux runners.
Oxc ports or copies code from other open source projects, their licenses are listed in Third-party library licenses.