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.
38b1c2e editor: Create a command to apply all auto-fixes for the current active text editor (#7672) (Nicholas Rayburn)
typescript/no_this_alias (#7836) (Boshen)export default references a type alias binding (#7813) (Dunqing)39b9c5d linter: [BREAKING] Remove unmaintained security plugin (#7773) (Boshen)
expectTypeOf, assert and assertType in vitest/expect-expect (#7742) (Yuichiro Yamashita)eslint/yoda (#7719) (dalaoshu)serde features (#7738) (Boshen)aho-corasick (#7718) (Boshen)react-jsx-uses-vars rules to no_unused_vars (#7731) (Tyler Earls)import/namespace (#7723) (dalaoshu)fd0935c linter: Change react/rules-of-hooks category to pedantic (#7691) (Boshen)
react/rules-of-hooks category to pedantic (#7691) (Boshen).js to .ts when resolving with tsconfig.json (#7675) (Boshen)const-comparisons for more cases (#7628) (camc314)ExportEntry::is_type (#7676) (Boshen).oxlintignore (#7566) (dalaoshu)yoda (#7679) (camc314)no-undef (#7670) (Boshen)no-unused-expressions from TS to eslint (#7624) (camc314)BigIntLiteral::raw field (#7660) (overlookmotel)is_same_reference to is_same_expression (#7654) (camc314)get_inner_expression in const-comparisons (#7627) (camc314)ModuleRecord::not_esm to has_module_syntax (#7579) (Boshen)ModuleRecord::export_default (#7578) (Boshen)ModuleRecord::exported_bindings_duplicated because it is a syntax error (#7577) (Boshen)ModuleRecord::export_default_duplicated because it is a syntax error (#7576) (Boshen)ModuleRecord (#7568) (Boshen)32f860d linter: Add support for ignorePatterns property within config file (#7092) (Nicholas Rayburn)
typescript/consistent-type-definitions (#7560) (dalaoshu)eslint/no-const-assign (Boshen)jsx_no_script_url doc failed to build (Boshen)OsString for module cache hash (#7558) (Boshen)FxDashMap for module cache (#7522) (overlookmotel)ModuleRecord (#7556) (Boshen)str::ends_with with array not slice (#7526) (overlookmotel)once_cell (#7510) (Boshen)FxDashMap (#7520) (overlookmotel)b04041d vscode: [BREAKING] Use .oxlintrc.json as default value for oxc.configPath (#7442) (Alexander S.)
.oxlintrc.json as default value for oxc.configPath (#7442) (Alexander S.)unicorn/prefer-negative-index (#6920) (Brian Liu)jsx-no-script-url (#6995) (Radu Baston)eslint/prefer-object-has-own (#7463) (dalaoshu)SymbolFlags::TypeLiteral (#7415) (Dunqing)4ad26b9 linter: Add no-promise-in-callback (#7307) (no-yan)
no-promise-in-callback (#7307) (no-yan)overrides globs relative to config path (#7407) (camchenry)unicorn/prefer-array-some (#7405) (Dmitry Zakharov)unicorn/prefer-array-some (#7411) (Dmitry Zakharov)const declaration (#7430) (Song Gao)7bf970a linter: [BREAKING] Remove tree_shaking plugin (#7372) (Boshen)
react/no-array-index-key (#6960) (BitterGourd)typescript/no-require-imports rule (#7315) (Dmitry Zakharov)x?.f<T>() (#7387) (Boshen)ChainExpression in optional TSInstantiationExpression (#7371) (Boshen)scope_id etc methods (#7394) (overlookmotel)ConfigService and Config (#7376) (Alexander S.)`json { "$schema": "./node_modules/oxlint/configuration_schema.json", "overrides": [ { "files": ["/packages/"], "rules": { "no-console": "warn" } } ]
overrides{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"overrides": [
{
"files": ["**/packages/**"],
"rules": {
"no-console": "warn"
}
}
]
}
react/exhaustive-depsoxlint -W exhaustive-deps
or
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"rules": {
"react/exhaustive-deps": "warn"
}
}
unicorn/prefer-string-raw lint rule (#7335) (Ryan Walker)unicorn/consistent-existence-index-check (#7262) (Ryan Walker)allowReject option to no-useless-promise-resolve-reject (#7274) (no-yan)promise/no-return-wrap (#7232) (no-yan)import/no-namespace rule (#7229) (Dmitry Zakharov)overrides config field (#6974) (DonIsaac)cwd property to LintRunner (#7352) (Alexander S.)jest/expect-expect (#7341) (dalaoshu)exhaustive-deps to react (#7251) (camc314)jsx-a11y/iframe-has-title (#7253) (dalaoshu)overrides config field (#6974) (DonIsaac)4dd9b60 editor/vscode: Replace existing output channel and trace output channel with a single LogOutputChannel (#7196) (Nicholas Rayburn)
import/first rule (#7180) (Dmitry Zakharov)import/unambiguous rule (#7187) (Dmitry Zakharov)is_method_call with parentheses and chain expression (#7095) (tbashiyy)ctx.source_range(comment.content_span()) API (#7155) (Boshen)ancestor_kinds iterator function (#7217) (camchenry)iter_parents to ancestors (#7216) (camchenry)ancestors to ancestor_ids (#7215) (camchenry)9fd9f4f linter: [BREAKING] Sync sindresorhus/globals; removed Object.prototype properties from builtin and es* globals (#6991) (Boshen)
import/no-commonjs rule (#6978) (Dmitry Zakharov)oxc-security/api-keys (#5938) (DonIsaac)react/style-prop-object (#6342) (Albert Kaaman)oxc/no-map-spread (#6751) (DonIsaac)eslint/prefer-object-has-own (#6905) (tomoya yanagibashi)no-array-constructor (#7067) (Naoya Yoshizawa)no-useless-spread (#6655) (dalaoshu)rules (#6983) (Boshen)LintPlugins from LintOptions to LintConfig (#6932) (DonIsaac)This release warns unmatched rules, for example
This release warns unmatched rules, for example
! The following rules do not match the currently supported rules:
| no-test-callback
| prefer-rest-params
| no-danger
jsx-a11y/no-access-key rule (#6781) (Tapan Prakash)--print-config all to print config file for project (#6579) (mysteryven)react/iframe-missing-sandbox ignores vanilla JS APIs (#6872) (DonIsaac)no-duplicates (#6748) (dalaoshu)clippy::wildcard_imports (#6860) (Boshen)dbe1972 linter: Import/no-cycle should turn on ignore_types by default (#6761) (Boshen)
eslint:no_empty_static_block rule (#6732) (Tapan Prakash)Deref<Target = Semantic> for LintContext (#6752) (DonIsaac)--fix test case (#6747) (Boshen)af25752 linter: Add unicorn/prefer-math-min-max (#6621) (Brian Liu)
unicorn/prefer-math-min-max (#6621) (Brian Liu)unicorn/consistent-empty-array-spread (#6695) (Brian Liu)eslint/no-unused-vars diagnostic messages (#6696) (DonIsaac)disable-directives (#6677) (dalaoshu)import/no-duplicates handles namespace imports correctly (#6694) (DonIsaac)run_on_jest_node for existing lint rules (#6722) (camchenry)run_on_jest_node to run rules on only jest nodes (#6721) (camchenry)Semantic to be passed for collecting Jest nodes (#6720) (camchenry)jest/valid-title fixer to use Span::shrink method (#6703) (Tapan Prakash)should_run implementations (#6666) (camchenry)import/no-duplicates (#6693) (DonIsaac)7f6b219 editor/vscode: [BREAKING] Unify configuration logic (#6630) (DonIsaac)
7f6b219 editor/vscode: [BREAKING] Unify configuration logic (#6630) (DonIsaac)
80266d8 linter: [BREAKING] Support plugins in oxlint config files (#6088) (DonIsaac)
ToBoolean, ToNumber, ToString (#6502) (Boshen)no-callback-in-promise (#6157) (dalaoshu)no_unsafe_optional_chaining to correctness (#6491) (Boshen)react/iframe-missing-sandbox (#6383) (Radu Baston)no-plusplus (#6376) (camchenry)import/no-duplicates (#6650) (Dmitry Zakharov)no-else-return (#6648) (dalaoshu)oxc/no-async-endpoint-handlers (#6614) (DonIsaac)no-zero-fractions (#6607) (dalaoshu)unicorn/filename-case (#6463) (camchenry)switch-case-braces (#6474) (dalaoshu)eslint/sort-keys to style category (#6377) (DonIsaac)RuleFixer methods (#6606) (DonIsaac)unicorn/prefer-dom-node-text-content (#6467) (camchenry)ToString::to_string with CompactStr in remaining rules (#6407) (camchenry)CompactStr in valid-title (#6406) (camchenry)CompactStr in prefer-lowercase-title (#6405) (camchenry)CompactStr for get_node_name in Jest rules (#6403) (camchenry)CompactStr in no-large-snapshots (#6402) (camchenry)CompactStr in no-hooks (#6401) (camchenry)CompactStr in expect-expect (#6400) (camchenry)CompactStr in no-console (#6399) (camchenry)CompactStr in no-bitwise (#6398) (camchenry)Regex for default ignore pattern (#6590) (camchenry)no-unknown-property (#6536) (camchenry)unicorn/filename-case (#6465) (camchenry)no_global_assign rule: reduce name lookups (#6460) (overlookmotel)eslint/no-useless-constructor (#6389) (DonIsaac)allocator.alloc(program) calls (#6571) (Boshen)95ca01c cfg: [BREAKING] Make BasicBlock::unreachable private (#6321) (DonIsaac)
95ca01c cfg: [BREAKING] Make BasicBlock::unreachable private (#6321) (DonIsaac)
5a73a66 regular_expression: [BREAKING] Simplify public APIs (#6262) (leaysgur)
no-throw-literal (#6144) (dalaoshu)no-else-return (#6349) (DonIsaac)no-else-return fixer fails when else has no trailing whitespace (#6348) (DonIsaac)unicorn/prefer-string-replace-all (#6263) (H11)prefer-namespace-keyword (#6230) (dalaoshu)no-control-regex (#6140) (camchenry)no-return-assign (#6128) (DonIsaac)no-useless-length-check (#6276) (camchenry)ContextHost and LintContext (#6272) (camchenry)eslint/getter-return (#6229) (DonIsaac)eslint-plugin-import rules (#6131) (dalaoshu)ast_node_id to node_id (#6305) (overlookmotel)no-control-regex (#6129) (camchenry)no-hex-escape (#6117) (camchenry)no-regex-spaces (#6063) (camchenry)no-useless-escape (#6062) (camchenry)no-empty-character-class (#6058) (camchenry)eslint/no-unused-vars options (#6228) (DonIsaac)bd8f786 linter: Rule and generic filters do not re-configure existing rules (#6087) (DonIsaac)
oxc/only-used-in-recursion (#6070) (camc314)eslint/for-direction docs (#6060) (DonIsaac)no-useless-escape: do not crash on backslash character (#6048) (camchenry)no-unexpected-multiline (#6039) (camchenry)no-unexpected-multiline (#6031) (DonIsaac)no-magic-numbers remove redudant checks in is_array_index (#6033) (Alexander S.)jest/prefer-hooks-in-order: rewrite rule to allocate less and iterate fewer times (#6030) (camchenry)only-used-in-recursion (#6029) (Boshen)jest/prefer-hooks-in-order: improve diagnostic messages (#6036) (camchenry)OxlintRules::override_rules tests (#6081) (DonIsaac)e3c8a12 linter: Fix panic in sort-keys (#6017) (Boshen)
import/no_cycle with ignoreTypes (#5995) (Boshen)no-fallthrough: Use string matching instead of Regex for default comment pattern (#6008) (camchenry)FxHashSet instead of std::collections::HashSet (#6001) (Cam McHenry)FxHashMap instead of std::collections::HashMap (#5993) (camchenry)d24985e linter: Add oxc-security/api-keys (#5906) (DonIsaac)
oxc-security/api-keys (#5906) (DonIsaac)no-useless-escape rule (#5974) (camchenry)no-unexpected-multiline rule (#5911) (camchenry)no-extend-native rule (#5867) (Cam McHenry)no-regex-spaces diagnostic (#5957) (camchenry)promise/avoid-new to style category (#5961) (DonIsaac)aho-corasick instead of regex for string matching in jsx-a11y/img-redundant-alt (#5892) (camchenry)nextjs/no-head-element (#5868) (Cam McHenry)unicorn/no-hex-escape (#5985) (camchenry)no-empty-character-class rule (#5980) (camchenry)eslint/no-regex-spaces (#5952) (camchenry)unicorn/prefer-string-starts-ends-with (#5949) (camchenry)unicorn/prefer-string-replace-all rule (#5943) (camchenry)LinterBuilder (#5714) (DonIsaac)with_trivias before build_with_jsdoc (#5875) (Boshen)IntoIterator for &AstNodes (#5873) (DonIsaac)no-empty-character-class (#5981) (camchenry)3bf7b24 linter: Make typescript/no-duplicate-enum-values a correctness rule (#5810) (DonIsaac)
typescript/no-duplicate-enum-values a correctness rule (#5810) (DonIsaac)no-danger-with-children rule (#5420) (Cam McHenry)AssignmentExpression for unicorn/consistent-function-scoping (#5675) (Arian94)DisableDirectives (#5798) (DonIsaac)ContextHost (#5795) (DonIsaac)Comment struct (#5783) (Boshen)GetSpan requirement to Gen trait (#5772) (Boshen)override_rule to OxlintRules (#5708) (DonIsaac)OxlintConfig to Oxlintrc (#5707) (DonIsaac)LintPlugins (#5706) (DonIsaac)Option syntax (#5735) (overlookmotel)no_plus_plus (#5730) (IWANABETHATGUY)OxlintConfig to Oxlintrc (#5707) (DonIsaac)4b04f65 linter: Implement no-plusplus rule (#5570) (Cam McHenry)
no-plusplus rule (#5570) (Cam McHenry)Serialize for OxlintConfig (#5594) (DonIsaac)eslint/no-invalid-regexp (#5443) (Boshen)react/no_set_state + react/no_string_refs rules find correct parent (#5615) (overlookmotel)cow_replace instead of replace (#5643) (dalaoshu)eslint/no_shadow_restricted_names use run_on_symbol (#5618) (overlookmotel)react/no_set_state + react/no_string_refs rules reduce iteration over ancestors (#5616) (overlookmotel)jsx_key slightly faster (#5585) (Boshen)should_run to check path only once to nextjs/no_typos (#5584) (Boshen)cow_utils instead (#5664) (dalaoshu)LintFilter (#5685) (DonIsaac)OxlintOptions (#5659) (DonIsaac)std::ptr::eq (#5649) (overlookmotel)ContentHash for no_duplicate_case; remove calculate_hash (#5648) (Boshen)OxlintConfig (#5595) (DonIsaac)Rule trait default methods (#5619) (overlookmotel)Rule trait method params (#5617) (overlookmotel)LintServiceOptions private (#5593) (DonIsaac)IsGlobalReference trait (#5672) (Boshen)- 26d9235 Enable clippy::ref_as_ptr (#5577) (夕舞八弦)oxc/no-async-await (#5550) (DonIsaac)Nothing published for this version
023c160 linter: Impl Serialize for OxlintConfig (#5594) (DonIsaac)
Serialize for OxlintConfig (#5594) (DonIsaac)be3a432 linter: Implement typescript/no-magic-numbers (#4745) (Alexander S.)
sort-vars rule (#5430) (Jelle van der Waa)erasing-op (#5377) (camc314)self-closing-comp (#5415) (Jelle van der Waa)getter-return rule (#5517) (Cam McHenry)tree_shaking/no_side_effects_in_initialization handle JSX correctly (#5450) (overlookmotel)eslint/radix rule correctly check for unbound symbols (#5446) (overlookmotel)Examples for linter rules (#5513) (dalaoshu)Example for linter rules (#5479) (heygsc)oxc/no-async-await (#5549) (DonIsaac)eslint/radix rule (#5445) (overlookmotel)no_div_regex rule. (#5417) (rzvxa)react/jsx_no_undef rule get_member_ident do not return Option (#5411) (overlookmotel)package.json files (#5542) (overlookmotel)f81e8a1 linter: Add oxc/no-async-endpoint-handlers (#5364) (DonIsaac)
oxc/no-async-endpoint-handlers (#5364) (DonIsaac)no-accumulating-spread loop diagnostic (#5375) (camc314)double-comparisons (#5378) (camc314)spec-only rule (#5124) (Jelle van der Waa)prefer-type-error (#5311) (camc314)react/jsx_no_undef faster check for unbound references (#5349) (overlookmotel)jsx_a11y/anchor_is_valid rule (#5341) (overlookmotel)react/jsx_no_undef use loop instead of recursion (#5347) (overlookmotel)unicorn/consistent_function_scoping (#5351) (overlookmotel)react/jsx_no_useless_fragment (#5350) (overlookmotel)nextjs/no_script_component_in_head rule (#5338) (overlookmotel)react/jsx_no_target_blank rule (#5342) (overlookmotel)jsx_a11y/aria_activedescendant_has_tabindex rule (#5340) (overlookmotel)erasing-op (#5376) (camc314)no-accumulating-spread in loops (#5374) (camc314)no-accumulating-spread (#5373) (camc314)6633972 linter: Add fixer for no-empty (#5276) (camc314)
no-empty (#5276) (camc314)no-var (#5144) (camc314)label-has-associated-control (#5163) (Billy Levin)throw-new-error (#5275) (camc314)prefer-date-now (#5147) (camc314)prefer-jest-mocked creates invalid LHS expressions (#5243) (camc314)NullLiteral within ReturnStatement (#5247) (Dunqing)This release introduces no-unused-vars as a correctness rule and parsing regular expressions for syntax errors, both may produce false positives. Feel
This release introduces no-unused-vars as a correctness rule and parsing regular expressions for syntax errors, both may produce false positives. Feel free to submit an issue.
no-unused-vars correctness (#5081) (DonIsaac)jsx-props-no-spread-multi (#5145) (camc314)require-array-join-separator (#5152) (camc314)prefer-set-size (#5149) (camc314)prefer-array-some (#5153) (camc314)prefer-array-flat (#5143) (camc314)prefer-string-slice (#5150) (Cameron)no-redundant-roles (#5146) (Cameron)prefer-regexp-test (#5151) (Cameron)text-encoding-identifier-case (#5154) (Cameron)prefer-each (#5203) (dalaoshu)no-hex-escape fixer removing regex flags (#5137) (Cameron)no-null (#5176) (DonIsaac)no-null (#5175) (Don Isaac)no-null (#5172) (DonIsaac)span0 (#5209) (dalaoshu)eslint/no_redeclare rule use run_on_symbol not run_once (#5201) (overlookmotel)no-null (#5174) (DonIsaac)no-null (#5173) (DonIsaac)2292606 linter: Typescript-eslint/no-wrapper-object-types (#5022) (camc314)
await (#5083) (Don Isaac)argsIgnorePattern the same default behavior as varsIgnorePattern (#5018) (DonIsaac)type specifier not deleted for type imports (#5029) (DonIsaac)>>, << and >>> (#4932) (mysteryven)Vecs (#4963) (overlookmotel)flag vars to flags (#5028) (overlookmotel)97e38cd linter: Add fixer for unicorn/prefer-optional-catch-binding (#4867) (heygsc)
subschemas.all_of (#4800) (mysteryven)-D all (Boshen)subschemas.all_of (#4800) (mysteryven)3d40528 linter: Add fix emoji to rules table and doc pages (#4715) (DonIsaac)
eslint-plugin-promise/no-return-in-finally, prefer-await-to-then rule (#4318) (Jelle van der Waa)eslint/getter-return (#4814) (IWANABETHATGUY)9df7b56 jsx-a11y/no-autofocus: Implement fixer support (#4171) (Jelle van der Waa)
Oxlint now contains 400 rules.
a11y/lang. (#4630) (rzvxa)oxlint allocator cfg (#4527) (overlookmotel)Cow and CompactStr instead of String (#4603) (DonIsaac)no_shadow_restricted_names only look up name in hashmap once (#4472) (overlookmotel)nextjs:no_duplicate_head rule (#4465) (overlookmotel)1f8968a linter: Add eslint-plugin-promise rules: avoid-new, no-new-statics, params-names (#4293) (Jelle van der Waa)
None fix (#4210) (DonIsaac)fb549e1 linter: Add vitest/no-focused-tests rule (#4178) (mysteryven)
get_enclosing_function (#4121) (DonIsaac)no-unused-labels (#4123) (Don Isaac)no-single-promise-in-promise-methods rule; (#4094) (DonIsaac)Cow<'static, str> over String (#4175) (DonIsaac)1681b11 linter: Eslint-plugin-jest/consistent-test-it (#4053) (cinchen)
b257d53 linter: Support report @typescript-eslint/consistent-type-imports (#3895) (mysteryven)
@typescript-eslint/consistent-type-imports (#3895) (mysteryven)Span. (#4010) (rzvxa)c26975a linter: Only show the filename for max-lines (#3966) (Boshen)
3ae2628 linter: Change no-import-assign to correctness (#3928) (Boshen)
no-import-assign to correctness (#3928) (Boshen)IdentifierName check (#3822) (Boshen)Sort imports via oxlint --fix -D sort-imports
Sort imports via oxlint --fix -D sort-imports
eslint/sort-imports rule (#3568) (Wang Wenzhe)no_unreachable rule. (#3238) (rzvxa)1fb9d23 linter: Add fixer for no-useless-fallback-in-spread rule (#3544) (Don Isaac)
require-await false positives in ForOfStatement. (#3457) (rzvxa)require-await by @todor-a in https://github.com/oxc-project/oxc/pull/3406
require-await by @todor-a in https://github.com/oxc-project/oxc/pull/3406eslint-plugin-unicorn/no-magic-array flat depth by @camc314 in https://github.com/oxc-project/oxc/pull/3411@typescript-eslint/consistent-indexed-object-style by @todor-a in https://github.com/oxc-project/oxc/pull/3126oxc/no-async-await rule by @mysteryven in https://github.com/oxc-project/oxc/pull/3438oxc/no-const-enum rule by @mysteryven in https://github.com/oxc-project/oxc/pull/3435oxc/no-rest-spread-properties rule by @mysteryven in https://github.com/oxc-project/oxc/pull/3432eslint-plugin-jest/prefer-hooks-on-top by @eryue0220 in https://github.com/oxc-project/oxc/pull/3437eslint-plugin-jest/require-top-level-describe by @eryue0220 in https://github.com/oxc-project/oxc/pull/3439no-div-regex by @jelly in https://github.com/oxc-project/oxc/pull/3442no-useless-concat by @jelly in https://github.com/oxc-project/oxc/pull/3363Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.4.1...oxlint_v0.4.2
schemars to render code snippet in markdown (#3417) (Boshen)fix(parser): fix lexer error while parsing parenthesized arrow expressions by @Boshen in https://github.com/oxc-project/oxc/pull/3400
The previous version refactored some parsing code around arrow expressions, which failed to parse the following snippet correctly
(/\./.exec())
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.4.0...oxlint_v0.4.1
The --deny or -D flag in the CLI, and the "error" severity setting in the configuration file will now set linter diagnostics to be an "error" and exit
The --deny or -D flag in the CLI, and the "error" severity setting in the configuration file will now set linter diagnostics to be an "error" and exit the program with exit code 1.
Previously, these flags had no effect, and all linter diagnostics were reported as warnings.
This means in CI, oxlint --deny-warnings is no longer needed for exit code 1 if oxlint -D correctness is set.
To restore the previous "report as warning" behaviour, the --warn or -W flag is added to the CLI, and the "warn" severity in the configuration file will take into effect.
deepscan rules are now "oxc" rules, because there is no "deepscan" plugin in the eslint ecosystem and this caused some confusion.
We added the Oxlint Ecosystem CI to maximize ecosystem compatibility, reduce churn, and minimize break-after-release
--disable-oxc-plugin by @Boshen in https://github.com/oxc-project/oxc/pull/3328--disable-react/unicorn/typescript-plugin by @Boshen in https://github.com/oxc-project/oxc/pull/3305The default rule set enables some plugins by default, the following CLI arguments are added for disabling them:
--disable-react-plugin--disable-unicorn-plugin--disable-oxc-plugin--disable-typescript-pluginTwo notable new rules that are under experiment but worth a try:
oxlint --import-plugin -D no-barrel-file
Loading a lot of modules is slow for runtimes and bundlers.
<img width="600" alt="image" src="https://github.com/oxc-project/oxc/assets/1430279/964d8615-a5c2-4934-a1e4-a6f8b023e199">
To change the threshhold:
oxlint -c oxlintrc.json --import-plugin -D no-barrel-file
{
"rules": {
"oxc/no-barrel-file": ["error", {
"threshold": 10
}]
}
}
See Speeding up the JavaScript ecosystem - The barrel file debacle for background reading.
oxlint -D rules-of-hooks
Enforce the React Rules of Hooks.
eslint-plugin-jest/no-duplicate-hooks by @eryue0220 in https://github.com/oxc-project/oxc/pull/3358default-case rule by @jelly in https://github.com/oxc-project/oxc/pull/3379no-new by @jelly in https://github.com/oxc-project/oxc/pull/3368prefer-exponentiation-operator by @jelly in https://github.com/oxc-project/oxc/pull/3365symbol-description by @jelly in https://github.com/oxc-project/oxc/pull/3364jsdoc/require-returns-description by @leaysgur in https://github.com/oxc-project/oxc/pull/3397jest/expect-expect by @mysteryven in https://github.com/oxc-project/oxc/pull/3332jest/no_conditional_expect by @mysteryven in https://github.com/oxc-project/oxc/pull/3330usize for RuleEnum hash by @Boshen in https://github.com/oxc-project/oxc/pull/3336FxHashSet for not_parenthesized_arrow by @Boshen in https://github.com/oxc-project/oxc/pull/3344parse_simple_arrow_function_expression by @Boshen in https://github.com/oxc-project/oxc/pull/3349Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.5...oxlint_v0.4.0
feat(linter): add use-isnan fixer for (in)equality operations by @DonIsaac in https://github.com/oxc-project/oxc/pull/3284
CallExpression by @Boshen in https://github.com/oxc-project/oxc/pull/3294DecoratorCallExpression when Arguments contains MemberExpression by @Boshen in https://github.com/oxc-project/oxc/pull/3265ASTBuilder methods by @Boshen in https://github.com/oxc-project/oxc/pull/3295Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.4...oxlint_v0.3.5
remove deprecated eslint v9 rules no-return-await and no-mixed-operators by @Boshen in https://github.com/oxc-project/oxc/pull/3188
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.3...oxlint_v0.3.4
--symlinks to allow symbolic walking by @Boshen in https://github.com/oxc-project/oxc/pull/3244--format github for github check annotation by @Boshen in https://github.com/oxc-project/oxc/pull/3191no-return-await and no-mixed-operators by @Boshen in https://github.com/oxc-project/oxc/pull/3188prefer-string-starts-ends-with rule by @camc314 in https://github.com/oxc-project/oxc/pull/3176import { default as foo } by @Boshen in https://github.com/oxc-project/oxc/pull/3255Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.2...oxlint_v0.3.3
remove deprecated eslint v9 rules no-return-await and no-mixed-operators by @Boshen in https://github.com/oxc-project/oxc/pull/3188
--symlinks to allow symbolic walking by @Boshen in https://github.com/oxc-project/oxc/pull/3244--format github for github check annotation by @Boshen in https://github.com/oxc-project/oxc/pull/3191no-return-await and no-mixed-operators by @Boshen in https://github.com/oxc-project/oxc/pull/3188prefer-string-starts-ends-with rule by @camc314 in https://github.com/oxc-project/oxc/pull/3176import { default as foo } by @Boshen in https://github.com/oxc-project/oxc/pull/3255Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.2...oxlint_v0.3.3
Oxlint Import Plugin Alpha Release
Oxlint Import Plugin Alpha Release
implements-on-classes rule by @leaysgur in https://github.com/oxc-project/oxc/pull/3081Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.1...oxlint_v0.3.2
--format documentation (#3118) (Vasilii A)Hotfix unwanted plugin rules being enabled.
Hotfix unwanted plugin rules being enabled.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.0...oxlint_v0.3.1
-D all no longer enables nursery rules, use -D all -D nursery instead
-D all no longer enables nursery rules, use -D all -D nursery instead--format checkstyle by @Boshen in https://github.com/oxc-project/oxc/pull/3044--format unix by @Boshen in https://github.com/oxc-project/oxc/pull/3039typescript-eslint/consistent-type-definitions by @todor-a in https://github.com/oxc-project/oxc/pull/3045unwrap in import/no-cycle by @Boshen in https://github.com/oxc-project/oxc/pull/3035Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.18...oxlint_v0.3.0
correctness: eslint-plugin-unicorn no await in promise methods by @camc314 in https://github.com/oxc-project/oxc/pull/2963
oxlint-disable alongside eslint-disable by @Boshen in https://github.com/oxc-project/oxc/pull/3024Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.17...oxlint_v0.2.18
feat(linter): eslint-plugin-jest/prefer-lowercase-title by @eryue0220 in https://github.com/oxc-project/oxc/pull/2911
oxlint --format json yields 0 files to lint by @Boshen in https://github.com/oxc-project/oxc/pull/2940Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.16...oxlint_v0.2.17
feat(linter): @typescript-eslint/prefer-for-of by @charnog in https://github.com/oxc-project/oxc/pull/2789
ignoreTypes option for the import/no-cycle rule by @JohnDaly in https://github.com/oxc-project/oxc/pull/2905FinallyClause won't get visited as BlockStatement anymore. by @rzvxa in https://github.com/oxc-project/oxc/pull/2881Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.15...oxlint_v0.2.16
feat(linter): default_param_last by @JoSeBu1 in https://github.com/oxc-project/oxc/pull/2756
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.14...oxlint_v0.2.15
feat(linter) eslint: no-useless-rename by @camc314 in https://github.com/oxc-project/oxc/pull/2648
parse_jest_fn by @eryue0220 in https://github.com/oxc-project/oxc/pull/2715prefer-spy-on by @eryue0220 in https://github.com/oxc-project/oxc/pull/2666prefer-expect-resolves by @eryue0220 in https://github.com/oxc-project/oxc/pull/2703prefer-to-be by @eryue0220 in https://github.com/oxc-project/oxc/pull/2702prefer-to-contain by @eryue0220 in https://github.com/oxc-project/oxc/pull/2735Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.13...oxlint_v0.2.14
eslint-plugin-jest: prefer-strict-equal by @eryue0220 in https://github.com/oxc-project/oxc/pull/2581
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.12...oxlint_v0.2.13
This release fixes a mistate made in the previous release where an ESM module has commonjs data, resulting lots of random false positives.
This release fixes a mistate made in the previous release where an ESM module has commonjs data, resulting lots of random false positives.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.11...oxlint_v0.2.12
esling-plugin-import is currently work in progress, so please don't turn on the --deny nursery category.
esling-plugin-import is currently work in progress, so please don't turn on the --deny nursery category.
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.10...oxlint_v0.2.11
eslint: no-new-wrappers by @alakhpc in https://github.com/oxc-project/oxc/pull/2413
--format json by @Boshen in https://github.com/oxc-project/oxc/pull/2452Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.9...oxlint_v0.2.10
unicorn: no-process-exit rule by @leaysgur in https://github.com/oxc-project/oxc/pull/2410
getter-return false positive with TypeScript syntax by @Boshen in https://github.com/oxc-project/oxc/pull/2363async x [newline] => x by @Boshen in https://github.com/oxc-project/oxc/pull/2375Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.8...oxlint_v0.2.9
This release addresses a long-standing issue where the AST had memory leaks. I can finally sleep well, knowing that my software is free of memory leak
This release addresses a long-standing issue where the AST had memory leaks. I can finally sleep well, knowing that my software is free of memory leaks 😀
Moreover, the parser is now 4% faster (again!), thanks to @overlookmotel's improvements.
Chars with Source by @overlookmotel in https://github.com/oxc-project/oxc/pull/2288Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.7...oxlint_v0.2.8
This release fixes a critical bug where errors not being reported from finally block of try/catch/finally.
This release fixes a critical bug where errors not being reported from finally block of try/catch/finally.
--fix for variety files(vue, astro, svelte) by @mysteryven in https://github.com/oxc-project/oxc/pull/2189Token to 16 bytes by @overlookmotel in https://github.com/oxc-project/oxc/pull/2211Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.6...oxlint_v0.2.7
feat(vscode): allow config path configuration by @Djiit in https://github.com/oxc-project/oxc/pull/2172
Full Changelog: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.5...oxlint_v0.2.6
Your coding agent can read these notes before it upgrades. Set up the MCP server →