# Oxlint ### 💥 BREAKING CHANGES -7730e14ast: [**BREAKING**] Refactor comment attachment storage (#27512) (camc314) -c904b61ast: [**BREAKING**] Add comment attachment storage (#27393) (camc314) ### 🚀 Features -bde9f69oxlint/lsp: Show config errors to LSP client (#25486) (Sysix) -3c361a7linter/unicorn/prefer-query-selector: Add `allowWithVariables` option (#27346) (Mikhail Baev) ### 🐛 Bug Fixes -82ecc43linter/sort-keys: Compare natural order like ESLint (#27579) (Dunqing) -598ac03linter/unicorn/prefer-bigint-literals: Unwrap redundant constructor call; don't auto-fix for lost precision (#25690) (Jacob Bandes-Storch) -2512213linter: Prevent conflicting type import fixes (#27409) (camc314) -2349a31oxfmt: Follow symlinked configs in discovery (#27389) (leaysgur) -6e573f9oxlint,oxfmt: Set stderr blocking (#27363) (leaysgur) ### ⚡ Performance -91b588clinter/oxc/bad-array-method-on-arguments: Check arguments references once (#26930) (camc314) -c5f47edlinter/plugins: Inline `firstCommentAtOrAfter` into call sites (#27539) (overlookmotel) -c5f9235linter/plugins: Use shift over multiply for powers of 2 (#27536) (overlookmotel) -8c57c5elinter: Share one source per file across type-aware diagnostics (#27462) (Max Schwenk) -19c227dminifier: Use ident when checking specific id names (#27208) (Armano) ### 📚 Documentation -98cc2b4linter/plugins: Improve documentation for `firstCommentAtOrAfter` (#27538) (overlookmotel) -3bb54f6linter: Update stale comment (#27519) (overlookmotel) -848a4e7linter: Update fix metadata for tsgolint rules that already provide fixes (#27408) (Mikhail Baev) # Oxfmt ### 💥 BREAKING CHANGES -1ef2888oxfmt: [**BREAKING**] Improve `--migrate prettier` (#27444) (leaysgur) -c2e6d5fformatter_toml: [**BREAKING**] Add `oxc_formatter_toml` crate wrapping `oxc-toml` (#27365) (leaysgur) ### 🚀 Features -ce4e8dcoxfmt: Support `overrides[].parser` -> `associations[].language` migration (#27475) (leaysgur) -a495e82oxfmt: Support `associations` config to specify language over filepath (#27437) (leaysgur) -77f8156oxfmt/lsp: Show root config errors to LSP client (#26014) (Sysix) -c1adce3oxfmt/lsp: Support astro language (#27388) (leaysgur) -4f024a1oxfmt: Support astro plugin in `--migrate prettier` (#27387) (leaysgur) -5db28faoxfmt: Support Astro via `prettier-plugin-astro@1.x` (#27386) (leaysgur) ### 🐛 Bug Fixes -76ec31bformatter_css: Support css-in-js placeholders in property names and conditions (#27640) (leaysgur) -99bb268formatter_css: Keep css-in-js placeholder as media type (#27639) (leaysgur) -372849eformatter: Fix crash on css-in-js comment containing interpolation (#27638) (leaysgur) -da692b8formatter: Wrap `export default class|function` consistently (#27628) (leaysgur) -21dee96formatter: Keep parens around `TSInstantiationExpression` before ! and export (#27626) (leaysgur) -b6eb914oxfmt: Normalize symlink targets in CLI snapshots (#27498) (camc314) -5dae56foxfmt/lsp: Return error on config resolving error (#26003) (Sysix) -676cc60formatter/jsdoc: Preserve paragraphs by checking `@description` tag width (#27439) (leaysgur) -2349a31oxfmt: Follow symlinked configs in discovery (#27389) (leaysgur) -db360deoxfmt: Load svelte plugin for svelte-in-mdx-in-md (#27369) (leaysgur) -6e573f9oxlint,oxfmt: Set stderr blocking (#27363) (leaysgur) -d730fddformatter_core: Leave blank frontmatter without dispatcher (#27359) (leaysgur) ### 📚 Documentation -4a28c91formatter_css: Clarify `missed-semicolon-accepted` divergence (#27433) (leaysgur) -408d87foxfmt: Simplify oxfmtrc docs (#27432) (leaysgur) -902e188oxfmt: Update how `embeddedLanguageFormatting` option works (#27362) (leaysgur) -37b3c48formatter_markdown: Fix DIVERGENCES.md examples and slug to match behavior (#27358) (leaysgur) Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com>
⚓ 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.