NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3523 most downloaded on npm
Linter for the JavaScript Oxidation Compiler
Last release 6 days ago
28 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Most releases are documented
notes for 43 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
3 years old
213 releases · first in 2023
One column per quarter.
This release matched all linter rule names with their ESLint counterparts.
This release matched all linter rule names with their ESLint counterparts.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.4...oxlint_v0.2.5
Fixed linux installation failures.
Fixed linux installation failures.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.3...oxlint_v0.2.4
Nothing published for this version
`bash oxlint --react-perf-plugin `
eslint-plugin-react-perfoxlint --react-perf-plugin
Favor Array.from({ length: n }) and [onlyElement] instead of ambiguous new Array(arg)
[...new Array(n)] in no-useless-spread by @Boshen in https://github.com/oxc-project/oxc/pull/2124new_inline with flexible str by @mysteryven in https://github.com/oxc-project/oxc/pull/2106Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.2...oxlint_v0.2.3
Nothing published for this version
fix(parser): fix crash on TSTemplateLiteralType in function return position by @Boshen in https://github.com/oxc-project/oxc/pull/2089
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.1...oxlint_v0.2.2
Run npx --yes oxlint@latest from your terminal
npx --yes oxlint@latest from your terminalerasing-op in 0/0 case by @camc314 in https://github.com/oxc-project/oxc/pull/2009--timings feature--timings feature by @Boshen in https://github.com/oxc-project/oxc/pull/2049Token size from 16 to 12 bytes by @Boshen in https://github.com/oxc-project/oxc/pull/2010Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.0...oxlint_v0.2.1
Run npx --yes oxlint@latest from your terminal
npx --yes oxlint@latest from your terminaloxlint -c ./eslintrc.json
will use the rules field for rule configuration, as documented in ESLint's documentation.
Unfortunately, only the json format is supported right now.
The extends field will not take effect; normal -D and -A flags still apply.
To add / remove / configure a rule:
{
"rules": {
"no-empty": "off", // removes the rule
"no-empty": "error", // adds the rule
"no-empty": ["error", { "allowEmptyCatch": true }]` configures the rule
}
}
oxlint --nextjs-plugin
--max-warnings option by @Boshen in https://github.com/oxc-project/oxc/pull/1996Token size from 32 to 16 bytes by @Boshen in https://github.com/oxc-project/oxc/pull/1962TokenValue::BigInt from Token by @Boshen in https://github.com/oxc-project/oxc/pull/1924TokenValue::Number from Token by @Boshen in https://github.com/oxc-project/oxc/pull/1945TokenValue::RegExp from Token by @Boshen in https://github.com/oxc-project/oxc/pull/1926Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.1.2...oxlint_v0.2.0
Run npx --yes oxlint@latest from your terminal
npx --yes oxlint@latest from your terminal<script> tag is linted by default.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.1.1...oxlint_v0.1.2
Run npx --yes oxlint@latest from your terminal
npx --yes oxlint@latest from your terminal<script> and <script setup> are linted by default.
Frontmatter component script --- and all <script> tags are linted by default.
-c ./eslintrc.json will use the rules field for rule configuration, as documented in ESLint's documentation.
Unfortunately, only the json format is supported right now.
The extends field will not take effect; normal -D and -A flags still apply.
const-comparisons by @camc314 in https://github.com/oxc-project/oxc/pull/1817Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.0.22...oxlint_v0.1.1
Full Changelog: https://github.com/Boshen/oxc/compare/v0.1.0...
npx oxidation-compiler@latest check ./test.ts
npx oxidation-compiler@latest check ./test.ts
Full Changelog: https://github.com/Boshen/oxc/compare/v0.0.7...
no const comparisons by @camc314 in https://github.com/oxc-project/oxc/pull/1710
Reports errors when a comparison is redundant, or impossible.
A redundant check would be foo > 5 && foo > 10 An impossible check would be foo > 5 && foo < 5
<img width="1134" alt="Screenshot 2023-12-17 at 21 18 34" src="https://github.com/oxc-project/oxc/assets/18101008/3574199c-03fb-409c-8ffb-0dc1f685c347">
https://rust-lang.github.io/rust-clippy/master/index.html#/redundant_comparisons https://rust-lang.github.io/rust-clippy/master/index.html#/impossible
https://rust-lang.github.io/rust-clippy/master/index.html#/double_comparisons
<img width="1134" alt="Screenshot 2023-12-17 at 22 34 06" src="https://github.com/oxc-project/oxc/assets/18101008/ae268c31-132f-451d-9e24-d3f1c89e5b42">
10 - 20% faster than the previous version.
Sampling from an internal codebase (119900 files) - Before 12.8s vs 11.2s after.
rule.name() by @Boshen in https://github.com/oxc-project/oxc/pull/1759RuleEnum enum size from 168 to 16 bytes by @Boshen in https://github.com/oxc-project/oxc/pull/1783no useless catch by @camc314 in https://github.com/oxc-project/oxc/pull/1731no-unneccessary-await by @camc314 in https://github.com/oxc-project/oxc/pull/1732bad-remove-event-listener, merge rules by @camc314 in https://github.com/oxc-project/oxc/pull/1734prefer-string-starts-with-ends-with by @camc314 in https://github.com/oxc-project/oxc/pull/1730--rules is passed by @camc314 in https://github.com/oxc-project/oxc/pull/1747--import-plugin and -D correctness by @camc314 in https://github.com/oxc-project/oxc/pull/1729prefer-string-replace-all by @camc314 in https://github.com/oxc-project/oxc/pull/1796ThisParameter by @magic-akari in https://github.com/oxc-project/oxc/pull/1728this parameter error by @magic-akari in https://github.com/oxc-project/oxc/pull/1788Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.0.21...oxlint_v0.0.22
Added the configuration flag -c .eslintrc.json.
Added the configuration flag -c .eslintrc.json.
Oxlint will override all the enabled rules to what's specified in rules, e.g.
{
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"]
}
}
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.0.20...oxlint_v0.0.21
eslint-plugin-unicorn: prefer-modern-dom-apis (style) by @Ken-HH24 in https://github.com/oxc-project/oxc/pull/1646
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.0.19...oxlint_v0.0.20
Run npx --yes oxlint@latest from your terminal
npx --yes oxlint@latest from your terminalThis is a new category turned off by default. See it in action with
npx --yes oxlint@latest -D perf
Did you know that the reudce + ...spread combo is an O(n^2) operation?
Read https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/ for detailed explaination.
noAccumulatingSpread is also part of Biome since v1.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.0.18...oxlint_v0.0.19
eslint-plugin-jest: no-deprecated-function by @eryue0220 in https://github.com/oxc-project/oxc/pull/1316
npx --yes oxlint@latest from your terminaloxlint has 78 correctness rules turned on by default, with 164 rules in total.
--deny-warnings flag by @shannonrothe in https://github.com/oxc-project/oxc/pull/1452If you wish to fail CI with exit code 1, pin oxlint to a version and use the --deny-warnings flag:
npx oxlint@0.0.18 --deny-warnings
<img width="1053" alt="image" src="https://github.com/oxc-project/oxc/assets/1430279/a434c75a-7a30-4e42-a4ec-c003eab78ff6">
Notice $? prints 1.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.0.17...oxlint_v0.0.18
Run npx --yes oxlint@latest from your terminal
npx --yes oxlint@latest from your terminalThe final dot is no longer required by the CLI https://github.com/web-infra-dev/oxc/pull/1201:
npx oxlint@latest
This is the same as npx oxlint@latest ., where the current working directory will be scanned.
This is an alignment with ESLint v9, see https://eslint.org/blog/2023/11/whats-coming-in-eslint-9.0.0/#running-eslint-with-no-file-arguments
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.16...oxlint_v0.0.17
Run npx --yes oxlint@latest . from your terminal
npx --yes oxlint@latest . from your terminalUse the following cli flags to enable the import / jest / jsx-a11y plugins
Enable Plugins
--import-plugin Enable the experimental import plugin and detect ESM problems
--jest-plugin Enable the Jest plugin and detect test problems
--jsx-a11y-plugin Enable the JSX-a11y plugin and detect accessibility problems
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.15...oxlint_v0.0.16
fix(linter) Improve span for jsx key by @camc314 in https://github.com/web-infra-dev/oxc/pull/1040
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.14...oxlint_v0.0.15
npx --yes oxlint@latest . in your JavaScript / TypeScript codebase and see it complete in milliseconds. No configurations required.
Try it out!
Run
npx --yes oxlint@latest . in your JavaScript / TypeScript codebase and see it complete in milliseconds. No configurations required.npx oxlint@latest --help for usage instructions.npx oxlint@latest --rules for list of rules.strip_prefix by @Boshen in https://github.com/web-infra-dev/oxc/pull/1013Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.13...oxlint_v0.0.14
feat(linter): add typescript/no-explicit-any by @DonIsaac in https://github.com/web-infra-dev/oxc/pull/881
terminal_links to reduce sys calls by @Boshen in https://github.com/web-infra-dev/oxc/pull/911identifier_name_handler by @Boshen in https://github.com/web-infra-dev/oxc/pull/912match_keyword by @Boshen in https://github.com/web-infra-dev/oxc/pull/913parse_member_expression_rhs hot path by @Boshen in https://github.com/web-infra-dev/oxc/pull/896Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.12...oxlint_v0.0.13
feat(linter): implement unicorn/no-unnecessary-await
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.11...oxlint_v0.0.12
feat(linter): implement no-unsafe-declaration-merging
These two commits reduced total CPU instructions count by about 1%.
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.10...oxlint_v0.0.11
fix(cli): fix a race condition where the program will hang
Published with npm provernance Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.8...oxlint_v0.0.9
Published with npm provernance
<img width="785" alt="image" src="https://github.com/web-infra-dev/oxc/assets/1430279/cb61d307-065e-40d5-b77c-13e7a17cd3e9">
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.8...oxlint_v0.0.9
Run npx oxlint@latest . in your JavaScript / TypeScript codebase and see it complete in milliseconds. No configurations are required.
Run npx oxlint@latest . in your JavaScript / TypeScript codebase and see it complete in milliseconds. No configurations are required.
Oxlint now has 56 recommended rules by default, out of 82 in total.
Thanks to bpaf by @pacak, the binary size is 50 - 100KB smaller after the removal of clap.
Use --help, and also --help --help for detailed explanation.
<img width="956" alt="image" src="https://github.com/web-infra-dev/oxc/assets/1430279/039501ec-ecc9-406d-89e8-2ecda0d72272">
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.7...oxlint_v0.0.8
Fixed CLI --help not working propertly
--help not working propertlyRun npx oxlint@latest . in your own JavaScript / TypeScript codebase and see it complete in milliseconds. No configurations are required.
Oxlint now has 50 recommended run by default, out of 71 in total.
TIMING=1Performance of individual rules can now be tracked by using the same ESLint environment variable TIMING=1. See the ESLint documentation for details. This feature is initiated by @shannonrothe .
This binary is now built with stable instead nightly Rust. Thank you for the initiative @josephsavona. Thank you @strager and @suica who made significant contributions.
All features in this release are implemented by community contributors, thank you all for the contribution. A special thank you is extended to @DonIsaac, whose assistance was invaluable during this release.
Full Changelog: https://github.com/web-infra-dev/oxc/compare/oxlint_v0.0.6...oxlint_v0.0.7
This release adds 4 typescript-eslint rules without any performance impact:
This release adds 4 typescript-eslint rules without any performance impact:
• @typescript/no-empty-interface • @typescript/no-extra-non-null-assertion • @typescript/no-non-null-asserted-optional-chain • @typescript/no-unnecessary-type-constraint
There are now 45 rules in total.
Try it out! Run the following command In any of your repo:
npx oxlint@latest .
Full Changelog: https://github.com/Boshen/oxc/compare/oxlint_v0.0.4...oxlint_v0.0.5
cargo minsize task for tracking minification size by @Boshen in https://github.com/Boshen/oxc/pull/276--rules CLI flag by @shannonrothe in https://github.com/Boshen/oxc/pull/290Full Changelog: https://github.com/Boshen/oxc/compare/v0.0.5...
Try it out! In any of your repo:
Try it out! In any of your repo:
npx oxlint@latest .
This release adds 8 new rules (with 41 rules in total):
Full Changelog: https://github.com/Boshen/oxc/compare/oxlint_v0.0.4...oxlint_v0.0.5
CallArguments by @Boshen in https://github.com/Boshen/oxc/pull/265Full Changelog: https://github.com/Boshen/oxc/compare/v0.0.4...
Try it out! In any of your codebase:
Try it out! In any of your codebase:
npx oxlint@latest .
This release adds 5 new rules:
Full Changelog: https://github.com/Boshen/oxc/compare/oxlint_v0.0.3...oxlint_v0.0.4
Full Changelog: https://github.com/Boshen/oxc/compare/v0.0.3...
no_function_assign #220 @RiESAEX
Full Changelog: https://github.com/Boshen/oxc/compare/v0.0.2...
Try it out! In any of your codebase:
npx oxlint@latest .
This release supports 31 correctness rules:
npx oxlint@latest --rules
Correctness (31):
` npx oxidation-compiler@latest lint path-to-directory `
npx oxidation-compiler@latest lint path-to-directory
No configuration is required.
npx oxidation-compiler@latest lint -A all -D isolated-declaration src
Test262 Summary:
AST Parsed : 44000/44000 (100.00%)
Positive Passed: 44000/44000 (100.00%)
Negative Passed: 3915/3915 (100.00%)
--allow all --deny no-debugger to enable a single rulecargo-udeps, criptcmp and cargo-testest.Full Changelog: https://github.com/Boshen/oxc/compare/v0.0.1...
To test the linter on your codebase, try running
To test the linter on your codebase, try running
npx oxidation-compiler@latest lint path
where the path can be . , src, packages or any directory path.
The goal of this release is to showcase:
Your coding agent can read these notes before it upgrades. Set up the MCP server →