This PR contains the following updates:
Release Notes
oxc-project/oxc (oxlint)
Compare Source
🚀 Features
bd74603 linter: Add support for vitest/valid-title rule (#12085) (Tyler Earls)
Compare Source
🐛 Bug Fixes
28e76ec oxlint: Resolving JS plugin failing when extends is used (#14556) (camc314)
v1.23.0: oxlint v1.23.0
Compare Source
[1.23.0] - 2025年10月13日
🚀 Features
452d128 linter: Node/no_process_env (#14536) (Kenneth Skovhus)
a9e1261 linter: Implement react-refresh/only-export-components (#14122) (Rintaro Itokawa)
a8d542b linter/no-duplicate-imports: Support allowSeparateTypeImports option (#14527) (camc314)
75a529c linter: Add run info about what functions rules implement (#13839) (camchenry)
4fbdef2 language_server: Support fmt.configPath configuration (#14502) (Sysix)
4d3ce2e language_server: Autodetect root .oxfmtrc.json (#14466) (Sysix)
🐛 Bug Fixes
fb4a20d language_server: Add whitespace for // oxlint-disable-next-line fix (#14356) (Sysix)
6fce7f4 oxlint/changelog: Remove duplicate changelog entries (#14528) (camc314)
74e52f3 linter/plugins: Resolve JS plugins with ESM condition names (#14541) (magic-akari)
9965676 linter/exhaustive-deps: Ignore empty strings passed to additionalHooks option (#14464) (Redas)
d0a8e3e linter: vue/no_required_prop_with_default called Option::unwrap() on a None value (#14491) (Sysix)
1192ea2 linter: Correct nextjs/no-typos path handling (#14480) (shulaoda)
2796b16 tsgolint: Pipe tsgolints stderr (#14477) (camc314)
🚜 Refactor
6440cde linter: Remove lifetime of Message (#14481) (Sysix)
f599bef language_server: Move Message to DiagnosticReport transformation to one place (#14447) (Sysix)
4f301de napi/parser, linter/plugins: Improve formatting of generated code (#14554) (overlookmotel)
68c0252 napi/parser, linter/plugins: Shorten generated raw transfer deserializer code (#14553) (overlookmotel)
20e884e linter: Store LintService in LintRunner (#14471) (Sysix)
9e9c5ba linter: Simplify built-in lint plugin checks (#14518) (camchenry)
1986e0f linter/no-ex-assign: Use let-else chain (#14526) (camc314)
ce9bcf0 linter/no-func-assign: Use let-else chain (#14525) (camc314)
a9cea7c language_server: Use FxHashSet for ServerLinter::extended_paths (#14517) (Sysix)
ea5838e linter/no-import-assign: Use let-else chain (#14524) (camc314)
f977700 language_server: Pass LintOptions to Worker::refresh_server_linter (#14510) (Sysix)
54b001f linter/no-new-require: Improve diagnostic message clarity (#14511) (shulaoda)
650ea68 linter: Improve nextjs/no-typos rule (#14476) (shulaoda)
📚 Documentation
198f2e9 linter: Fix code example for branches-sharing-code (#14514) (camc314)
d776a17 linter: Improve nextjs/no-typos rule documentation (#14470) (shulaoda)
⚡ Performance
b44a30e language_server: Transform Message to DiagnosticReport with one call (#14448) (Sysix)
31766fd linter/plugins: Provide loc via prototype (#14552) (overlookmotel)
aec0c08 linter: Allow analyzing node types in match blocks with guards (#14459) (camchenry)
9044187 linter: Skip running node-specific rule if file contains no relevant nodes (#14457) (camchenry)
422f54e linter: Only run rule run functions if implemented (#14454) (camchenry)
2c228ae liner: Use top-level match for no_obj_calls (#14523) (camchenry)
c49d891 linter: Use match for no_negated_condition (#14522) (camchenry)
e222fc2 linter: Use match for no_multi_assign (#14521) (camchenry)
4440516 linter: Refactor rules to take advantage of node type skipping (#14519) (camchenry)
78261d6 linter: Refactor no-invalid-fetch-options to be more easily analyzed (#14458) (camchenry)
🧪 Testing
8d8881d linter/plugins: Expand tests for module resolution of plugins (#14559) (overlookmotel)
33b6cde language_server: Add basic tests for WorkspaceWorker::did_change_configuration (#14531) (Sysix)
bfe1ecd language_server: Add tests for WorkspaceWorker::init_watchers (#14516) (Sysix)
💼 Other
v1.22.0: oxlint v1.22.0
Compare Source
[1.22.0] - 2025年10月08日
🚀 Features
9f9d25f linter/oxc: Implement branches-sharing-code (#14440) (camc314)
🐛 Bug Fixes
💼 Other
Compare Source
🐛 Bug Fixes
v1.20.0: oxlint v1.20.0
Compare Source
[1.20.0] - 2025年10月06日
🚀 Features
d16df93 linter: Support disable directives for type aware rules (#14052) (camc314)
f5c6acc linter: Add vue/no-export-in-script-setup rule (#14307) (Sysix)
353b153 linter: Implement eslint/no-param-reassign rule (#14341) (Matthew Davis)
a2914fe linter/plugins: Add loc field getter to all AST nodes (#14355) (overlookmotel)
07193c2 linter/plugins: Implement SourceCode#getAncestors (#14346) (overlookmotel)
c8de6fe linter/plugins: Add parent field to AST nodes (#14345) (overlookmotel)
5505a86 linter/plugins: Include range field in AST (#14321) (overlookmotel)
3656908 rust: Oxc-index-vec v4.0 (#14254) (Boshen)
1347de4 linter/plugins: Accept diagnostics with loc (#14304) (overlookmotel)
aefc8b3 linter/plugins: Implement SourceCode#getIndexFromLoc and getLocFromIndex (#14303) (overlookmotel)
93807db linter/plugins: Implement SourceCode#lines property (#14290) (overlookmotel)
2f8c985 linter/plugins: Implement SourceCode#visitorKeys property (#14289) (overlookmotel)
b69028f linter/plugins: Implement SourceCode#ast property (#14287) (overlookmotel)
d8d3d18 linter: Add vue/prefer-import-from-vue rule (#14284) (Sysix)
f0e760b linter: Add vue/define-props-destructuring rule (#14272) (Sysix)
bdf9010 linter/plugins: Add SourceCode API (#14281) (overlookmotel)
7f450fc linter/unicorn: Implement require-module-specifiers (#13089) (keita hino)
a1e7154 linter/unicorn: Implement prefer-classlist-toggle (#14262) (camc314)
8217dce linter/unicorn: Implement no-unnecessary-array-splice-count (#14255) (camc314)
3d5db4a linter/unicorn: Implement no-useless-error-capture-stack-trace (#14222) (camc314)
b3b482a linter/unicorn: Implement prefer-top-level-await (#14247) (camc314)
7931be8 linter/unicorn: Implement prefer-class-fields (#14245) (camc314)
a39434a linter/unicorn: Implement prefer-at (#14232) (camc314)
🐛 Bug Fixes
e605222 linter/no-useless-undefined: Correctly respect checkArguments option (#14369) (camc314)
f1bc608 linter: Fix flaky import/no_cycle test (#14328) (Boshen)
9a902c0 linter/plugins: Make range field non-optional on AST types (#14354) (overlookmotel)
0a42d7f tsgolint: Report errors if we fail to parse tsgolint diagnostic messages (#14301) (camc314)
42f8d7e linter/react-hooks: Fix diagnostic message for literal in dependency array (#14266) (camc314)
ece91c5 linter/react-hooks: Fix diagnostic message for duplicate dependency in array (#14265) (camc314)
864fa0e linter/no-unused-expression: False positive with satisfies expressions (#14259) (camc314)
adff069 language_server: Don't apply "ignore this rule" fixes for fixAll code action + command (#14243) (Sysix)
46cceb8 linter/rules-of-hooks: Correctly place primary span to fix disable directive (#14237) (camc314)
🚜 Refactor
1489376 napi/parser, linter/plugins: Minify walker code (#14376) (overlookmotel)
c8eeeb5 linter/plugins: Remove build-time dependency on napi/parser (#14374) (overlookmotel)
fb1a067 linter/plugins: Bundle walker and AST types map (#14373) (overlookmotel)
93d8164 linter/plugins: Export AST types direct from oxlint package (#14353) (overlookmotel)
230d996 linter/plugins: SourceCode#getText use range (#14352) (overlookmotel)
6e52bbd linter/plugins: Move location-related code into separate file (#14350) (overlookmotel)
13f1003 linter/plugins: Share ast between files (#14349) (overlookmotel)
00dde41 tsgolint: Make parsing TsGoLintMessage parsing errors an enum (#14300) (camc314)
fc314f5 tsgolint: Make MessageType parsing more idomatic (#14299) (camc314)
a24c36e language-server/tsgolint: Use an iterator for tsgolint message parsing (#14298) (camc314)
8be432a tsgolint: Use an iterator for tsgolint message parsing (#14297) (camc314)
57daa54 tsgolint: Remove always Some option wrapper (#14296) (camc314)
79eadf8 linter: Introduce LintRunner (#14051) (camc314)
65873ba linter/plugins: Add stubs for all SourceCode methods (#14285) (overlookmotel)
989ce2f linter/plugins: Convert Node type to interface (#14280) (overlookmotel)
891fc47 language_server: Share code for command oxc.fixAll and code action source.fixAll.oxc (#14244) (Sysix)
7fe930c language_server: Remove unused fixture files (#14246) (Sysix)
2b2c345 language-server: Move generate_inverted_diagnostics to error_with_position (#14118) (camc314)
⚡ Performance
fa3712d language_server: Create less ExternalPluginStores (#14378) (overlookmotel)
e75d42d napi/parser, linter/plugins: Remove runtime preserveParens option from raw transfer deserializers (#14338) (overlookmotel)
2e57351 linter/plugins: Initialize lineStartOffsets as [0] (#14302) (overlookmotel)
c27a393 linter/plugins: Deserialize AST on demand (#14288) (overlookmotel)
95a8cc4 linter/plugins: Use singleton for SourceCode (#14286) (overlookmotel)
🧪 Testing
0061ce7 linter: Add more tests for disable directives in partial loadable files (#14371) (camc314)
1387aaa linter/plugins: Test createOnce returning no visitor functions (#14279) (overlookmotel)
55ebb8b linter: Add test for disable_for_this_section fix (#14240) (Sysix)
a7e8662 linter: Port unicorn test cases to no-named-default (#14239) (camc314)
💼 Other
Compare Source
🚀 Features
b4d716f linter/plugins: Move custom JS plugin config to jsPlugins (#14133) (overlookmotel)
🐛 Bug Fixes
8879b5a linter/plugins: Add types export to npm/oxlint (#14219) (overlookmotel)
v1.18.0: oxlint v1.18.0
Compare Source
[1.18.0] - 2025年09月24日
This release should fix a critical memory leak when import plugin is enabled in IDEs.
🚀 Features
2481964 linter/exhaustive-deps: Add support for useEffectEvent (#14041) (Cody Olsen)
🐛 Bug Fixes
444fcf0 linter: Fix false positive in vue/no-required-prop-with-default (#14066) (yefan)
2186b28 linter: Fix Arc memory leak and lifecycle issues (#14049) (Boshen)
314c27d linter/plugins: definePlugin apply defineRule to rules (#14065) (overlookmotel)
7bd01ed linter/plugins: defineRule call createOnce lazily (#14062) (overlookmotel)
fb3e7e3 linter/plugins: defineRule accept visitor with no before / after hooks (#14060) (overlookmotel)
🚜 Refactor
⚡ Performance
ce538c7 linter/plugins: Load methods of globals into local vars (#14073) (overlookmotel)
c2f7459 language_server: Avoid cloning on message conversion (#14058) (Sysix)
🧪 Testing
2fd4b1e linter/plugins: Rename test (#14064) (overlookmotel)
f2b3934 linter/plugins: Test returning false from before hook skips visitation in ESLint (#14061) (overlookmotel)
b109419 linter/plugins: Align ESLint plugin with Oxlint (#14059) (overlookmotel)
Compare Source
🚀 Features
3e117c6 linter/plugins: Add defineRule API (#13945) (overlookmotel)
a14aa79 npm/oxlint: Convert to ES modules (#13876) (Boshen)
b52389a node: Bump engines field to require Node.js 20.19.0+ for ESM support (#13879) (Copilot)
53d04dd linter: Convert oxlint to NAPI app (#13723) (overlookmotel)
🚜 Refactor
bb040bc parser, linter: Replace .mjs files with .js (#14045) (overlookmotel)
7e0d736 linter/plugins: Rename --experimental-js-plugins to --js-plugins (#13860) (overlookmotel)
v1.16.0: oxlint v1.16.0
Compare Source
[1.16.0] - 2025年09月16日
🚀 Features
97c8d06 linter: Add preserve-caught-error rule (#13748) (孔辉)
8c19b18 linter/exhaustive-deps: Implement fixer for dep in global scope (#13783) (camc314)
06bce8f linter/exhaustive-deps: Implement fixer for missing dep (#13782) (camc314)
a8675f4 linter: Add eslint/class-methods-use-this rule (#12977) (Peter Cardenas)
db33196 parser: Adds typescript rule for empty argument list (#13730) (Karan Kiri)
2751193 linter: Add eslint/no-useless-computed-key rule (#13428) (yefan)
9a205d1 regex-parser: Parse simple TemplateLiterals (#13265) (Sysix)
🐛 Bug Fixes
a2c91cd linter: Drop rules to allow mutable access to ctx_host in run_external_rules (#13832) (camc314)
3af1e5d linter/no-unsafe-declaration-merging: Always mark first span as primary (#13830) (camc314)
1c43c7c linter: Keep message when merging composite fixes (#13827) (camc314)
26af302 linter/exhaustive-deps: Check stable value is on lhs of assignment expr (#13815) (camc314)
4bc12d0 linter/exhaustive-deps: Remove impossible comparison with parent kind (#13814) (camc314)
12baf5e linter/exhaustive-deps: Respect primary span when identifying disable directive location (#13781) (camc314)
fa7400a linter/no-undef: False positive with arguments in functions (#13763) (camc314)
50e6e3c editor: Restrict servers paths for oxc.path.server (#13740) (Sysix)
b45077d editor: Strip leading slash for bin path on windows (#13738) (Sysix)
8fa6227 editor: Don't allow oxc.path.server for untrusted workspaces (#13734) (Sysix)
56da114 linter/react/jsx-handler-names: Do not detect the function name within the inline-function's body block (#13456) (Takuji Shimokawa)
b2bc5b4 linter/react-perf/jsx-no-new-object-as-prop: Skip as/satisfies exprs (#13718) (camc314)
ab51394 raw_transfer: Disable layout assertions on some 32-bit platforms (#13716) (overlookmotel)
09428f6 linter/plugins: Remove outdated comment (#13691) (overlookmotel)
a294721 linter/plugins: Exit early if JS plugins enabled on unsupported platforms (#13689) (overlookmotel)
68a2280 linter/plugins: More graceful exit for --experimental-js-plugins CLI option (#13688) (overlookmotel)
🚜 Refactor
395d40d linter: Derive inmpls for PartialEq, Eq over manual ones (#13828) (camc314)
8e4cd8f linter/func-names: Use run_once over looping over all nodes (#13798) (camc314)
7f4e2fe eslint/func-names: Clean up implementation and improve documentation (#13601) (Antoine Zanardi)
137896a language_server: Split options for linting and formatting (#13627) (Sysix)
7346099 linter: Move oxlint application code into separate module (#13745) (overlookmotel)
6dd4107 linter: Remove #[cfg(test)] attributes from tester module (#13714) (overlookmotel)
c40c6ef linter/plugins: Directory for JS plugins-related code (#13701) (overlookmotel)
a0022c1 linter/plugins: Improve error messages for JS plugins (#13699) (overlookmotel)
1fd993f napi/oxlint: Rename napi/oxlint2 to napi/oxlint (#13682) (overlookmotel)
⚡ Performance
90c8286 linter: Detect node types from let..else statements (#13690) (camchenry)
08c05df semantic: Make CFG construction a compile-time feature (#13678) (Boshen)
🎨 Styling
99a7638 linter: Add comments + re-organise imports (#13715) (overlookmotel)
🧪 Testing
18a1145 linter: Add debug assertions for skipping rules (#13724) (camc314)
cb080de linter/no-unused-vars: Add test for non ASCII chars in JSX components (#13820) (camc314)
b6eba27 linter/no-undef: Add more test cases for arguments (#13764) (camc314)
fb2d087 linter: Set CWD for tests (#13722) (overlookmotel)
💼 Other
v1.15.0: oxlint v1.15.0
Compare Source
🚀 Features
b20b56d linter: Add vue/no-multiple-slot-args rule (#13579) (Sysix)
aafe08c linter: Add vue/define-emits-declaration rule (#13567) (Sysix)
2ed5059 linter: Add vue/define-props-declaration rule (#13566) (Sysix)
a718c23 linter: Add vue/valid-define-props rule (#13565) (Sysix)
75a673e editor: Support relative path for oxc.path.server (#13542) (Sysix)
4af886b linter: Add unicorn/no-array-reverse rule (#13530) (yefan)
🐛 Bug Fixes
fb9d0f4 language_server: Don't resend diagnostic on save, when typeAware is disabled and run is onType (#13604) (YongSeok Jang (장용석))
2f36350 editor: Add notice for a possible restart when fixing filename-case (#13557) (Sysix)
e17fccc linter: Update RuleRunner impl after merge (#13642) (camc314)
3d27c5b linter/no-unused-private-class-members: False positive with spread expr (#13634) (yefan)
8314ed5 linter/tsgolint: Correct comment (#13589) (camc314)
198243b semantic: Dont parse @ as jsdoc tags inside quotes (#13571) (Gwenn Le Bihan)
89084d7 linter/custom-plugins: Enforce exact matching for disable directives (#13538) (Copilot)
277c5e1 linter: Output eslint-plugin-vue for vue diagnostics (#13564) (Sysix)
34d3cde rust: Fix clippy issues (#13540) (Boshen)
5fccafc linter: unicorn/prefer-array-flat-map ignore React.Children (#13534) (Sysix)
7e78e39 linter: Don't panic when parsing regex with multiple parentheses (#13524) (Sysix)
0d867b1 linter: Skip running tsgolint when no files need type aware linting (#13502) (Copilot)
b677376 language_server: Include the diagnostic of the other linter (#13490) (Sysix)
e87d7bd linter: Parse regex inside new RegExp() with parentheses (#13448) (Sysix)
5990f17 linter: Change typescript/no-confusing-void-expression to pedantic (#13473) (Boshen)
🚜 Refactor
7775c21 linter/plugins: Remove oxlint2 Cargo feature (#13648) (overlookmotel)
8f37e88 linter: Update tsgolint payload (#13547) (camchenry)
2d53203 linter/plugins: Move tokio usage from oxc_linter to napi/oxlint2 (#13647) (overlookmotel)
6cd6be2 linter: Add --experimental-js-plugins CLI arg (#13658) (overlookmotel)
476729b linter: Simplify RuleRunner trait definition (#13637) (camchenry)
2f02ac6 linter/plugins: Remove disable_oxlint2 Cargo feature (#13626) (overlookmotel)
ff9e4fb linter/plugins: Use fixed-size allocators when ExternalLinter exists (#13623) (overlookmotel)
f9bff64 linter_codegen: Improve code style for collecting nodes (#13636) (camchenry)
babbaca all: Remove pub from modules with no exports (#13618) (overlookmotel)
91759c6 linter/plugins: Only use RawTransferFileSystem if JS plugins registered (#13599) (overlookmotel)
118020c linter/plugins: Discard ExternalLinter if no JS plugins registered (#13598) (overlookmotel)
8d30bce linter/tsgolint: Report an error if the tsgolint exe could not be found (#13590) (camc314)
bccc276 eslint/for-direction: Clean up implementation and improve documentation (#13532) (Antoine Zanardi)
1425da2 eslint/default-case-last: Simplify default case last check in switch statement (#13529) (Antoine Zanardi)
d245376 oxlint: Remove unused runner module (#13561) (camc314)
53f2fc1 eslint/default-case: Simplify implementation and enhance readability (#13430) (Antoine Zanardi)
6f15060 eslint/block-scoped-var: Clean up implementation and improve documentation (#13417) (Antoine Zanardi)
671e0fd language_server: Only store one instance of a diagnostic (#13514) (Sysix)
1b425d6 eslint/default-case-last: Simplify implementation and enhance readability (#13515) (Antoine Zanardi)
e4bbbce eslint/default-param-last: Simplify implementation and enhance readability (#13516) (Antoine Zanardi)
e0396fd linter: Remove static lifetime from disable directives function argument (#13492) (camc314)
📚 Documentation
eb1f167 linter: Note which rules require type info to run on rule page (#13675) (camc314)
e66f93b linter: Fix backtick formatting in no-return-wrap (#13633) (camc314)
⚡ Performance
e6a25e7 linter: Remove unnecessary should_run check (#13639) (camchenry)
f6a9687 linter: Store rules by AST type in a boxed array (#13578) (overlookmotel)
b81f081 linter: Reduce indirection (#13574) (overlookmotel)
a744aff linter: Skip rules that do not have any relevant node types (#13138) (camchenry)
🎨 Styling
🧪 Testing
58e6c94 oxlint: Add test for ignorePatterns whitelist (#13372) (Sysix)
Compare Source
🚀 Features
7fc4aef npm/oxlint: 'oxlint-tsgolint': '>=0.1.4' (Boshen)
Compare Source
🐛 Bug Fixes
02c779f npm/oxlint: Make oxlint-tsgolint truly optional (#13153) (Boshen)
v1.12.0: oxlint v1.12.0
Compare Source
[1.12.0] - 2025年08月17日
Announcing Oxlint Type-Aware Preview
🚀 Features
09b597f linter: Handle help message from tsgolint (#13143) (Boshen)
aecacae linter: Support ignorePatterns for nested configs (#12210) (Sysix)
c661bac linter: Add eslint/prefer-template rule (#13117) (yefan)
920e06f linter: Implement fixer for jsx_curly_brace_presence (#13005) (RoelGo)
1c79d02 linter: Add react/jsx-fragments rule (#12988) (Peter Cardenas)
a799982 linter/consistent-type-specifier-style: Add fixer for top-level style config (#13023) (Li Wei)
61112a3 linter: Add 36 new TypeScript ESLint rules with comprehensive test fixtures (#12893) (Copilot)
4ce252c linter: Add dangerous suggestion for jsx-a11y/tabindex-no-positive (#12963) (Sysix)
🐛 Bug Fixes
66a350e oxlint: Should type linting files after ignore (#13149) (Boshen)
81b0162 linter: Preserve json key order for oxlint --init (#13121) (Boshen)
f97791a linter/no-this-alias: Update NoThisAliasConfig default config (#13095) (camc314)
43b1c5a linter: Do not count type-aware rules, when not enabled (#13062) (Sysix)
618ee87 linter/array-callback-return: Fix handling of default case in switch statements for array-callback-return rule (#13081) (Li Wei)
c211d32 linter: Fix whitespace handling in disable directives (#13083) (Li Wei)
a0ccada tsgolint: Handle non-zero exit status from tsgolint process (#13087) (camc314)
b0558a4 linter: Prevent unsound use of Allocator across threads (#13032) (overlookmotel)
2d287d0 linter/no-unused-private-class-members: False positive with private member in compound assignments (#13053) (yefa
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.
Uh oh!
There was an error while loading. Please reload this page.
This PR contains the following updates:
^0.18.0->^1.0.0Release Notes
oxc-project/oxc (oxlint)
v1.25.0Compare Source
🚀 Features
bd74603linter: Add support for vitest/valid-title rule (#12085) (Tyler Earls)v1.24.0Compare Source
🐛 Bug Fixes
28e76ecoxlint: Resolving JS plugin failing whenextendsis used (#14556) (camc314)v1.23.0: oxlint v1.23.0Compare Source
[1.23.0] - 2025年10月13日
🚀 Features
452d128linter: Node/no_process_env (#14536) (Kenneth Skovhus)a9e1261linter: Implement react-refresh/only-export-components (#14122) (Rintaro Itokawa)a8d542blinter/no-duplicate-imports: SupportallowSeparateTypeImportsoption (#14527) (camc314)75a529clinter: Add run info about what functions rules implement (#13839) (camchenry)4fbdef2language_server: Supportfmt.configPathconfiguration (#14502) (Sysix)4d3ce2elanguage_server: Autodetect root.oxfmtrc.json(#14466) (Sysix)🐛 Bug Fixes
fb4a20dlanguage_server: Add whitespace for// oxlint-disable-next-linefix (#14356) (Sysix)6fce7f4oxlint/changelog: Remove duplicate changelog entries (#14528) (camc314)74e52f3linter/plugins: Resolve JS plugins with ESM condition names (#14541) (magic-akari)9965676linter/exhaustive-deps: Ignore empty strings passed toadditionalHooksoption (#14464) (Redas)d0a8e3elinter:vue/no_required_prop_with_defaultcalledOption::unwrap()on aNonevalue (#14491) (Sysix)1192ea2linter: Correctnextjs/no-typospath handling (#14480) (shulaoda)2796b16tsgolint: Pipe tsgolints stderr (#14477) (camc314)🚜 Refactor
6440cdelinter: Remove lifetime ofMessage(#14481) (Sysix)f599beflanguage_server: MoveMessagetoDiagnosticReporttransformation to one place (#14447) (Sysix)4f301denapi/parser, linter/plugins: Improve formatting of generated code (#14554) (overlookmotel)68c0252napi/parser, linter/plugins: Shorten generated raw transfer deserializer code (#14553) (overlookmotel)20e884elinter: StoreLintServiceinLintRunner(#14471) (Sysix)9e9c5balinter: Simplify built-in lint plugin checks (#14518) (camchenry)1986e0flinter/no-ex-assign: Use let-else chain (#14526) (camc314)ce9bcf0linter/no-func-assign: Use let-else chain (#14525) (camc314)a9cea7clanguage_server: UseFxHashSetforServerLinter::extended_paths(#14517) (Sysix)ea5838elinter/no-import-assign: Use let-else chain (#14524) (camc314)f977700language_server: PassLintOptionstoWorker::refresh_server_linter(#14510) (Sysix)54b001flinter/no-new-require: Improve diagnostic message clarity (#14511) (shulaoda)650ea68linter: Improve nextjs/no-typos rule (#14476) (shulaoda)📚 Documentation
198f2e9linter: Fix code example forbranches-sharing-code(#14514) (camc314)d776a17linter: Improvenextjs/no-typosrule documentation (#14470) (shulaoda)⚡ Performance
b44a30elanguage_server: TransformMessagetoDiagnosticReportwith one call (#14448) (Sysix)31766fdlinter/plugins: Providelocvia prototype (#14552) (overlookmotel)aec0c08linter: Allow analyzing node types in match blocks with guards (#14459) (camchenry)9044187linter: Skip running node-specific rule if file contains no relevant nodes (#14457) (camchenry)422f54elinter: Only run rule run functions if implemented (#14454) (camchenry)2c228aeliner: Use top-level match forno_obj_calls(#14523) (camchenry)c49d891linter: Use match forno_negated_condition(#14522) (camchenry)e222fc2linter: Use match forno_multi_assign(#14521) (camchenry)4440516linter: Refactor rules to take advantage of node type skipping (#14519) (camchenry)78261d6linter: Refactorno-invalid-fetch-optionsto be more easily analyzed (#14458) (camchenry)🧪 Testing
8d8881dlinter/plugins: Expand tests for module resolution of plugins (#14559) (overlookmotel)33b6cdelanguage_server: Add basic tests forWorkspaceWorker::did_change_configuration(#14531) (Sysix)bfe1ecdlanguage_server: Add tests forWorkspaceWorker::init_watchers(#14516) (Sysix)💼 Other
0082cdaoxlint: V1.23.0 (#14560) (Boshen)v1.22.0: oxlint v1.22.0Compare Source
[1.22.0] - 2025年10月08日
🚀 Features
9f9d25flinter/oxc: Implementbranches-sharing-code(#14440) (camc314)🐛 Bug Fixes
5c29bb6linter: Fix compile error with test target (#14449) (camc314)0dcdbd1oxlint: Bundle esquery (#14450) (camc314)💼 Other
b2af43aoxlint: V1.22.0 (#14451) (Boshen)v1.21.0Compare Source
🐛 Bug Fixes
6e8d2f6language_server: Ignore JS plugins (#14379) (overlookmotel)v1.20.0: oxlint v1.20.0Compare Source
[1.20.0] - 2025年10月06日
🚀 Features
d16df93linter: Support disable directives for type aware rules (#14052) (camc314)f5c6acclinter: Addvue/no-export-in-script-setuprule (#14307) (Sysix)353b153linter: Implement eslint/no-param-reassign rule (#14341) (Matthew Davis)a2914felinter/plugins: Addlocfield getter to all AST nodes (#14355) (overlookmotel)07193c2linter/plugins: ImplementSourceCode#getAncestors(#14346) (overlookmotel)c8de6felinter/plugins: Addparentfield to AST nodes (#14345) (overlookmotel)5505a86linter/plugins: Includerangefield in AST (#14321) (overlookmotel)3656908rust: Oxc-index-vec v4.0 (#14254) (Boshen)1347de4linter/plugins: Accept diagnostics withloc(#14304) (overlookmotel)aefc8b3linter/plugins: ImplementSourceCode#getIndexFromLocandgetLocFromIndex(#14303) (overlookmotel)93807dblinter/plugins: ImplementSourceCode#linesproperty (#14290) (overlookmotel)2f8c985linter/plugins: ImplementSourceCode#visitorKeysproperty (#14289) (overlookmotel)b69028flinter/plugins: ImplementSourceCode#astproperty (#14287) (overlookmotel)d8d3d18linter: Addvue/prefer-import-from-vuerule (#14284) (Sysix)f0e760blinter: Addvue/define-props-destructuringrule (#14272) (Sysix)bdf9010linter/plugins: AddSourceCodeAPI (#14281) (overlookmotel)7f450fclinter/unicorn: Implement require-module-specifiers (#13089) (keita hino)a1e7154linter/unicorn: Implement prefer-classlist-toggle (#14262) (camc314)8217dcelinter/unicorn: Implement no-unnecessary-array-splice-count (#14255) (camc314)3d5db4alinter/unicorn: Implement no-useless-error-capture-stack-trace (#14222) (camc314)b3b482alinter/unicorn: Implement prefer-top-level-await (#14247) (camc314)7931be8linter/unicorn: Implement prefer-class-fields (#14245) (camc314)a39434alinter/unicorn: Implement prefer-at (#14232) (camc314)🐛 Bug Fixes
e605222linter/no-useless-undefined: Correctly respectcheckArgumentsoption (#14369) (camc314)f1bc608linter: Fix flaky import/no_cycle test (#14328) (Boshen)9a902c0linter/plugins: Makerangefield non-optional on AST types (#14354) (overlookmotel)0a42d7ftsgolint: Report errors if we fail to parse tsgolint diagnostic messages (#14301) (camc314)42f8d7elinter/react-hooks: Fix diagnostic message for literal in dependency array (#14266) (camc314)ece91c5linter/react-hooks: Fix diagnostic message for duplicate dependency in array (#14265) (camc314)864fa0elinter/no-unused-expression: False positive with satisfies expressions (#14259) (camc314)adff069language_server: Don't apply "ignore this rule" fixes for fixAll code action + command (#14243) (Sysix)46cceb8linter/rules-of-hooks: Correctly place primary span to fix disable directive (#14237) (camc314)🚜 Refactor
1489376napi/parser, linter/plugins: Minify walker code (#14376) (overlookmotel)c8eeeb5linter/plugins: Remove build-time dependency onnapi/parser(#14374) (overlookmotel)fb1a067linter/plugins: Bundle walker and AST types map (#14373) (overlookmotel)93d8164linter/plugins: Export AST types direct fromoxlintpackage (#14353) (overlookmotel)230d996linter/plugins:SourceCode#getTextuserange(#14352) (overlookmotel)6e52bbdlinter/plugins: Move location-related code into separate file (#14350) (overlookmotel)13f1003linter/plugins: Shareastbetween files (#14349) (overlookmotel)00dde41tsgolint: Make parsingTsGoLintMessageparsing errors an enum (#14300) (camc314)fc314f5tsgolint: MakeMessageTypeparsing more idomatic (#14299) (camc314)a24c36elanguage-server/tsgolint: Use an iterator for tsgolint message parsing (#14298) (camc314)8be432atsgolint: Use an iterator for tsgolint message parsing (#14297) (camc314)57daa54tsgolint: Remove alwaysSomeoption wrapper (#14296) (camc314)79eadf8linter: IntroduceLintRunner(#14051) (camc314)65873balinter/plugins: Add stubs for allSourceCodemethods (#14285) (overlookmotel)989ce2flinter/plugins: ConvertNodetype to interface (#14280) (overlookmotel)891fc47language_server: Share code for commandoxc.fixAlland code actionsource.fixAll.oxc(#14244) (Sysix)7fe930clanguage_server: Remove unused fixture files (#14246) (Sysix)2b2c345language-server: Movegenerate_inverted_diagnosticstoerror_with_position(#14118) (camc314)⚡ Performance
fa3712dlanguage_server: Create lessExternalPluginStores (#14378) (overlookmotel)e75d42dnapi/parser, linter/plugins: Remove runtimepreserveParensoption from raw transfer deserializers (#14338) (overlookmotel)2e57351linter/plugins: InitializelineStartOffsetsas[0](#14302) (overlookmotel)c27a393linter/plugins: Deserialize AST on demand (#14288) (overlookmotel)95a8cc4linter/plugins: Use singleton forSourceCode(#14286) (overlookmotel)🧪 Testing
0061ce7linter: Add more tests for disable directives in partial loadable files (#14371) (camc314)1387aaalinter/plugins: TestcreateOncereturning no visitor functions (#14279) (overlookmotel)55ebb8blinter: Add test fordisable_for_this_sectionfix (#14240) (Sysix)a7e8662linter: Port unicorn test cases to no-named-default (#14239) (camc314)💼 Other
4bf6f69oxlint: V1.20.0 (#14381) (Boshen)v1.19.0Compare Source
🚀 Features
b4d716flinter/plugins: Move custom JS plugin config tojsPlugins(#14133) (overlookmotel)🐛 Bug Fixes
8879b5alinter/plugins: Add types export tonpm/oxlint(#14219) (overlookmotel)v1.18.0: oxlint v1.18.0Compare Source
[1.18.0] - 2025年09月24日
This release should fix a critical memory leak when import plugin is enabled in IDEs.
🚀 Features
2481964linter/exhaustive-deps: Add support foruseEffectEvent(#14041) (Cody Olsen)🐛 Bug Fixes
444fcf0linter: Fix false positive invue/no-required-prop-with-default(#14066) (yefan)2186b28linter: Fix Arc memory leak and lifecycle issues (#14049) (Boshen)314c27dlinter/plugins:definePluginapplydefineRuleto rules (#14065) (overlookmotel)7bd01edlinter/plugins:defineRulecallcreateOncelazily (#14062) (overlookmotel)fb3e7e3linter/plugins:defineRuleaccept visitor with nobefore/afterhooks (#14060) (overlookmotel)🚜 Refactor
56db8falinter: Move imports (#14085) (overlookmotel)a7dd0c7linter: Reduce scope of clippy attr (#14081) (overlookmotel)3a706a7linter: RenameLintRunnertoCliRunner(#14050) (camc314)⚡ Performance
ce538c7linter/plugins: Load methods of globals into local vars (#14073) (overlookmotel)c2f7459language_server: Avoid cloning on message conversion (#14058) (Sysix)🧪 Testing
2fd4b1elinter/plugins: Rename test (#14064) (overlookmotel)f2b3934linter/plugins: Test returningfalsefrombeforehook skips visitation in ESLint (#14061) (overlookmotel)b109419linter/plugins: Align ESLint plugin with Oxlint (#14059) (overlookmotel)v1.17.0Compare Source
🚀 Features
3e117c6linter/plugins: AdddefineRuleAPI (#13945) (overlookmotel)a14aa79npm/oxlint: Convert to ES modules (#13876) (Boshen)b52389anode: Bumpenginesfield to require Node.js 20.19.0+ for ESM support (#13879) (Copilot)53d04ddlinter: Convertoxlintto NAPI app (#13723) (overlookmotel)🚜 Refactor
bb040bcparser, linter: Replace.mjsfiles with.js(#14045) (overlookmotel)7e0d736linter/plugins: Rename--experimental-js-pluginsto--js-plugins(#13860) (overlookmotel)v1.16.0: oxlint v1.16.0Compare Source
[1.16.0] - 2025年09月16日
🚀 Features
97c8d06linter: Addpreserve-caught-errorrule (#13748) (孔辉)8c19b18linter/exhaustive-deps: Implement fixer for dep in global scope (#13783) (camc314)06bce8flinter/exhaustive-deps: Implement fixer for missing dep (#13782) (camc314)a8675f4linter: Add eslint/class-methods-use-this rule (#12977) (Peter Cardenas)db33196parser: Adds typescript rule for empty argument list (#13730) (Karan Kiri)2751193linter: Addeslint/no-useless-computed-keyrule (#13428) (yefan)9a205d1regex-parser: Parse simpleTemplateLiterals(#13265) (Sysix)🐛 Bug Fixes
a2c91cdlinter: Droprulesto allow mutable access toctx_hostinrun_external_rules(#13832) (camc314)3af1e5dlinter/no-unsafe-declaration-merging: Always mark first span as primary (#13830) (camc314)1c43c7clinter: Keep message when merging composite fixes (#13827) (camc314)26af302linter/exhaustive-deps: Check stable value is on lhs of assignment expr (#13815) (camc314)4bc12d0linter/exhaustive-deps: Remove impossible comparison with parent kind (#13814) (camc314)12baf5elinter/exhaustive-deps: Respect primary span when identifying disable directive location (#13781) (camc314)fa7400alinter/no-undef: False positive withargumentsin functions (#13763) (camc314)50e6e3ceditor: Restrict servers paths foroxc.path.server(#13740) (Sysix)b45077deditor: Strip leading slash for bin path on windows (#13738) (Sysix)8fa6227editor: Don't allowoxc.path.serverfor untrusted workspaces (#13734) (Sysix)56da114linter/react/jsx-handler-names: Do not detect the function name within the inline-function's body block (#13456) (Takuji Shimokawa)b2bc5b4linter/react-perf/jsx-no-new-object-as-prop: Skip as/satisfies exprs (#13718) (camc314)ab51394raw_transfer: Disable layout assertions on some 32-bit platforms (#13716) (overlookmotel)09428f6linter/plugins: Remove outdated comment (#13691) (overlookmotel)a294721linter/plugins: Exit early if JS plugins enabled on unsupported platforms (#13689) (overlookmotel)68a2280linter/plugins: More graceful exit for--experimental-js-pluginsCLI option (#13688) (overlookmotel)🚜 Refactor
395d40dlinter: Derive inmpls forPartialEq,Eqover manual ones (#13828) (camc314)8e4cd8flinter/func-names: Userun_onceover looping over all nodes (#13798) (camc314)7f4e2feeslint/func-names: Clean up implementation and improve documentation (#13601) (Antoine Zanardi)137896alanguage_server: Split options for linting and formatting (#13627) (Sysix)7346099linter: Moveoxlintapplication code into separate module (#13745) (overlookmotel)6dd4107linter: Remove#[cfg(test)]attributes fromtestermodule (#13714) (overlookmotel)c40c6eflinter/plugins: Directory for JS plugins-related code (#13701) (overlookmotel)a0022c1linter/plugins: Improve error messages for JS plugins (#13699) (overlookmotel)1fd993fnapi/oxlint: Renamenapi/oxlint2tonapi/oxlint(#13682) (overlookmotel)⚡ Performance
90c8286linter: Detect node types fromlet..elsestatements (#13690) (camchenry)08c05dfsemantic: Make CFG construction a compile-time feature (#13678) (Boshen)🎨 Styling
99a7638linter: Add comments + re-organise imports (#13715) (overlookmotel)🧪 Testing
18a1145linter: Add debug assertions for skipping rules (#13724) (camc314)cb080delinter/no-unused-vars: Add test for non ASCII chars in JSX components (#13820) (camc314)b6eba27linter/no-undef: Add more test cases forarguments(#13764) (camc314)fb2d087linter: Set CWD for tests (#13722) (overlookmotel)💼 Other
b99de17oxlint: V1.16.0 (#13833) (Boshen)v1.15.0: oxlint v1.15.0Compare Source
🚀 Features
b20b56dlinter: Addvue/no-multiple-slot-argsrule (#13579) (Sysix)aafe08clinter: Addvue/define-emits-declarationrule (#13567) (Sysix)2ed5059linter: Addvue/define-props-declarationrule (#13566) (Sysix)a718c23linter: Addvue/valid-define-propsrule (#13565) (Sysix)75a673eeditor: Support relative path foroxc.path.server(#13542) (Sysix)4af886blinter: Addunicorn/no-array-reverserule (#13530) (yefan)🐛 Bug Fixes
fb9d0f4language_server: Don't resend diagnostic on save, whentypeAwareis disabled and run is onType (#13604) (YongSeok Jang (장용석))2f36350editor: Add notice for a possible restart when fixingfilename-case(#13557) (Sysix)e17fccclinter: UpdateRuleRunnerimpl after merge (#13642) (camc314)3d27c5blinter/no-unused-private-class-members: False positive with spread expr (#13634) (yefan)8314ed5linter/tsgolint: Correct comment (#13589) (camc314)198243bsemantic: Dont parse@as jsdoc tags inside quotes (#13571) (Gwenn Le Bihan)89084d7linter/custom-plugins: Enforce exact matching for disable directives (#13538) (Copilot)277c5e1linter: Outputeslint-plugin-vuefor vue diagnostics (#13564) (Sysix)34d3cderust: Fix clippy issues (#13540) (Boshen)5fccafclinter:unicorn/prefer-array-flat-mapignoreReact.Children(#13534) (Sysix)7e78e39linter: Don't panic when parsing regex with multiple parentheses (#13524) (Sysix)0d867b1linter: Skip running tsgolint when no files need type aware linting (#13502) (Copilot)b677376language_server: Include the diagnostic of the other linter (#13490) (Sysix)e87d7bdlinter: Parse regex insidenew RegExp()with parentheses (#13448) (Sysix)5990f17linter: Changetypescript/no-confusing-void-expressionto pedantic (#13473) (Boshen)🚜 Refactor
7775c21linter/plugins: Removeoxlint2Cargo feature (#13648) (overlookmotel)8f37e88linter: Update tsgolint payload (#13547) (camchenry)2d53203linter/plugins: Movetokiousage fromoxc_lintertonapi/oxlint2(#13647) (overlookmotel)6cd6be2linter: Add--experimental-js-pluginsCLI arg (#13658) (overlookmotel)476729blinter: SimplifyRuleRunnertrait definition (#13637) (camchenry)2f02ac6linter/plugins: Removedisable_oxlint2Cargo feature (#13626) (overlookmotel)ff9e4fblinter/plugins: Use fixed-size allocators whenExternalLinterexists (#13623) (overlookmotel)f9bff64linter_codegen: Improve code style for collecting nodes (#13636) (camchenry)babbacaall: Removepubfrom modules with no exports (#13618) (overlookmotel)91759c6linter/plugins: Only useRawTransferFileSystemif JS plugins registered (#13599) (overlookmotel)118020clinter/plugins: DiscardExternalLinterif no JS plugins registered (#13598) (overlookmotel)8d30bcelinter/tsgolint: Report an error if the tsgolint exe could not be found (#13590) (camc314)bccc276eslint/for-direction: Clean up implementation and improve documentation (#13532) (Antoine Zanardi)1425da2eslint/default-case-last: Simplify default case last check in switch statement (#13529) (Antoine Zanardi)d245376oxlint: Remove unusedrunnermodule (#13561) (camc314)53f2fc1eslint/default-case: Simplify implementation and enhance readability (#13430) (Antoine Zanardi)6f15060eslint/block-scoped-var: Clean up implementation and improve documentation (#13417) (Antoine Zanardi)671e0fdlanguage_server: Only store one instance of a diagnostic (#13514) (Sysix)1b425d6eslint/default-case-last: Simplify implementation and enhance readability (#13515) (Antoine Zanardi)e4bbbceeslint/default-param-last: Simplify implementation and enhance readability (#13516) (Antoine Zanardi)e0396fdlinter: Removestaticlifetime from disable directives function argument (#13492) (camc314)📚 Documentation
eb1f167linter: Note which rules require type info to run on rule page (#13675) (camc314)e66f93blinter: Fix backtick formatting in no-return-wrap (#13633) (camc314)⚡ Performance
e6a25e7linter: Remove unnecessaryshould_runcheck (#13639) (camchenry)f6a9687linter: Store rules by AST type in a boxed array (#13578) (overlookmotel)b81f081linter: Reduce indirection (#13574) (overlookmotel)a744afflinter: Skip rules that do not have any relevant node types (#13138) (camchenry)🎨 Styling
e110476linter: Reformat code (#13573) (overlookmotel)🧪 Testing
58e6c94oxlint: Add test for ignorePatterns whitelist (#13372) (Sysix)v1.14.0Compare Source
🚀 Features
7fc4aefnpm/oxlint: 'oxlint-tsgolint': '>=0.1.4' (Boshen)v1.13.0Compare Source
🐛 Bug Fixes
02c779fnpm/oxlint: Makeoxlint-tsgolinttruly optional (#13153) (Boshen)v1.12.0: oxlint v1.12.0Compare Source
[1.12.0] - 2025年08月17日
Announcing Oxlint Type-Aware Preview
🚀 Features
09b597flinter: Handle help message from tsgolint (#13143) (Boshen)aecacaelinter: SupportignorePatternsfor nested configs (#12210) (Sysix)c661baclinter: Add eslint/prefer-template rule (#13117) (yefan)920e06flinter: Implement fixer for jsx_curly_brace_presence (#13005) (RoelGo)1c79d02linter: Add react/jsx-fragments rule (#12988) (Peter Cardenas)a799982linter/consistent-type-specifier-style: Add fixer fortop-levelstyle config (#13023) (Li Wei)61112a3linter: Add 36 new TypeScript ESLint rules with comprehensive test fixtures (#12893) (Copilot)4ce252clinter: Add dangerous suggestion forjsx-a11y/tabindex-no-positive(#12963) (Sysix)🐛 Bug Fixes
66a350eoxlint: Should type linting files after ignore (#13149) (Boshen)81b0162linter: Preserve json key order foroxlint --init(#13121) (Boshen)f97791alinter/no-this-alias: Update NoThisAliasConfig default config (#13095) (camc314)43b1c5alinter: Do not count type-aware rules, when not enabled (#13062) (Sysix)618ee87linter/array-callback-return: Fix handling of default case in switch statements for array-callback-return rule (#13081) (Li Wei)c211d32linter: Fix whitespace handling in disable directives (#13083) (Li Wei)a0ccadatsgolint: Handle non-zero exit status from tsgolint process (#13087) (camc314)b0558a4linter: Prevent unsound use ofAllocatoracross threads (#13032) (overlookmotel)2d287d0linter/no-unused-private-class-members: False positive with private member in compound assignments (#13053) (yefaConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.