# Oxlint ### 🚀 Features -afe950dlinter/react: Update lint rules to accomodate changes in React 19.3 (#26571) (Connor Shea) ### 🐛 Bug Fixes -fb87ed7linter/unicorn/prefer-array-flat-map: Report `.filter().flatMap()` chains (#26626) (camc314) -336b654linter/unicorn/prefer-at: Report single-character substring calls (#26623) (camc314) -a5bba6dlinter/eslint/no-unused-vars: Respect rest params after-used option (#26579) (Bartok) -c1470a2linter/eslint/no-unused-vars: Preserve ambient implicit exports (#26582) (Dex Hunter) -9a469d2linter/unicorn/prefer-global-this: Preserve window event method references (#26611) (Dex Hunter) -aaff758linter/unicorn/prefer-default-parameters: Report violation for `??=` and `||=` (#26607) (Bartok) -2bed25alinter/unicorn/prefer-array-flat: Skip plain `concat` normalization (#26604) (im10furry) -72bc7f2oxlint: Replace backlashes path for "no js runtime" diagnostic (#26599) (Sysix) -1aa5ec1linter/typescript/prefer-for-of: Handle computed collections (#26584) (camc314) -1e90019linter/typescript: Mark `no-unnecessary-type-parameters` and `prefer-find` suggestions as implemented (#26586) (Mikhail Baev) -4231536linter: Compare label text in runtime optimization assertion (#26526) (camc314) -36d5534linter: Include file path in diagnostic assertion (#26525) (camc314) -31508b1parser: Reject return types on constructor overloads (#26523) (camc314) ### ⚡ Performance -1d681b0linter/react/jsx-pascal-case: Avoid temporary name segment vector (#26531) (camc314) -2ad7d49linter/promise/catch-or-return: Avoid temporary formatting vectors (#26505) (camc314) -203235blinter/jsx-a11y/no-static-element-interactions: Avoid role vector (#26504) (camc314) -2e95167linter/jsx-a11y/anchor-is-valid: Avoid temporary attribute vector (#26501) (camc314) -deafdbalinter/react/exhaustive-deps: Avoid temporary dependency vector (#26502) (camc314) -4f1627flinter/oxc/branches-sharing-code: Compute deletion spans lazily (#26500) (camc314) -c068fd2linter/react/jsx-curly-brace-presence: Avoid newline position allocation (#26499) (camc314) -ed4357clinter/eslint/no-restricted-properties: Skip empty configurations (#26497) (camc314) -92e41b7linter/oxc/no-barrel-file: Iterate module requests directly (#26498) (camc314) -5255ee3linter/unicorn/prefer-single-call: Avoid temporary argument vector (#26494) (camc314) -96ef365linter/unicorn/prefer-includes: Reduce suggestion allocations (#26492) (camc314) -a71fd7flinter/unicorn/no-new-buffer: Avoid temporary argument vector (#26491) (camc314) -11085e7linter/jsdoc/require-yields: Short-circuit JSDoc checks (#26488) (camc314) -9b1aff8linter/unicorn/no-useless-undefined: Skip calls without trailing undefined (#26481) (camc314) -1e5d5d7linter/eslint/no-unused-vars: Skip absent global declaration checks (#26457) (camc314) -403f899linter/eslint/no-undef: Check globals once per unresolved name (#26456) (camc314) -118adb0linter/eslint/no-restricted-imports: Avoid redundant import scans (#26455) (camc314) -ab848f2linter/eslint/no-useless-assignment: Skip tracking exported symbols (#26449) (camc314) -1b6e409linter/unicorn/prefer-object-from-entries: Avoid allocating configured paths (#26448) (camc314) -2206875linter/eslint/new-cap: Avoid unnecessary callee name allocations (#26447) (camc314) ### 📚 Documentation -b927e0alinter/typescript/await-thenable: Add missing lang for markdown doc comment (#26438) (Ari Perkkiö) # Oxfmt ### 🚀 Features -586f27aformatter_core: Add `prefix_align` builder and `Tag::(Start|End)Prefix` (#26520) (leaysgur) -dc45cc3formatter_test: Test Prettier dynamic snippet tests (#26469) (leaysgur) ### 🐛 Bug Fixes -d7e0c82formatter: Keep an enum member's trailing suppress comment (#26549) (leaysgur) -d2fe01eformatter: Unify suppress comment behavior (#26547) (leaysgur) -d35d89foxfmt: Skip shutdown delay on fixed Node 24 releases (#26518) (Pablo García) -aef8b4aformatter_css: Handle less-test-suites failures (#26513) (leaysgur) -9dbddcaformatter: Keep group flat for own-line comment in JSX (#26475) (leaysgur) -d226e6fformatter_yaml: Bump oxc-yaml-parser to 0.0.6 (#26472) (leaysgur) -8b41fc0formatter_yaml: Clamp `tab_width: 0` to 1 to keep semantics (#26471) (leaysgur) -dea2ba0formatter_core: Do not panic with align(0) (#26468) (leaysgur) -bf1d3f6formatter: Check `this_param` for simple parameters test (#26474) (leaysgur) -33cdc84formatter: Keep cast-target assignment and commented parameter patterns (#26429) (leaysgur) -876fbe3oxfmt: Expand `Fill` parts in tsx-in-vue (#26427) (leaysgur) ### 📚 Documentation -66fda4fformatter: Update AGENTS.md comment handling (#26551) (leaysgur) -41abcbaformatter: Note why jsx-test-suite snippets stay off (#26515) (leaysgur)
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.