NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3627 most downloaded on npm
More than 300 powerful ESLint rules
Last release today
03 Oct 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
133 releases · first in 2016
unicorn/no-deprecated-css-features → cssicorn/no-deprecated-features
eslint-cssicorn (#3811) c3697c0
unicorn/no-deprecated-css-features → cssicorn/no-deprecated-featuresunicorn/no-duplicate-css-selectors → cssicorn/no-duplicate-selectorsunicorn/no-duplicate-font-family-names → cssicorn/no-duplicate-font-family-namesunicorn/no-invalid-media-features → cssicorn/no-invalid-media-featuresunicorn/no-nesting-with-mixed-specificity → cssicorn/no-nesting-with-mixed-specificityunicorn/no-redundant-nested-style-rules → cssicorn/no-redundant-nested-style-rulesunicorn/no-unknown-css-annotations → cssicorn/no-unknown-annotationsunicorn/no-unknown-pseudo-selectors → cssicorn/no-unknown-pseudo-selectorsunicorn/no-unscoped-css-nesting-selector → cssicorn/no-unscoped-nesting-selectorunicorn/prefer-explicit-viewport-units → cssicorn/prefer-explicit-viewport-unitsunicorn/prefer-media-feature-range-syntax → cssicorn/prefer-media-feature-range-syntaxflat/recommended and flat/all configs (#3810) 6f989c6
recommended and all instead.no-invalid-response-options (#3808) 7d59006no-prevent-default-in-passive-listener (#3806) 09f94f2no-invalid-boolean-attribute-value (#3807) 2b91aa7no-conflicting-constraints (#3805) 7c9b39ano-invalid-property-descriptor (#3804) d0bd123no-invalid-url-protocol-comparison (#3803) ec7b063no-invalid-integrity (#3802) d0b974cno-url-in-search-params (#3800) c1008cfno-invalid-dom-token (#3799) 85c9aa1require-text-decoder-streaming (#3798) f3c317eno-invalid-temporal-arithmetic (#3797) 47904f2no-invalid-style-set-property (#3796) 239dd0bno-ineffective-csp-directives (#3795) a28a104no-invalid-intl-options (#3794) e7dc6d6no-unsafe-json-serialization (#3793) 7cc147bcomma-spacing (#3790) a7a4180no-empty-link-text (#3789) 742b361no-leading-empty-lines (#3786) 5c509bbno-unnecessary-parameters (#3784) e143b4bprefer-promise-static-methods (#3747) f3eefdeno-javascript-url (#3746) 201e128no-incomplete-accessor-override (#3745) dee7a61prefer-escaped-irregular-whitespace (#3742) d7f8222key-name-casing (#3741) a330d28prefer-literal-ascii (#3734) e9b5bcdprefer-short-escape-sequences (#3731) 0e66146no-loss-of-precision (#3729) d4bdf38indent (#3726) 64ff93drecommended-css, recommended-html, recommended-json, recommended-markdown, recommended-toml, and recommended-yaml (#3810) 6f989c6consistent-compound-words, empty-brace-spaces, escape-case, name-replacements, no-manually-wrapped-comments, no-zero-fractions, number-literal-case, single-line-block-comment-style, string-contentconsistent-compound-words, empty-brace-spaces, escape-case, id-match, name-replacements, no-zero-fractions, number-literal-case, relative-url-style, single-line-block-comment-style, string-contentconsistent-compound-words, id-match, name-replacements, relative-url-stylename-replacements, relative-url-styleconsistent-compound-words, empty-brace-spaces, escape-case, name-replacements, no-manually-wrapped-comments, no-zero-fractions, number-literal-case, string-contentconsistent-compound-words, empty-brace-spaces, name-replacements, no-zero-fractionseslint-disable comments suppress reports instead of making rules skip the code, which made the directive look unused (#3783) 2428f98no-asterisk-prefix-in-documentation-comments: Support CSS and JSON, and enable in recommended preset (#3725) d0f8a03number-literal-case: Move from unopinionated to recommended preset 769e2d5prefer-combined-guards: Add checkMultiStatementBodies option (#3760) 490ff39prefer-simplified-conditions: Add negatedConditions option (#3778) 2bb9171comment-content: Improve performance (#3763) cbe4b6bconsistent-conditional-object-spread: Report unnecessary boolean casts in logical mode (#3761) 1bc3b07logical-assignment-operators: Support computed properties (#3739) 1c7901fname-replacements: Prefer repository over repo (#3743) 54ff97fno-await-in-promise-methods: Report nested await (#3758) 8c2c194no-invalid-argument-count: Avoid false positives for spread arguments (#3781) 769208ano-manually-wrapped-comments: Support block comments and CSS (#3744) 1e82f7ano-shorthand-property-overrides: Improve shorthand detection (#3792) b1b8904no-unnecessary-array-flat-map: Remove unnecessary singleton array wrappers (#3782) eedbb2cprefer-default-parameters: Report bindings with consistent fallback expressions (#3780) 1ef535dprefer-direct-iteration: Fix type inference for destructured bindings (#3809) 93ef59cprefer-early-return, prefer-continue: Check guards after other statements in checkShortBodies (#3759) 6f405dfprefer-logical-operator-over-ternary: Only simplify boolean branches (#3768) d84d561prefer-simple-condition-first: Handle typeof guards (#3740) 118000bprefer-single-call: Make array call autofixes safe (#3770) bcb9394prefer-single-object-destructuring: Inline local sources (#3779) fa417ffprefer-uint8array-hex: Recognize more encoding patterns (#3791) dd24a9aOne column per quarter.
no-immediate-mutation : Add checkConditionals option and default it to off ( #3707 ) 4686e7e
no-immediate-mutation: Add checkConditionals option and default it to off (#3707) 4686e7eno-break-in-nested-loop: Add checkContinue option and default it to off (#3712) d8fbfdeprefer-combined-guards: Add checkCompoundConditions option default it to off (#3710)prefer-minimal-ternary: Add autofix (#3716) aaa75a4prefer-logical-operator-over-ternary: Handle boolean expressions (#3711)prefer-ternary: Preserve readable branches (#3709) f7a35aeno-typeof-undefined: Ignore TypeScript ambient variables (#3708) 9245ed8no-deprecated-css-features ( #3651 ) e116102
prefer-combined-guards (#3680) 5d9d745no-unused-iterator-helper (#3677) 8213737no-unused-builtin-method-return (#3676) b3d56a3prefer-iterator-zip (#3675) 60d3b53no-useless-set-construction (#3672) 639c984prefer-iterator-helpers (#3670) 4c805e2prefer-json-import (#3668) 1df640dprefer-temporal-conversion (#3667) 74bc02eno-async-iterator-callback (#3666) bb6c245no-using-resource-escape (#3663) 3424785prefer-uint8array-hex (#3661) 9255132no-deprecated-css-features (#3651) e116102no-unscoped-css-nesting-selector (#3650) ebd03bdno-duplicate-css-selectors (#3646) 508d9f5no-unknown-pseudo-selectors (#3644) 99492cdno-invalid-media-features (#3643) ef37c1fno-unknown-css-annotations (#3642) 19637eeno-nesting-with-mixed-specificity (#3640) b2f2bf9prefer-media-feature-range-syntax (#3639) 19f112fno-duplicate-font-family-names (#3638) c8f81bcno-redundant-nested-style-rules (#3637) 31603adprefer-continue: Add checkShortBodies option (#3699) 274d581filename-case: Add directoryRoots option (#3647) d2d6cc3custom-error-definition: Allow flexible options placement (#3698) 2f8e2e5prefer-smaller-scope: Check initialized declarations (#3697) 960b374no-unsafe-string-replacement: Allow safe repeated strings (#3696) 742bdceno-array-fill-with-reference-type: Recognize function return types (#3695) 60f00ffprefer-continue: Support trailing conditionals (#3694) bf480f6no-immediate-mutation: Support conditionals (#3688) 73235b9prefer-set-methods: Extend supported methods (#3674) 3459a29prefer-minimal-ternary: Check property reads with checkComputedMemberAccess (#3673) 37d7614prefer-array-from-async: Recognize ordinary serial mapping loops (#3671) 65ad1bbprefer-uint8array-base64: Prefer native encoding options (#3665) 6ecc912prefer-group-by: Recognize accumulation loops (#3664) a8e7d0eno-negated-condition: Preserve comments in autofixes (#3662) 8f407a7prefer-minimal-ternary: Support objects, arrays, and constructors (#3658) 40c860aprefer-ternary: Handle flat return statements (#3657) 2edc158no-useless-else: Prevent unsafe combined fixes (#3654) 7beaf7dno-useless-length-check: Check for…of loops (#3652) fdf47c5no-unknown-css-annotations: Fix identifier lookup across @eslint/css-tree versions 9b6f37bprefer-dom-node-replace-children: Combine consecutive mutations (#3648) 52dd1ceImprove rule performance ( #3618 ) 4ff2eab
comment-content: Handle JSDoc syntax (#3616) bf7dca2consistent-arrow-return-style: Fix indentation and in operator handling (#3621) 398606cconsistent-boolean-name: Support possibly async boolean callbacks (#3624) 823bb1fcustom-error-definition: Avoid requiring native ErrorOptions for custom bases (#3617) 96fd371custom-error-definition: Support TypeScript parameter properties (#3619) 872fd55expiring-todo-comments: Add YAML support (#3625) e437f23name-replacements: Allow ProcessEnv type (#3608) 2e19a94no-array-fill-with-reference-type: Ignore canvas contexts (#3635) d7f5fa1no-empty-file: Add YAML support (#3627) 043a523no-nonstandard-builtin-properties: Support stage 4 proposals (#3631) 0a24d74no-unnecessary-splice: Fix false positives when the return value is used (#3611) cc58720no-useless-else: Fix false positive in mutable branch conditions (#3612) 725e535prefer-default-parameters: Support logical assignment operators (#3629) 8eb0897no-array-for-each : Fix deprecation docs ( #3568 ) 0096a18
consistent-arrow-return-style (#3601) ae3c3d9iteration-fallback-style (#3602) a61c2c5no-barrel-files (#3570) d900c09no-unsafe-sqlite-interpolation (#3582) a09869bsingle-line-block-comment-style (#3584) a0c2c57consistent-boolean-name: Add wrappers option (#3572) 78c5abfconsistent-boolean-name: Add granular check options (#3591) a33b1c1consistent-function-style: Add defaultExport option (#3600) e78a7c9prefer-https: Add ignore option (#3557) 7f7ec06comment-content: Handle Unicode word boundaries (#3597) dd52b4aimport-style: Ignore type-only imports (#3599) f2a62e3name-replacements: Handle TypeScript parameter properties (#3575) fa0df7bno-negated-comparison: Never check relational operators (#3589) 6120423no-this-outside-of-class: Allow explicit TypeScript this parameters (#3596) 6a709b7no-unnecessary-string-trim: Handle Zod string schemas (#3577) 1c06db0prefer-else-if: Handle existing else if chains (#3587) 46eaaf0prefer-simple-condition-first: Treat == null checks as simple (#3559) d1be07eprefer-set-has: Fix false positives for computed members (#3562) 2817682consistent-export-decorator-position: Fix decorator position reporting (#3583) 0a19cb4no-array-for-each: Fix deprecation docs (#3568) 0096a18process.exit control-flow analysis (#3590) 342a5edprefer-minimal-ternary : Rename checkVaryingCallee option to checkVaryingBase ( #3508 ) 825b7b9
no-missing-local-resource (#3528) 12a33c6no-multiple-promise-resolver-calls (#3523) 81ab092no-shorthand-property-overrides (#3527) 91a4c4dno-transition-all (#3529) 5ef2fcfno-unnecessary-string-trim (#3517) a651672no-useless-re-export (#3540) 96afe55prefer-explicit-viewport-units (#3532) 449e636prefer-then-catch (#3526) a17e5a2require-frontmatter-fields (#3525) dfd91cdconsistent-boolean-name: Support Vue refs (#3555) 79e79d5no-incorrect-template-string-interpolation: Ignore Unicode code point escapes (#3513) 36fdf1ano-negated-comparison: Ignore relational comparisons with optional chaining (#3512) 7b7e28ano-top-level-side-effects: Ignore <script setup> (#3542) af8fd60no-unnecessary-array-flat-map: Handle TypeScript Vue files (#3545) b6d01a0no-unsafe-property-key: Use type information for narrowed property keys (#3515) 69a6002no-unused-array-method-return: Ignore expect assertions (#3552) 110cc58no-useless-promise-resolve-reject: Handle awaited calls (#3504) 9b8a144no-useless-template-literals: Ignore const assertions (#3543) 4367228prefer-await: Add async IIFE suggestion (#3550) 305fb4bprefer-dom-node-html-methods: Add options and add to recommended preset (#3541) 581ef47prefer-export-from: Preserve JSDoc comments on single-const re-exports (#3544) e273ab6prefer-short-arrow-method: Add consistent-as-needed option (#3514) c068745prefer-simple-condition-first: Fix logic (#3530) a339abeprefer-split-limit: Support array destructuring (#3554) b23f959prefer-string-starts-ends-with: Detect slice comparisons (#3518) 98730deprefer-minimal-ternary: Don't report object-varying member access by default (#3508) 825b7b9consistent-boolean-name : Allow async boolean predicates ( #3502 ) dafc7c9
consistent-boolean-name : Ignore destructured variables ( #3485 ) 0de22c5
consistent-boolean-name: Ignore destructured variables (#3485) 0de22c5consistent-boolean-name: Skip React hooks by default (#3487) fab07e2isolated-functions: Respect configured globals in isolated functions (#3495) 1af1d1ano-unnecessary-array-flat-map: Ignore conditional flatMap fixes in TypeScript (#3499) 5eb6d87prefer-boolean-return: Ignore repeated boolean guard clauses (#3494) fdb3d89prefer-top-level-await: Ignore Svelte files (#3489) 58670ffprefer-uint8array-base64: Remove from presets (#3493) 3f4c31eno-async-promise-finally ( #3450 ) 5aa9ea1
no-async-promise-finally (#3450) 5aa9ea1no-unnecessary-fetch-options (#3476) db4e852no-unsafe-promise-all-settled-values (#3449) f66e080prefer-abort-signal-any (#3447) f044cefprefer-array-flat-map (#3457) 7d48a41prefer-array-from-range (#3451) f3e12e9prefer-block-statement-over-iife (#3452) 44a63daprefer-group-by (#3443) b3071b3prefer-iterator-helpers (#3446) 18d9362prefer-simplified-conditions (#3474) 93ee487consistent-boolean-name: Add inverse boolean name support (#3478) d379e13expiring-todo-comments: Report unsupported catalog versions (#3455) 26f11daisolated-functions: Add defaults for workerize and common evaluate APIs (#3467) 30c7570isolated-functions: Support methods (#3470) c615523no-collection-bracket-access: Handle conditional member keys (#3462) cd01d0bno-manually-wrapped-comments: Handle more cases (#3460) c09d4c7no-non-function-verb-prefix: Add ignore option (#3475) f9a422eno-return-array-push: Fix false-positives (#3448) 5f4dd3ano-useless-else: Recognize process.exit() as an exiting branch (#3482) 46714a6prefer-continue: Ignore empty statements (#3473) df904a7prefer-early-return: Ignore empty statements (#3473) df904a7prefer-object-iterable-methods: Catch more callback methods (#3481) a076cbcconsistent-tuple-labels ( #3389 ) fb89880
consistent-tuple-labels (#3389) fb89880no-invalid-well-known-symbol-methods (#3433) a81ab49no-late-event-control (#3440) 898d9c5prefer-abort-signal-timeout (#3441) 5a59e19prefer-aggregate-error (#3436) e11cb92prefer-dom-node-replace-children (#3399) 5c83834prefer-error-is-error (#3438) d50d876prefer-observer-apis (#3398) 9c62a05prefer-promise-try (#3435) 704d141prefer-set-methods (#3439) 75c2bb3prefer-toggle-attribute (#3396) da04c21prefer-url-search-parameters (#3395) b410701comment-content: Don't mutate commented-out multi-line code (#3413) bef80c8consistent-boolean-name: Add ignore option and plural prefixes (#3423) 7cc1d9econsistent-boolean-name: Don't crash on Svelte {#each} bindings (#3417) effc0e1consistent-conditional-object-spread: Treat undefined/null fallback as an empty branch (#3401) 38eebbdcustom-error-definition: Allow no-substitution template literal for name (#3383) 594e050custom-error-definition: Don't require options parameter when forwarded to super() inline (#3377) e931467name-replacements: Exclude Vite type declaration (#3375) 396c2edno-computed-property-existence-check: Allow dynamic access to a known boolean value (#3420) add50ffno-incorrect-template-string-interpolation: Ignore braces inside block comments (#3429) 2676b5dno-nonstandard-builtin-properties: Allow stack on Error instances (#3416) b4a3527no-return-array-push: Allow void operator to opt out (#3384) 046dc75no-return-array-push: Don't report custom push methods that don't return arrays (#3427) ed1b57eno-top-level-side-effects: Allow type-only exports (#3421) c896024no-unnecessary-boolean-comparison: Fix false positive for destructured parameters and yield expressions (#3392) 26f37f8no-unnecessary-global-this: Don't report existence checks (#3426) 668ec36no-unreadable-object-destructuring: Allow computed keys when a rest element is present (#3400) 3d3b654no-unsafe-string-replacement: Ignore non-string receivers (#3442) 05c7c25no-unused-array-method-return: Restrict values() reporting to arrays (#3434) 9e12972no-useless-boolean-cast: Keep Boolean() around possibly-undefined values (#3397) d35e538no-useless-concat: Skip concats that form a ${…} placeholder (#3428) a39fe66no-useless-else: Autofix else bodies containing JSX (#3419) 3c17b69no-useless-iterator-to-array: Improve fixes (#3432) 3bc8c69prefer-at: Only check positive string index access with checkAllIndexAccess (#3415) 68d0d25prefer-code-point: Don't suggest the swap when the result feeds arithmetic (#3430) 9083ae7prefer-continue: Don't report when the if body exits the loop (#3414) 2187122prefer-minimal-ternary: Add checkVaryingCallee option (#3381) c397f87Rename prevent-abbreviations rule to name-replacements ( #3362 ) af0158d
prevent-abbreviations rule to name-replacements (#3362) af0158dNow 300+ rules 🎉
consistent-conditional-object-spread (#3326) 8aa1e0ddefault-export-style (#3364) 0015e81no-accidental-bitwise-operator (#3318) af2661eno-array-concat-in-loop (#3350) 4a1f65cno-array-front-mutation (#3323) d8302bdno-array-sort-for-min-max (#3351) e4b6666no-boolean-sort-comparator (#3368) 3be859cno-chained-comparison (#3310) c29e211no-collection-bracket-access (#3286) 6ccd694no-constant-zero-expression (#3311) 134eea2no-double-comparison (#3329) ae4d7d7no-duplicate-if-branches (#3346) 94b8c3bno-duplicate-logical-operands (#3348) af07fd8no-impossible-length-comparison (#3342) 84dfd8bno-invalid-character-comparison (#3333) b2e9191no-loop-iterable-mutation (#3357) b961432no-misrefactored-assignment (#3315) 063a798no-nonstandard-builtin-properties (#3337) 14cc4dbno-selector-as-dom-name (#3328) 6d9b14fno-unnecessary-boolean-comparison (#3349) 00d90d4no-useless-compound-assignment (#3355) ddf347ano-useless-delete-check (#3359) 2712e16no-useless-logical-operand (#3352) 8689080no-xor-as-exponentiation (#3356) 5b1952bprefer-array-from-async (#3370) b2bf08fprefer-array-iterable-methods (#3358) e32a7c3prefer-boolean-return (#3340) 084bb9eprefer-continue (#3347) c374e14prefer-flat-math-min-max (#3341) 3f0a2ceprefer-hoisting-branch-code (#3369) 00d8a9bprefer-math-constants (#3309) 6ee7dd8prefer-promise-with-resolvers (#3322) e880d29prefer-regexp-escape (#3367) dec6c31prefer-single-replace (#3353) 9117778prefer-unary-minus (#3354) 98c6f38prefer-url-can-parse (#3366) ba55624prefer-while-loop-condition (#3344) ce538b7prefer-short-arrow-method: Remove from recommended preset (#3345) 0cfd77aprefer-type-literal-last: Remove from unopinionated preset and stop checking intersection types (#3320) 447c665consistent-boolean-name: Do not check destructured bindings (#3324) fb0cfe0logical-assignment-operators: Do not assume the base rule's defaultOptions exist (#3321) 253e25flogical-assignment-operators: Improve error message (#3302) 3ec8fecname-replacements: Add more default replacements (#3365) f968bf3new-for-builtins: Cover more builtins (#3361) e04ac43no-array-splice: Only report fresh, non-escaping local arrays (#3301) babb873no-break-in-nested-loop: Handle unlabeled continue in nested switch statements (#3335) ca893bano-declarations-before-early-exit: Ignore initializers containing await or yield (#3303) 6d98190no-incorrect-template-string-interpolation: Remove from unopinionated preset and fix false-positive (#3319) 39dc546no-manually-wrapped-comments: Ignore some more comments (#3292) a545dfeno-named-default: Don't drop comments in autofix (#3306) 44e7361no-unsafe-property-key: Allow intrinsic string-mapping types as keys (#3343) ba6020fno-useless-coercion: Flag +value, value + '', and value.toString() idioms (#3338) 23a52f6no-useless-undefined: Flag return undefined for void return type (#3334) 488d5e3prefer-array-find: Add .filter(…).slice(-1) support (#3360) b6ea1e2prefer-early-return: Fix lexical declaration autofixes (#3325) e7771bdprefer-identifier-import-export-specifiers: Check import attribute keys (#3287) fec43d2prefer-includes-over-repeated-comparisons: Ignore distinct expressions compared against undefined (#3308) 78858ecprefer-minimal-ternary: Report dynamic computed-key swaps (#3300) 72879c4prefer-number-properties: Add parseFloat support (#3307) 4b891d3prefer-object-iterable-methods: Preserve TypeScript casts on value access (#3327) d3a4d39consistent-boolean-name ( #3237 ) 8be0920
consistent-boolean-name (#3237) 8be0920logical-assignment-operators (#3246) 7046694no-array-splice (#3235) d1143a9no-invalid-argument-count (#3243) ec091a9no-non-function-verb-prefix (#3242) 5c32dd0no-top-level-assignment-in-function (#3234) e5ff667no-uncalled-method (#3231) f65ac01no-unreadable-for-of-expression (#3248) a8c7f89no-useless-coercion (#3283) 3c76922no-useless-continue (#3276) 5fd7d25no-useless-override (#3271) f503289operator-assignment (#3249) 65ef58cprefer-array-slice (#3233) d9bce20prefer-else-if (#3232) 98c2c2eprefer-has-check (#3250) a8d380dprefer-map-from-entries (#3255) 01c0f82no-unreadable-new-expression: Remove from recommended preset (#3285) c9f452ecomment-content: Remove from recommended preset (#3269) 21cce8bcomment-content: Add checkUniformCase option (#3269) 21cce8bconsistent-class-member-order: Group static methods with other static members (#3239) 8f4de02consistent-class-member-order: Improve error message (#3264) 47f9f21dom-node-dataset: Flag .dataset assigned to a variable with preferAttributes (#3268) 79198ccno-array-reduce: Suggest Math.sumPrecise() for sum reduces (#3261) 081936dno-return-array-push: Disallow using push() and unshift() return values (#3244) d9ea7abno-unreadable-array-destructuring: Disallow property targets (#3245) 8b50359no-unreadable-object-destructuring: Disallow property targets (#3245) 8b50359no-useless-fallback-in-spread: Add checkTernary option (#3284) b2496fcprefer-logical-operator-over-ternary: Improve nullish ternary detection (#3240) 4014a1eprefer-minimal-ternary: Add checkComputedMemberAccess option (#3241) cf4c014prefer-scoped-selector: Only apply to combined selectors (#3263) d715badprefer-scoped-selector: Report partially-scoped selector lists (#3259) cf88cddprefer-type-literal-last: Keep null and undefined last (#3281) f6a9dceno-array-callback-reference: Harden the rule (#3230) dcc0cf8no-declarations-before-early-exit: Harden side-effect detection (#3238) 1bad677no-declarations-before-early-exit: Ignore React hook calls (#3280) de47dcecomment-content: Skip non-prose comments (#3236) 9c85b1fno-empty-file: Don't report non-empty files parsed by a plain-text parser (#3270) 3b8b9a4no-unsafe-property-key: Don't flag unique symbol keys (#3278) 3fa567eno-unsafe-property-key: Ignore template literal types (#3247) b8d9602Require Node.js 22 ( #3090 ) 93164fb
no-array-for-each rule to no-for-each (#3216) b87c8a9no-hex-escape rule (#3202) d68b09e
prefer-unicode-code-point-escapes, which covers more cases.class-reference-in-static-methods (#3154) bbeb92fcomment-content (#3104) d14d0fdconsistent-class-member-order (#3226) d116a6bconsistent-export-decorator-position (#3175) 9302e8dconsistent-function-style (#3137) a86fe5econsistent-optional-chaining (#3195) c07bf4eexplicit-timer-delay (#2814) 29ae4ebid-match (#3109) d39bfa3max-nested-calls (#3183) 0763b75no-asterisk-prefix-in-documentation-comments (#3191) 4a95ff6no-break-in-nested-loop (#3148) 41648c1no-computed-property-existence-check (#3151) af0e3c4no-confusing-array-with (#3178) 95a748bno-declarations-before-early-exit (#3139) f7241c8no-duplicate-loops (#3142) 745e9edno-error-property-assignment (#3114) bf9d72eno-global-object-property-assignment (#3136) b03927eno-incorrect-template-string-interpolation (#3162) 32380f9no-mismatched-map-key (#3192) 154049fno-negated-array-predicate (#3203) 6ba7506no-negated-comparison (#3149) 5733173no-object-methods-with-collections (#3194) c9ffbf9no-optional-chaining-on-undeclared-variable (#3223) 74be15eno-redundant-comparison (#3068) 115837dno-return-array-push (#3098) b8735b0no-subtraction-comparison (#3123) 178184bno-top-level-side-effects (#3184) 442fba3no-undeclared-class-members (#3153) 93cbfc0no-unnecessary-global-this (#3161) a9e2c65no-unnecessary-splice (#3124) 646ad09no-unreadable-new-expression (#3113) 6ae57a9no-unreadable-object-destructuring (#3160) 1696abdno-unsafe-buffer-conversion (#3174) a85f2c6no-unsafe-dom-html (#3218) c70380ano-unsafe-property-key (#3227) d1b6ba7no-unsafe-string-replacement (#3120) e097996no-useless-boolean-cast (#3097) b55d2f8no-useless-concat (#3146) 5a88edeno-useless-else (#3152) a99a914no-useless-recursion (#3150) d7ecd39no-useless-template-literals (#3225) b752111prefer-add-event-listener-options (#3169) 347abffprefer-array-from-map (#3158) 584d39dprefer-await (#3147) 15632b6prefer-direct-iteration (#3107) 0e2fcfdprefer-dispose (#3085) ce29c25prefer-dom-node-html-methods (#3119) 1887853prefer-early-return (#3131) eaca182prefer-global-number-constants (#3127) 3c7c767prefer-identifier-import-export-specifiers (#3134) b222909prefer-iterable-in-constructor (#3129) 5d76a2dprefer-iterator-to-array (#3094) 21eb45bprefer-location-assign (#3132) a064465prefer-minimal-ternary (#3222) 9c952e0prefer-number-coercion (#3105) 2e6696dprefer-number-is-safe-integer (#3073) 55d9f7eprefer-object-define-properties (#3189) ced7bcdprefer-object-destructuring-defaults (#3210) d52f71bprefer-object-iterable-methods (#3156) 825fbc0prefer-path2d (#3187) a131574prefer-private-class-fields (#3116) 4b2273eprefer-scoped-selector (#3099) 2c6eca5prefer-short-arrow-method (#3118) 745cd27prefer-simple-sort-comparator (#3081) 72d12e5prefer-single-array-predicate (#3164) cd42516prefer-single-object-destructuring (#3163) c08a8fbprefer-smaller-scope (#3206) 4374b0eprefer-temporal (#3075) 74c55afprefer-type-literal-last (#3121) 9967938prefer-uint8array-base64 (#3086) 254e2e0prefer-unicode-code-point-escapes (#3202) d68b09eprefer-url-href (#3186) 790bbfdrequire-array-sort-compare (#3166) ed51c89require-proxy-trap-boolean-return (#3159) 54ccecbconsistent-compound-words: Allow newLine word (#3117) 949e56bconsistent-compound-words: Improve performance (#3185) fc4e29aconsistent-destructuring: Stop expanding destructuring (#3115) 65afb79consistent-function-scoping: Track JSX references (#3101) e0130c2expiring-todo-comments: Add peer: condition (#3088) 93e9a0cexpiring-todo-comments: Simplify report messages (#3215) d0945e0explicit-length-check: Detect length <= 0 as a zero-length check (#3071) ea471f1filename-case: Add camelCaseWithAcronyms case (Note truncated.
no-unused-array-method-return: Fix false positive on type assertions (#3065) 4939b00a
no-unused-array-method-return: Fix false positive on type assertions (#3065) 4939b00aprefer-https: Fix false positive on XML namespace URIs (#3063) 51842624https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v65.0.0...v65.0.1
Drop better-regex rule (#2968) 89dc5dc0
better-regex rule (#2968) 89dc5dc0
ignore* boolean options to check* for consistency (#3045) 8acfea1d
expiring-todo-comments: ignoreDates → checkDatesexpiring-todo-comments: ignoreDatesOnPullRequests → checkDatesOnPullRequestsprefer-export-from: ignoreUsedVariables → checkUsedVariablesprefer-dom-node-dataset rule to dom-node-dataset 3f51bc64expiring-todo-comments: Make checkDates option true by default (#3044) 5e31bba7prefer-global-this: Remove exemption for WebWorker-specific APIs (#2926) add2138bbetter-dom-traversing (#3052) df50cee1consistent-compound-words (#3061) fcacf46bconsistent-json-file-read (#2987) d9d38620no-array-fill-with-reference-type (#3039) 47356fa7no-array-from-fill (#3007) 57324cb9no-blob-to-file (#2993) 7302833cno-canvas-to-image (#2985) b4a5af12no-confusing-array-splice (#2978) 01ae1d2ano-duplicate-set-values (#2995) f29a382dno-exports-in-scripts (#3015) 4cbb5293no-incorrect-query-selector (#3059) 150b5f10no-invalid-file-input-accept (#3047) 2c8d77beno-late-current-target-access (#2974) db860861no-manually-wrapped-comments (#3036) 87fe35b3no-this-outside-of-class (#3030) 21fc3691no-unnecessary-nested-ternary (#3023) cc1ced20no-unused-array-method-return (#2940) a7d8a6caprefer-array-last-methods (#3029) 108d7a13prefer-get-or-insert-computed (#2979) f48f3800prefer-https (#3014) 838695eaprefer-includes-over-repeated-comparisons (#3056) 3c5880e3prefer-iterator-concat (#2998) 5c52d0cbprefer-iterator-to-array-at-end (#3041) 6b341b6eprefer-math-abs (#2996) 7df5b485prefer-queue-microtask (#3050) 3fc8b037prefer-split-limit (#3019) 6308c1dfprefer-string-match-all (#3057) c9b5ec83prefer-string-pad-start-end (#3002) 3736c66cprefer-string-repeat (#2988) e52c4550require-css-escape (#3037) 55ff804brequire-passive-events (#3004) 4c175686try-complexity (#3055) e7a19996prefer-dom-node-dataset: Add preferAttributes option (#2918) 3f51bc64consistent-function-scoping: Ignore functions in Jest mock factories (#3032) 8711c4aacustom-error-definition: Handle custom error message accessors (#2980) 1b82067aexpiring-todo-comments: Add CSS support (#2972) 4fd8dd5aexplicit-length-check: Ignore nullable property guards (#3006) 8b96ae0dfilename-case: Check directories too (#3038) a85e9e8efilename-case: Allow $-prefixed filenames (#3012) b9cbbed7import-style: Warn about misuse when all styles are set to false (#3043) f446f98eno-array-callback-reference: Add ignore option (#3042) 8d33caf2no-array-callback-reference: Use singular callback parameter names (#3035) ced1210ano-array-for-each: Ignore strict-callbag-basics namespaces (#3010) d3a643eeno-array-reduce: Add autofix (#3058) b0248a6dno-empty-file: Add allowComments option (#2984) 3908ccd4no-null: Add checkArguments option (#3049) ff658c59no-useless-spread: Report spreading into collection constructors (#3025) 0dbd8d79no-useless-undefined: Ignore Promise.resolve(undefined) in TS (#3031) 3310c37anumeric-separators-style: Add fractionGroupLength option (#3051) 00744635prefer-array-some: Detect assigned find results (#3028) f34565d3prefer-at: Ignore arguments (#2976) 24e65754prefer-query-selector: Add allowWithVariables option (#2953) 2d51e305prefer-set-has: Allow compatible extra usages (#3060) 49535b0bprefer-set-has: Add minimumItems option (#3024) cbf5e885prefer-set-has: Improve TypeScript autofix (#2983) 63f87d9dprefer-single-call: Add unshift() support (#3034) b207989cprefer-string-raw: Forbid unnecessary String.raw (#2695) 1fdace02prefer-string-replace-all: Enforce replaceAll over split().join() (#3048) 9ad46578prefer-string-slice: Improve autofix (#3021) 3407bf7dprefer-top-level-await: Ignore variable initializers (#3020) 53cfc3cfprevent-abbreviations: Add suggestions for ambiguous replacements (#3033) c0d638f4prevent-abbreviations: Avoid unsafe parameter autofixes (#3054) fc18bd90string-content: Add caseSensitive option (#3053) afbc4628string-content: Add selectors option (#3026) 82a1962econsistent-destructuring: Fix type guards (#2994) 20d31076explicit-length-check: Fix false positive (#2989) 04f6883fno-array-callback-reference: Fix local callbacks (#3027) 9212b9b5no-lonely-if: Fix fixer overlap with whole-range fixes 0e023e3ano-unnecessary-polyfills: Fix false positives for multi-feature imports (#2941) 4523856eprefer-at: Avoid reporting object index access (#2999) f0509daaprefer-dom-node-append: Fix append API label (#3018) aa1e02d9prefer-dom-node-remove: Improve fixer (#2991) 0c4bac4bprefer-keyboard-event-key: Handle more cases (#2992) 4bfd3772prefer-regexp-test: Fix length checks (#2986) 16387c83prefer-regexp-test: Ignore RTK action matchers (#3003) 5bc965d9prefer-spread: Fix string false positives (#3011) 7c630d1dprefer-top-level-await: Fix under @typescript-eslint/parser (#2948) 93f33eb2prefer-top-level-await: Ignore Zod schema catch fallback (#3005) 889da5a6require-module-specifiers: Allow bare export {} as a module marker (#3001) c21bf378template-indent: Fix root indentation detection (#2981) f0e4fad2throw-new-error: Fix decorator false positive (#3000) 3ea18cc2https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v64.0.0...v65.0.0
`consistent-template-literal-escape` (#2866) 55444b41
consistent-template-literal-escape (#2866) 55444b41no-useless-iterator-to-array (#2872) 641b88c9prefer-simple-condition-first (#2902) b0279dd2switch-case-break-position (#2910) 8d5d4873text-encoding-identifier-case: Support template literals (#2905) 9448c8ceprefer-math-min-max: Ignore Date objects (#2903) cd53d9eaprevent-abbreviations: Handle exported TS interfaces and enums (#2898) 6dc01d23no-array-callback-reference: Skip TypeScript type predicate callbacks (#2897) 02364c83prefer-spread: Skip autofix when it would drop comments (#2896) 6ff14677no-useless-undefined: Flag return undefined for explicit undefined return types (#2876) 41fc9c27no-unnecessary-polyfills: Improve performance (#2874) c88bf295expiring-todo-comments: Add ignoreDates option (#2892) 95a288baprevent-abbreviations: Recognize jQuery 42f53641prefer-object-from-entries: Avoid auto-fixing generic reduce (#2878) bea9b200expiring-todo-comments: Fix partial version comparison (#2895) 51390e9dconsistent-destructuring: Fix false positive for nested rest destructuring (#2894) 1cddfb59consistent-destructuring: Fix false positive after reassignment (#2893) c7f57d0econsistent-function-scoping: Fix TypeScript false positives for lexical this (#2885) a383657acustom-error-definition: Fix class field autofix (#2887) 1359726bexplicit-length-check: Fix || fallback false positives (#2889) 84246ecdexplicit-length-check: Avoid unsafe autofix in negated comparisons (#2883) 73b043baimport-style: Fix false positive for type-only import (#2891) aea99544no-unused-properties: Fix for JSX member access (#2890) 0ff698b3better-regex: Fix empty-pattern autofix (#2881) c2019877prefer-global-this: Fix for window-specific in checks (#2879) 6bf75370prefer-native-coercion-functions: Fix false positive for TS type predicates (#2888) 4c4b565aprefer-set-has: Fix string false positives (#2882) c230c220prefer-top-level-await: Fix false positive with Promise.all (#2884) 67faa7achttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v63.0.0...v64.0.0
`isolated-functions` (#2701) 4956a6be
isolated-functions (#2701) 4956a6beprefer-set-size: Add Array.from() support (#2857) e556143bprefer-bigint-literals: Support signed numbers and strings (#2784) a332a509prefer-export-from: Fix type-import being removed when using namespace import (#2771) ab4b779aprefer-spread: Fix: Skip TypedArray and ArrayBuffer constructor calls (#2871) 42a558f7no-array-sort: Ignore .sort() calls with non-function arguments (#2862) cbb23774prefer-add-event-listener: Don't autofix non-function assignments (#2865) 989ec61aexplicit-length-check: Ignore || with string fallback value (#2861) 4806f7e6no-unnecessary-polyfills: Fix false positive for graduated esnext features (#2864) d6c13ab1no-for-loop: Skip auto-fix for string types when .entries() would be needed (#2869) 08a591a9import-style: Fix crash on export {x} without from clause (#2868) 141c8c50expiring-todo-comments: Should not flag ESLint disable comments (#2828) 3568dafbno-useless-collection-argument: Use suggestions to remove empty array with comments (#2838) c0d06879prefer-set-has: Check Iterator#toArray() and String#split() (#2829) ab8970ecno-useless-spread: Fix false positive on Iterator (#2831) 994e31caisolated-functions: Ignore TypeScript types (#2822) c3479c0dprefer-string-raw: Exclude inline snapshot (#2811) 6e7f93c4consistent-assert: Explicitly check specifier node type (#2803) 396a8fa2https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v62.0.0...v63.0.0
`no-immediate-mutation` (#2787) e1c7d2ed
no-immediate-mutation (#2787) e1c7d2edno-useless-collection-argument (#2777) 2d07c9a9prefer-response-static-json (#2778) ffe5943btext-encoding-identifier-case: Add withDash option (#2780) 90253860no-useless-undefined: Check one undefined at a time (#2792) 27f75099prefer-single-call: Check optional chaining (#2788) 8a132acetext-encoding-identifier-case: Enforce 'utf-8' in form[acceptCharset] and TextDecoder (#2785) 46b39741prefer-node-protocol: Handle TypeScript import types (#2774) 13a37a0dno-array-for-each: Ignore forEach for Effect library (#2783) 2ef6f831prefer-string-raw: Ignore more places that requires a string (#2776) 43bc4299prefer-string-raw: Add support for template literals (#2691) 52723a24prefer-global-this: Add navigation to windowSpecificAPIs (#2770) 0c939985prefer-code-point: Report cases where String.fromCharCode is not called directly (#2766) 1d682a18no-useless-spread: Safely remove empty array and object (#2764) 7aeabab3consistent-function-scoping: Fix inconsistent behavior (#2748) a5464440https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v61.0.2...v62.0.0
throw-new-error: Fix false positive for Effect library (#2740) 0ddf5ead
throw-new-error: Fix false positive for Effect library (#2740) 0ddf5eadno-useless-undefined: Ignore Set#delete(undefined) (#2739) 99acd272prefer-includes and prefer-array-index-of: Prevent crash on Vue files (#2645) a1da5182https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v61.0.1...v61.0.2
prefer-classlist-toggle: Omit Element#classList.contains() call when fixing (#2732) 066f96b9
prefer-classlist-toggle: Omit Element#classList.contains() call when fixing (#2732) 066f96b9https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v61.0.0...v61.0.1
`prefer-bigint-literals` (#2722) 1f4cb8a2
prefer-bigint-literals (#2722) 1f4cb8a2prefer-classlist-toggle (#2731) 5f27ec2arequire-module-attributes (#2725) 5f275e25no-array-sort (#2713) b70d1e8eunopinionated config (#2715) c13d09b8no-array-reduce: Report optional chaining and calling of .reduce() (#2721) caa1f8b8prefer-type-error: Ignore error type check (#2729) d12fc01cprefer-includes: Fix compatibility with Vue SFC (#2704) 540a4d4bhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v60.0.0...v61.0.0
Require Node.js 20.10 (#2698) 2dc27d90
prefer-class-fields (#2512) 4c82dc12no-array-reverse (#2677) b051302frequire-module-specifiers (#2686) 2a8e152eno-useless-error-capture-stack-trace (#2676) fc900b61prefer-string-replace-all: Preserve escape (#2667) 2310b507SuppressedError (#2669) f51aeb9ano-array-callback-reference: Fix optional chaining expressions being ignored (#2694) ad27922eno-unnecessary-await: Fix handling of experimental pipeline operator (#2658) 2b8ebe57https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v59.0.1...v60.0.0
prefer-single-call: Fix crash on CallExpression followed by FunctionDeclaration (#2639) 3114dd9
prefer-single-call: Fix crash on CallExpression followed by FunctionDeclaration (#2639) 3114dd9https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v59.0.0...v59.0.1
Rename no-array-push-push rule to prefer-single-call (#2617) e117783
no-array-push-push rule to prefer-single-call (#2617) e117783no-length-as-slice-end rule to no-unnecessary-slice-end (#2614) 1922df1prefer-import-meta-properties (#2607) 1f6e172no-unnecessary-array-flat-depth (#2618) c63e698no-unnecessary-array-splice-count (#2614) 1922df1Float16Array (#2622) 9e50568prefer-node-protocol: Support process.getBuiltinModule() (#2611) 056364dno-unnecessary-slice-end: Support checking Infinity (#2614) 1922df1https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v58.0.0...v59.0.0
Update engines.node in package.json to match real compatibility (#2581) e48a620
engines.node in package.json to match real compatibility (#2581) e48a620escape-case: Add case option (#2559) 0f6048cnumber-literal-case: Add hexadecimalValue option (#2559) 0f6048cprevent-abbreviations: Preserve iOS (#2560) e8798dano-unnecessary-polyfills: Fix browserslist field name (#2603) 1a4c76fno-unnecessary-polyfills: Fix crash on checking es6-error module (#2582) 66de41ano-accessor-recursion: Fix exception when used in CommonJS (#2574) ca1e432https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v57.0.0...v58.0.0
Deprecate no-instanceof-array (#2534) c9c056c
consistent-date-clone (#2544) 8cebcf4no-named-default (#2538) ed8da1bconsistent-assert (#2535) f3fc973no-instanceof-builtins 8197574 41548c4no-accessor-recursion (#2525) 92b5671no-instanceof-array (#2534) c9c056c
no-instanceof-builtins which covers more cases.prefer-includes: Support Vue template (#2526) 4e539b4prevent-abbreviations: Add util and utils to abbreviations (#2507) 5ba9f0aprefer-math-min-max: Ignore BigInt (#2467) 8b7c5fcprefer-global-this: Also exclude outerWidth and outerHeight (#2549) 8f00f76prefer-at: Remove unsafe autofix for .slice with 1 argument (#2476) 2985eccprefer-math-min-max: Reduce false positives in TypeScript (#2527) 1cbc561prefer-string-raw: Ignore ImportAttribute (#2551) d963ccdnew-for-builtins: Correct fix for Date() (#2543) e5e17f8prefer-global-this: Fix auto-fix for typeof window (#2501) b95dc12https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v56.0.1...v57.0.0
expiring-todo-comments: Fix compatibility with ESLint 9.15 (#2497) 16b09d3
expiring-todo-comments: Fix compatibility with ESLint 9.15 (#2497) 16b09d3https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v56.0.0...v56.0.1
`prefer-global-this` (#2410) 1558cbe
prefer-global-this (#2410) 1558cbeprefer-math-min-max (#2432) 7369077consistent-existence-index-check (#2425) d3e4b80better-regex from recommended rules (#2443) 461b01c
no-useless-undefined: Ignore React 19 useRef calls (#2463) 5f744e8prefer-query-selector: Add support for getElementsByName (#2398) e511ffdprefer-string-slice: Remove unsafe autofix for String#substr() (#2427) 891842dno-for-loop: Remove invalid fix for TypeScript (#2426) 1e367bbhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v55.0.0...v56.0.0
`no-length-as-slice-end` (#2400) 3c33820
no-length-as-slice-end (#2400) 3c33820no-single-promise-in-promise-methods: Remove broken autofix for Promise.all() (#2386) 8d28b6eprefer-node-protocol: Ignore Bun modules (#2384) a45b24ano-negation-in-equality-check: Ignore boolean type casting (#2379) 37e00ddhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v54.0.0...v55.0.0
`no-negation-in-equality-check` (#2353) 8957a03
no-negation-in-equality-check (#2353) 8957a03prefer-array-find: Change checkFromLast default value to true (#2367) a449af9prefer-array-some: Check Array#{findIndex,findLastIndex}() (#2370) 10568abprefer-includes: Check .lastIndexOf() (#2368) d812ad1prefer-string-raw: Ignore strings in Enums (#2354) 175ea04new to calls (#2352) d8f8161https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v53.0.0...v54.0.0
`consistent-empty-array-spread` (#2349) 8d7954c
consistent-empty-array-spread (#2349) 8d7954cprefer-string-raw (#2339) 4f1400ano-invalid-fetch-options (#2338) 342aafbno-magic-array-flat-depth (#2335) bc17428prefer-structured-clone (#2329) 497519eno-array-method-this-argument: Check Array.fromAsync() (#2330) 99489b9prefer-number-properties: Add checkNaN option (#2315) d30de50template-indent: Support member expression paths in tags and functions (#2346) aabcf1dprefer-number-properties: Don't require by default for Infinity/-Infinity to be written as Number.POSITIVE_INFINITY/Number.NEGATIVE_INFINITY (#2312) e0dfed2escape-case: Ignore String.raw (#2342) 45bd444no-hex-escape: Ignore String.raw (#2343) cc02a7fprefer-dom-node-dataset: Ignore awaited getAttribute call (#2334) 45f23d5prevent-abbreviations: Support non-ASCII filenames (#2308) 28762c8throw-new-error: Check all call expressions instead of just argument of ThrowStatement (#2332) 1626852https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v52.0.0...v53.0.0
`no-single-promise-in-promise-methods` (#2258) 8f0ee89
no-single-promise-in-promise-methods (#2258) 8f0ee89no-await-in-promise-methods (#2259) a3be554no-anonymous-default-export (#2273) c035216filename-case: Add option for multiple file extensions (#2186) 4594020import-style: Support node: protocol (#2297) c28a086prefer-array-find: Check array.filter().at(0) (#2284) e6074feprefer-prototype-methods: Check Object.prototype methods from globalThis (#2286) 1792d33no-array-callback-reference: Check logical expressions and check ternaries deeply (#2289) 231529aprefer-spread: Fix it to not report on optional chaining (#2304) df1ff1cno-anonymous-default-export: Uppercase class name (#2282) 5ce4169https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v51.0.1...v52.0.0
prefer-node-protocol: Fix false positive on bun:* modules (#2272) 43fc638
prefer-node-protocol: Fix false positive on bun:* modules (#2272) 43fc638https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v51.0.0...v51.0.1
consistent-destructuring: Remove from recommended preset (#2260) 702d51b
consistent-destructuring: Remove from recommended preset (#2260) 702d51bno-array-method-this-argument: Check Array.from() (#2262) 797caeeno-thenable: Fix crash on {[Symbol.prototype]: 0} (#2248) 3c7d7c0prefer-prototype-methods: Fix argument of isMethodCall (#2247) 3b504fahttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v50.0.1...v51.0.0
no-unnecessary-polyfills: Fix missing dependency error (#2242) 3df16068
no-unnecessary-polyfills: Fix missing dependency error (#2242) 3df16068https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v50.0.0...v50.0.1
`no-unnecessary-polyfills` (#1717) 6788d86
no-unnecessary-polyfills (#1717) 6788d86no-useless-undefined: Add checkArrowFunctionBody option (#2232) 9d7048cprefer-negative-index: Check TypedArray#subarray() (#2237) 6708a30no-useless-undefined: Ignore React state setters (#2223) 42881baprefer-module: Allow module as TSTypeParameter name (#2213) 8f61f7cstring-content: Fix JSX autofix for newlines, etc. (#2222) b95e75ehttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v49.0.0...v50.0.0
expiring-todo-comments: Support monorepos (#2159) ac51d40
expiring-todo-comments: Support monorepos (#2159) ac51d40prefer-module: Allow module as TSIndexSignature names or TSTypeAliasDeclaration ids (#2209) ea94b3bv flag (#2195) 28e7498prefer-event-target: Ignore EventEmitter from @angular/core and eventemitter3 (#2197) 1629ebehttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v48.0.1...v49.0.0
no-empty-file: Fix directive check for TypeScript parser (#2180) 1bb9ce8
no-empty-file: Fix directive check for TypeScript parser (#2180) 1bb9ce8https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v48.0.0...v48.0.1
Deprecate no-unsafe-regex rule (#2135) 7b473aa
no-unsafe-regex rule (#2135) 7b473aaprefer-top-level-await: Ignore promises inside Promise.{all,allSettled,any,race}() (#2139) d3f6b60no-process-exit: Ignore when using node:worker_threads module (#2136) 2907805prefer-array-some: Ignore filter calls with literal argument (#2097) 7a32edbprefer-modern-math-api: Check cases that Math.hypot() should be preferred (#2080) 9bbc948explicit-length-check: Ignore .length || number (#1977) b9b8794prefer-dom-node-dataset: Fix edge cases (#2171) b2d7378prefer-dom-node-dataset: Remove broken fix for element.setAttribute (#2169) 61234afno-lonely-if: Fix an edge case (#2168) ca837a8no-useless-undefined: Turn parameter with undefined default value into optional parameter (#2138) 4aa7d60no-thenable: Fix Object.fromEntries() check (#2130) f3265b9prefer-dom-node-remove: Fix incorrect auto-fix (#2084) 74bb36dhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v47.0.0...v48.0.0
Require Node.js 16 (#2073) a3bc120
eslint@>=8.38.0 (#2066) 04af765prefer-at, prefer-event-target, and prefer-string-replace-all in recommended config (#2073) a3bc120prefer-blob-reading-methods (#2065) 2bb1a04prefer-top-level-await: Ignore .cjs files (#2072) 0c3ccb1prefer-spread: Stop checking Array.from call with map function (#2064) f5beccbprefer-dom-node-text-content: Check optional chaining (#2062) 8d6d007prefer-dom-node-{append,remove}: Check optional chaining (#2061) 443999bprefer-number-properties: Fix false positives (#2050) 124bfa7https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v46.0.0...v47.0.0
Fix expiring-todo-comments (#2077) 7a6861a
expiring-todo-comments (#2077) 7a6861ahttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v46.0.0...v46.0.1
Add elems to abbreviations (#2040) 2a9c840
elems to abbreviations (#2040) 2a9c840no-useless-spread: Check Array#{toReversed,toSorted,toSpliced,with} (#2030) 55469e5prefer-set-has: Support Array#{toReversed,toSorted,toSpliced,with} (#2032) fea5b42prefer-spread: Forbid use of Array#toSpliced() to copy array (#2034) 4ada50eprefer-negative-index: Check .toSpliced() and .with() (#2031) 7ed738ano-empty-file: Support .jsx and .tsx extensions (#2002) ba1a00eexpiring-todo-comments: Do not normalize package.json (#1871) (#2020) fcd8934https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v45.0.2...v46.0.0
prefer-string-replace-all: Don't crash on invalid pattern (#2011) 3bbe027
prefer-string-replace-all: Don't crash on invalid pattern (#2011) 3bbe027prevent-abbreviations: Skip fix for variables used in Vue template (#2012) 8cd1dedhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v45.0.1...v45.0.2
no-useless-spread: Remove unsafe fix (#1996) 6756cbd
no-useless-spread: Remove unsafe fix (#1996) 6756cbdhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v45.0.0...v45.0.1
`no-typeof-undefined` (#1966) d7f7341
no-typeof-undefined (#1966) d7f7341no-negated-condition (#1963) e4aaa42prefer-set-size (#1952) 5f23c98prefer-at: Support private fields (#1929) 60bb455no-useless-undefined: Ignore Array#includes() and Set#has() (#1951) 8dfd5a7no-useless-spread: Check cloning inline arrays (#1980) 5d90d73prefer-top-level-await: Ignore expressions in class (#1976) b90a3aaprefer-string-replace-all: Improve RegExp to string fix (#1971) b844dbcprefer-string-replace-all: Check pattern even if it's already using .replaceAll (#1981) e8c5156prefer-string-replace-all: Report all String#replace() when the pattern has g flag (#1965) 6316f05prefer-string-replace-all: Ignore regex with pipe (#1962) 76deaa3prefer-regexp-test: Use suggestions if not sure regexp without g flag (#1954) 505a203no-array-for-each: Skip fix for some edge cases (#1979) 48efc7aprefer-add-event-listener: Only fix ExpressionStatement, check operator (#1955) aca21f2prevent-abbreviations: Improve fix for retVal (#1953) 25cd810prefer-top-level-await: Fix crash on for..of loop (#1950) 00a29c8https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v44.0.2...v45.0.0
no-array-method-this-argument: Ignore lodash.findLast and lodash.findLastIndex (#1927) 86e8add
no-array-method-this-argument: Ignore lodash.findLast and lodash.findLastIndex (#1927) 86e8addhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v44.0.1...v44.0.2
prefer-array-index-of: Add missing message (#1924) a981a13
prefer-array-index-of: Add missing message (#1924) a981a13https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v44.0.0...v44.0.1
`no-unnecessary-await` (#1904) 412fc6f
no-unnecessary-await (#1904) 412fc6fswitch-case-braces (#1902) 690ed8cprefer-array-find: Add option to also prefer .findLast() (#1900) 02252c7template-indent: Preserve trailing spaces (#1872) e4071f5no-document-cookie: Check window.document.cookie (#1833) 0886544prefer-array-index-of: Prefer .lastIndexOf() over .findLastIndex() (#1896) 70e5bddprefer-array-some: Check .findLast() (#1897) 3e6ae43prefer-native-coercion-functions: Check .findLast and .findLastIndex (#1893) f2c6accno-array-method-this-argument: Check .findLast and .findLastIndex (#1890) 3bc28adno-array-callback-reference: Check .findLast and .findLastIndex (#1889) 37a5cdaprefer-negative-index: Remove ArrayBuffer#at (#1899) a10e3f6prefer-at: Improve fix (#1901) 1c457bbno-await-expression-member: Fix crash on TypeScript parser (#1910) b002e75prevent-abbreviations: Skip fix when variable is JSX component (#1907) 9ed08abbetter-regexp: Don't fix if .source or .toString() is used (#1903) 8ad592bhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v43.0.2...v44.0.0
prefer-spread: Ignore Array#join().concat() and (a + b).concat() (#1859) ab71971
prefer-spread: Ignore Array#join().concat() and (a + b).concat() (#1859) ab71971https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v43.0.1...v43.0.2
Remove prefer-event-target from the recommended preset 4d2faac
prefer-event-target from the recommended preset 4d2faac
EventTarget requires Node.js 16 and we target Node.js 14. We'll enable it again in a year when we can target Node.js 16.https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v43.0.0...v43.0.1
Deprecate import-index rule (#1787) 0034e69
prefer-logical-operator-over-ternary (#1830) 5d7e622prefer-event-target (#1792) 166524aprefer-top-level-await rule to recommended preset (#1803) 6f5ecf5import-index rule (#1787) 0034e69text-encoding-identifier-case: Ignore JSX meta[charset="utf-8"] (#1817) c67a70fprefer-number-properties: Check any use of global functions (#1834) 51d7e06prefer-number-properties: Detect usage via global object (#1832) 80c4af2no-array-for-each: Check reassign in for..in and for..of (#1824) d3b2548no-useless-undefined: Ignore ref(undefined) in Vue project (#1828) e7306e5prefer-node-protocol: Always check require() (#1827) 2c914d4no-array-for-each: Improve parameter reassign detection (#1823) 56df468no-array-for-each: Add fix for arrow function body (#1785) 59218e3no-array-for-each: Fix auto-fix causing SyntaxError (#1813) 47c8337https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v42.0.0...v43.0.0
Thanks to everyone that has contributed so far.
Thanks to everyone that has contributed so far.
And special thanks to our team member @fisker for doing most of the work on this project. We could not have gotten this far without him.
no-useless-switch-case (#1779) a8fb966prefer-modern-math-apis (#1780) 6dfdeb0no-unreadable-iife (#1765) ce8a4b7prefer-native-coercion-functions (#1767) 51166f4template-indent: Set the rule error instead of warn in recommended preset (#1781) 09923afprefer-json-parse-buffer: Remove from recommended preset (#1750) 93f49f2no-array-for-each: Add fixer for parenthesized call (#1784) 5f39c37no-array-for-each: Handle optional chaining (#1753) 1d32db4prefer-object-from-entries: Stop checking unknown cases (#1771) 309771dprefer-string-trim-start-end: Check optional chaining (#1768) 1920597no-useless-undefined: Ignore arguments in Function#bind() (#1762) c501243prefer-ternary: Skip fix if there are comments (#1763) 3013565text-encoding-identifier-case: Auto-fix encoding in fs.{readFile,readFileSync}() (#1755) 5e1c932dist and dst abbreviations (#1756) dffcea8no-array-for-each: Handle ChainExpression correctly (#1772) e615a37https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v41.0.1...v42.0.0
relative-url-style: Improve fix (#1748) f406795
relative-url-style: Improve fix (#1748) f406795https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v41.0.0...v41.0.1
`text-encoding-identifier-case` (#1718) 4370602
text-encoding-identifier-case (#1718) 4370602prefer-export-from: Fix TypeScript compatibility (#1728) f14aa95prefer-at: Remove auto-fix for arguments (#1705) bba518ehttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v40.1.0...v41.0.0
expiring-todo-comments: Add date option (#1683) 16bc33a
expiring-todo-comments: Add date option (#1683) 16bc33aconsistent-function-scoping: Allow React.useHook (#1691) e910633no-useless-undefined: Allow React.createContext(undefined) (#1688) 40bc603https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v40.0.0...v40.1.0
prefer-object-has-own: Deprecate in favor of the built-in `prefer-object-has-own` rule (#1646) e59a856
no-thenable (#1616) c318644no-useless-promise-resolve-reject (#1623) 054436erelative-url-style (#1672) 6ab705bprefer-json-parse-buffer (#1676) 84c9c70prefer-object-has-own: Deprecate in favor of the built-in prefer-object-has-own rule (#1646) e59a856filename-case: Ignore $ in filenames (#1628) a43a174no-useless-promise-resolve-reject: Detect unnecessary Promise.resolve/reject in promise callback functions (#1666) f6215f3prefer-export-from: Support import assertions (#1618) 1d7a6b6prefer-top-level-await: Improve top-level expression detection (#1526) b054d65prefer-dom-node-dataset: Check .hasAttribute() and .getAttribute() (#1673) 152f153prefer-dom-node-dataset: Check .removeAttribute() (#1668) 22d8d03prefer-string-slice: Improve fix (#1675) 267115aprefer-math-trunc: Improve fix logic (#1670) 784c7a8prefer-string-slice: Improve argument type detection (#1664) 03b0946prefer-add-event-listener: Remove fix for onerror (#1650) 7bf63bbno-array-push-push: Ignore process.{stdin,stdout,stderr} (#1654) 10ad699no-new-array & no-new-buffer: Improve argument type detection (#1648) 9b04e43no-array-for-each: Ignore pIteration.forEach (#1649) 2b92385no-array-callback-reference: Ignore primitive wrappers in Array#map() (#1642) 0362c09prefer-export-from: Support "string literal specifier" (#1636) 0866b41template-indent: Check Jest inline snapshots by default (#1637) 64460e2prefer-dom-node-dataset: Fix name conversion (#1674) 7fb6f7bprefer-export-from: Fix crash in TypeScript files (#1647) 1ff8e42https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v39.0.0...v40.0.0
`prefer-code-point` (#1584) 31c83cd
prefer-code-point (#1584) 31c83cdno-await-expression-member (#1586) 0485924prefer-export-from: Add ignoreUsedVariables option (#1590) a8d52e4prevent-abbreviations: Show file basename instead of full path (#1593) 7c2867drequire-post-message-target-origin rule from recommended config (#1581) 014b4dcno-empty-file: Fix false positive with triple-slash directives (#1605) 6354bb8require-number-to-fixed-digits-argument: Ignore .toFixed from new expression (#1601) 20d61e7prefer-export-from: Fix bug on fixing export namespace as default (#1583) b564ff1additionalProperties to schema (#1589) 579d05dhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v38.0.1...v39.0.0
prefer-export-from: Ignore variables with type (#1580) ea49b21
prefer-export-from: Ignore variables with type (#1580) ea49b21https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v38.0.0...v38.0.1
`no-empty-file` (#1506) a2ba25e
no-empty-file (#1506) a2ba25eprefer-export-from (#1453) ff43745no-array-callback-reference: Only ignore Boolean in reasonable places (#1570) 46f8638require-array-join-separator: Check optional member (#1569) 15f9028https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v37.0.1...v38.0.0
Fix compatibility with ESLint 7 (#1548) e6cee0f
https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v37.0.0...v37.0.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →