This PR contains the following updates:
Release Notes
oxc-project/oxc (oxlint)
Compare Source
🚀 Features
26f24d5 linter: Permit comments in.oxlintrc.json via json schema file (#15249) (Martin Leduc)
🐛 Bug Fixes
d6996d0 linter: Fix JSON schema to deny additional properties for categories enum. (#15257) (Connor Shea)9304f9f linter: Fix JSON schema to deny additional properties for plugins enum. (#15259) (Connor Shea)
📚 Documentation
84ef5ab linter: Avoid linebreaks for markdown links and update plugins docs in the configuration schema. (#15246) (Connor Shea)
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 whenextends 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: SupportallowSeparateTypeImports option (#14527) (camc314)75a529c linter: Add run info about what functions rules implement (#13839) (camchenry)4fbdef2 language_server: Supportfmt.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 toadditionalHooks option (#14464) (Redas)d0a8e3e linter:vue/no_required_prop_with_default calledOption::unwrap() on aNone value (#14491) (Sysix)1192ea2 linter: Correctnextjs/no-typos path handling (#14480) (shulaoda)2796b16 tsgolint: Pipe tsgolints stderr (#14477) (camc314)
🚜 Refactor
6440cde linter: Remove lifetime ofMessage (#14481) (Sysix)f599bef language_server: MoveMessage toDiagnosticReport 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: StoreLintService inLintRunner (#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: UseFxHashSet forServerLinter::extended_paths (#14517) (Sysix)ea5838e linter/no-import-assign: Use let-else chain (#14524) (camc314)f977700 language_server: PassLintOptions toWorker::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 forbranches-sharing-code (#14514) (camc314)d776a17 linter: Improvenextjs/no-typos rule documentation (#14470) (shulaoda)
⚡ Performance
b44a30e language_server: TransformMessage toDiagnosticReport with one call (#14448) (Sysix)31766fd linter/plugins: Provideloc 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 forno_obj_calls (#14523) (camchenry)c49d891 linter: Use match forno_negated_condition (#14522) (camchenry)e222fc2 linter: Use match forno_multi_assign (#14521) (camchenry)4440516 linter: Refactor rules to take advantage of node type skipping (#14519) (camchenry)78261d6 linter: Refactorno-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 forWorkspaceWorker::did_change_configuration (#14531) (Sysix)bfe1ecd language_server: Add tests forWorkspaceWorker::init_watchers (#14516) (Sysix)
💼 Other
v1.22.0: oxlint v1.22.0
Compare Source
[1.22.0] - 2025-10-08
🚀 Features
9f9d25f linter/oxc: Implementbranches-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: Addvue/no-export-in-script-setup rule (#14307) (Sysix)353b153 linter: Implement eslint/no-param-reassign rule (#14341) (Matthew Davis)a2914fe linter/plugins: Addloc field getter to all AST nodes (#14355) (overlookmotel)07193c2 linter/plugins: ImplementSourceCode#getAncestors (#14346) (overlookmotel)c8de6fe linter/plugins: Addparent field to AST nodes (#14345) (overlookmotel)5505a86 linter/plugins: Includerange field in AST (#14321) (overlookmotel)3656908 rust: Oxc-index-vec v4.0 (#14254) (Boshen)1347de4 linter/plugins: Accept diagnostics withloc (#14304) (overlookmotel)aefc8b3 linter/plugins: ImplementSourceCode#getIndexFromLoc andgetLocFromIndex (#14303) (overlookmotel)93807db linter/plugins: ImplementSourceCode#lines property (#14290) (overlookmotel)2f8c985 linter/plugins: ImplementSourceCode#visitorKeys property (#14289) (overlookmotel)b69028f linter/plugins: ImplementSourceCode#ast property (#14287) (overlookmotel)d8d3d18 linter: Addvue/prefer-import-from-vue rule (#14284) (Sysix)f0e760b linter: Addvue/define-props-destructuring rule (#14272) (Sysix)bdf9010 linter/plugins: AddSourceCode 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 respectcheckArguments option (#14369) (camc314)f1bc608 linter: Fix flaky import/no_cycle test (#14328) (Boshen)9a902c0 linter/plugins: Makerange 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 onnapi/parser (#14374) (overlookmotel)fb1a067 linter/plugins: Bundle walker and AST types map (#14373) (overlookmotel)93d8164 linter/plugins: Export AST types direct fromoxlint package (#14353) (overlookmotel)230d996 linter/plugins:SourceCode#getText userange (#14352) (overlookmotel)6e52bbd linter/plugins: Move location-related code into separate file (#14350) (overlookmotel)13f1003 linter/plugins: Shareast between files (#14349) (overlookmotel)00dde41 tsgolint: Make parsingTsGoLintMessage parsing errors an enum (#14300) (camc314)fc314f5 tsgolint: MakeMessageType 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 alwaysSome option wrapper (#14296) (camc314)79eadf8 linter: IntroduceLintRunner (#14051) (camc314)65873ba linter/plugins: Add stubs for allSourceCode methods (#14285) (overlookmotel)989ce2f linter/plugins: ConvertNode type to interface (#14280) (overlookmotel)891fc47 language_server: Share code for commandoxc.fixAll and code actionsource.fixAll.oxc (#14244) (Sysix)7fe930c language_server: Remove unused fixture files (#14246) (Sysix)2b2c345 language-server: Movegenerate_inverted_diagnostics toerror_with_position (#14118) (camc314)
⚡ Performance
fa3712d language_server: Create lessExternalPluginStores (#14378) (overlookmotel)e75d42d napi/parser, linter/plugins: Remove runtimepreserveParens option from raw transfer deserializers (#14338) (overlookmotel)2e57351 linter/plugins: InitializelineStartOffsets as[0] (#14302) (overlookmotel)c27a393 linter/plugins: Deserialize AST on demand (#14288) (overlookmotel)95a8cc4 linter/plugins: Use singleton forSourceCode (#14286) (overlookmotel)
🧪 Testing
0061ce7 linter: Add more tests for disable directives in partial loadable files (#14371) (camc314)1387aaa linter/plugins: TestcreateOnce returning no visitor functions (#14279) (overlookmotel)55ebb8b linter: Add test fordisable_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 tojsPlugins (#14133) (overlookmotel)
🐛 Bug Fixes
8879b5a linter/plugins: Add types export tonpm/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 foruseEffectEvent (#14041) (Cody Olsen)
🐛 Bug Fixes
444fcf0 linter: Fix false positive invue/no-required-prop-with-default (#14066) (yefan)2186b28 linter: Fix Arc memory leak and lifecycle issues (#14049) (Boshen)314c27d linter/plugins:definePlugin applydefineRule to rules (#14065) (overlookmotel)7bd01ed linter/plugins:defineRule callcreateOnce lazily (#14062) (overlookmotel)fb3e7e3 linter/plugins:defineRule accept visitor with nobefore /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 returningfalse frombefore hook skips visitation in ESLint (#14061) (overlookmotel)b109419 linter/plugins: Align ESLint plugin with Oxlint (#14059) (overlookmotel)
Compare Source
🚀 Features
3e117c6 linter/plugins: AdddefineRule API (#13945) (overlookmotel)a14aa79 npm/oxlint: Convert to ES modules (#13876) (Boshen)b52389a node: Bumpengines field to require Node.js 20.19.0+ for ESM support (#13879) (Copilot)53d04dd linter: Convertoxlint 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: Addpreserve-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: Addeslint/no-useless-computed-key rule (#13428) (yefan)9a205d1 regex-parser: Parse simpleTemplateLiterals (#13265) (Sysix)
🐛 Bug Fixes
a2c91cd linter: Droprules to allow mutable access toctx_host inrun_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 witharguments in functions (#13763) (camc314)50e6e3c editor: Restrict servers paths foroxc.path.server (#13740) (Sysix)b45077d editor: Strip leading slash for bin path on windows (#13738) (Sysix)8fa6227 editor: Don't allowoxc.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 forPartialEq,Eq over manual ones (#13828) (camc314)8e4cd8f linter/func-names: Userun_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: Moveoxlint application code into separate module (#13745) (overlookmotel)6dd4107 linter: Remove#[cfg(test)] attributes fromtester 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: Renamenapi/oxlint2 tonapi/oxlint (#13682) (overlookmotel)
⚡ Performance
90c8286 linter: Detect node types fromlet..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 forarguments (#13764) (camc314)fb2d087 linter: Set CWD for tests (#13722) (overlookmotel)
💼 Other
v1.15.0: oxlint v1.15.0
Compare Source
🚀 Features
🐛 Bug Fixes
fb9d0f4 language_server: Don't resend diagnostic on save, whentypeAware is disabled and run is onType (#13604) (YongSeok Jang (장용석))2f36350 editor: Add notice for a possible restart when fixingfilename-case (#13557) (Sysix)e17fccc linter: UpdateRuleRunner 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: Outputeslint-plugin-vue for vue diagnostics (#13564) (Sysix)34d3cde rust: Fix clippy issues (#13540) (Boshen)5fccafc linter:unicorn/prefer-array-flat-map ignoreReact.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 insidenew RegExp() with parentheses (#13448) (Sysix)5990f17 linter: Changetypescript/no-confusing-void-expression to pedantic (#13473) (Boshen)
🚜 Refactor
7775c21 linter/plugins: Removeoxlint2 Cargo feature (#13648) (overlookmotel)8f37e88 linter: Update tsgolint payload (#13547) (camchenry)2d53203 linter/plugins: Movetokio usage fromoxc_linter tonapi/oxlint2 (#13647) (overlookmotel)6cd6be2 linter: Add--experimental-js-plugins CLI arg (#13658) (overlookmotel)476729b linter: SimplifyRuleRunner trait definition (#13637) (camchenry)2f02ac6 linter/plugins: Removedisable_oxlint2 Cargo feature (#13626) (overlookmotel)ff9e4fb linter/plugins: Use fixed-size allocators whenExternalLinter exists (#13623) (overlookmotel)f9bff64 linter_codegen: Improve code style for collecting nodes (#13636) (camchenry)babbaca all: Removepub from modules with no exports (#13618) (overlookmotel)91759c6 linter/plugins: Only useRawTransferFileSystem if JS plugins registered (#13599) (overlookmotel)118020c linter/plugins: DiscardExternalLinter 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 unusedrunner 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: Removestatic 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 unnecessaryshould_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: Makeoxlint-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: SupportignorePatterns 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 fortop-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 forjsx-a11y/tabindex-no-positive (#12963) (Sysix)
🐛 Bug Fixes
66a350e oxlint: Should type linting files after ignore (#13149) (Boshen)81b0162 linter: Preserve json key order foroxlint --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 ([#&
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 becomes conflicted, 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 byMend Renovate. View therepository job log.
Uh oh!
There was an error while loading.Please reload this page.
This PR contains the following updates:
^0.15.0->^1.0.0Release Notes
oxc-project/oxc (oxlint)
v1.26.0Compare Source
🚀 Features
26f24d5linter: Permit comments in.oxlintrc.jsonvia json schema file (#15249) (Martin Leduc)🐛 Bug Fixes
d6996d0linter: Fix JSON schema to deny additional properties for categories enum. (#15257) (Connor Shea)9304f9flinter: Fix JSON schema to deny additional properties for plugins enum. (#15259) (Connor Shea)📚 Documentation
84ef5ablinter: Avoid linebreaks for markdown links and update plugins docs in the configuration schema. (#15246) (Connor Shea)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 ([#&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 becomes conflicted, 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 byMend Renovate. View therepository job log.