unstale

npm / eslint-plugin-unicorn

eslint-plugin-unicorn

What changed in eslint-plugin-unicorn 62 to 78, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

37 breaking5 security297 new APIs and options8 performance162 behavior and defaults7 tooling165 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

eslint-plugin-unicorn 7836 changes

Breaking changes 1

  • Rules that skipped code with comments now report it, withholding fixes only when they would remove comments.

    78.0.0release notes

Security 2

New APIs and options 4

  • Adds a rule for detecting repeated call wrappers.

    78.0.0release notes

  • Adds a rule for detecting unnecessary default arguments.

    78.0.0release notes

  • Checks TypeScript instantiation expressions.

    78.0.0release notes

  • Combines non-literal exits in TypeScript when type information is available.

    78.0.0release notes

Behavior and default changes 10

  • Allows the does prefix by default.

    78.0.0release notes

  • Supports && and || chains of negated operands.

    78.0.0release notes

  • Allows known pure imported helpers, such as defineConfig() and React memo(), and checks default-exported expressions.

    78.0.0release notes

  • Supports static template literal fallbacks.

    78.0.0release notes

  • Supports fallbacks to earlier bindings.

    78.0.0release notes

  • Checks let and var listener functions, and ignores reassigned listeners.

    78.0.0release notes

  • Supports destructuring assignments.

    78.0.0release notes

  • Supports statements that differ in only one part, such as call(test ? a : b).

    78.0.0release notes

  • Allows cached promise assignments.

    78.0.0release notes

  • Adds support for complex Markdown labels, embedded HTML in Markdown, JSX, URL.canParse(), URL.parse(), and more HTML attributes.

    78.0.0release notes

Fixes and other changes 19

eslint-plugin-unicorn 7770 changes

Breaking changes 17

  • In logical mode, the rule now reports unnecessary boolean casts.

    77.0.0release notes

  • eslint-disable comments now suppress reports instead of making rules skip the code, avoiding directives that look unused.

    77.0.0release notes

  • Deprecated flat/all config was removed; use all instead.

    77.0.0release notes

  • Deprecated flat/recommended config was removed; use recommended instead.

    77.0.0release notes

  • Rule now supports CSS and JSON and is enabled in the recommended preset.

    77.0.0release notes

  • Rule now reports nested await expressions.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-deprecated-features.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-duplicate-selectors.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-duplicate-font-family-names.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-invalid-media-features.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-nesting-with-mixed-specificity.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-redundant-nested-style-rules.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-unknown-annotations.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-unknown-pseudo-selectors.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/no-unscoped-nesting-selector.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/prefer-explicit-viewport-units.

    77.0.0release notes

  • CSS-only rule moved to eslint-cssicorn as cssicorn/prefer-media-feature-range-syntax.

    77.0.0release notes

New APIs and options 36

Performance 1

Behavior and default changes 10

Fixes and other changes 6

  • Rule avoids false positives for spread arguments.

    77.0.0release notes

  • Shorthand detection improved.

    77.0.0release notes

  • Checks guards after other statements in checkShortBodies.

    77.0.0release notes

  • Type inference for destructured bindings is fixed.

    77.0.0release notes

  • Checks guards after other statements in checkShortBodies.

    77.0.0release notes

  • Array call autofixes are now safe.

    77.0.0release notes

eslint-plugin-unicorn 768 changes

New APIs and options 3

  • Adds the checkContinue option and defaults it to off.

    76.0.0release notes

  • Adds the checkConditionals option and defaults it to off.

    76.0.0release notes

  • Adds the checkCompoundConditions option and defaults it to off.

    76.0.0release notes

Behavior and default changes 4

Fixes and other changes 1

  • Autofixes no longer hardcode a tab for inserted indentation.

    76.0.0release notes

eslint-plugin-unicorn 7543 changes

New APIs and options 26

Performance 1

Behavior and default changes 8

Tooling 1

Fixes and other changes 7

eslint-plugin-unicorn 7414 changes

Performance 1

Behavior and default changes 10

Fixes and other changes 3

  • Fixes indentation and handling of the in operator.

    74.0.0release notes

  • Fixes false positives when the return value is used.

    74.0.0release notes

  • Fixes a false positive in mutable branch conditions.

    74.0.0release notes

eslint-plugin-unicorn 7321 changes

Security 1

New APIs and options 8

  • Adds the consistent-arrow-return-style rule.

    73.0.0release notes

  • Adds granular check options, including checkVariables, to consistent-boolean-name.

    73.0.0release notes

  • Adds the wrappers option to consistent-boolean-name.

    73.0.0release notes

  • Adds the defaultExport option to consistent-function-style.

    73.0.0release notes

  • Adds the iteration-fallback-style rule.

    73.0.0release notes

  • Adds the no-barrel-files rule.

    73.0.0release notes

  • Adds the ignore option to prefer-https.

    73.0.0release notes

  • Adds the single-line-block-comment-style rule.

    73.0.0release notes

Performance 1

Behavior and default changes 4

Fixes and other changes 7

eslint-plugin-unicorn 7229 changes

Breaking changes 2

  • Adds the rule to the recommended preset.

    72.0.0release notes

  • Renames the checkVaryingCallee option to checkVaryingBase.

    72.0.0release notes

New APIs and options 12

  • Adds a rule for detecting missing local resources.

    72.0.0release notes

  • Adds a rule for detecting multiple promise resolver calls.

    72.0.0release notes

  • Adds a rule for detecting shorthand property overrides.

    72.0.0release notes

  • Adds a rule for detecting transition-all usage.

    72.0.0release notes

  • Adds a rule for detecting unnecessary string trimming.

    72.0.0release notes

  • Adds a rule for detecting useless re-exports.

    72.0.0release notes

  • Adds an async IIFE suggestion.

    72.0.0release notes

  • Adds options to the rule.

    72.0.0release notes

  • Adds a rule for preferring explicit viewport units.

    72.0.0release notes

  • Adds the consistent-as-needed option.

    72.0.0release notes

  • Adds a rule for preferring then-catch promise handling.

    72.0.0release notes

  • Adds a rule for requiring frontmatter fields.

    72.0.0release notes

Performance 1

Behavior and default changes 11

Fixes and other changes 3

eslint-plugin-unicorn 719 changes

Behavior and default changes 7

Fixes and other changes 2

  • The rule respects configured globals in isolated functions.

    71.0.0release notes

  • In TypeScript, the rule ignores conditional flatMap fixes.

    71.0.0release notes

eslint-plugin-unicorn 7021 changes

New APIs and options 10

  • Adds a rule for detecting async Promise finally callbacks.

    70.0.0release notes

  • Adds an ignore option to the rule.

    70.0.0release notes

  • Adds a rule for detecting unnecessary fetch options.

    70.0.0release notes

  • Adds a rule for detecting unsafe Promise.allSettled values.

    70.0.0release notes

  • Adds a rule for preferring AbortSignal.any.

    70.0.0release notes

  • Adds a rule for preferring Array.flatMap.

    70.0.0release notes

  • Adds a rule for preferring Array.from for ranges.

    70.0.0release notes

  • Adds a rule for preferring block statements over IIFEs.

    70.0.0release notes

  • Adds a rule for preferring groupBy.

    70.0.0release notes

  • Adds a rule for preferring simplified conditions.

    70.0.0release notes

Behavior and default changes 8

Fixes and other changes 3

eslint-plugin-unicorn 6938 changes

New APIs and options 15

Behavior and default changes 7

  • Treats undefined and null fallbacks as an empty branch.

    69.0.0release notes

  • Allows dynamic access to a known boolean value.

    69.0.0release notes

  • Allows stack on Error instances.

    69.0.0release notes

  • Allows type-only exports.

    69.0.0release notes

  • No longer reports existence checks.

    69.0.0release notes

  • Allows computed keys when a rest element is present.

    69.0.0release notes

  • Only checks positive string index access when checkAllIndexAccess is enabled.

    69.0.0release notes

Fixes and other changes 16

  • No longer mutates commented-out multi-line code.

    69.0.0release notes

  • No longer crashes on Svelte {#each} bindings.

    69.0.0release notes

  • Allows a no-substitution template literal for name.

    69.0.0release notes

  • Does not require an options parameter when it is forwarded to super() inline.

    69.0.0release notes

  • Excludes Vite type declarations.

    69.0.0release notes

  • Ignores braces inside block comments.

    69.0.0release notes

  • Does not report custom push methods that do not return arrays.

    69.0.0release notes

  • Fixes false positives for destructured parameters and yield expressions.

    69.0.0release notes

  • Ignores non-string receivers.

    69.0.0release notes

  • Restricts values() reporting to arrays.

    69.0.0release notes

  • Keeps Boolean() around possibly-undefined values.

    69.0.0release notes

  • Skips concatenations that form a ${…} placeholder.

    69.0.0release notes

  • Autofixes else bodies containing JSX.

    69.0.0release notes

  • Improves fixes.

    69.0.0release notes

  • Does not suggest the swap when the result feeds arithmetic.

    69.0.0release notes

  • Does not report when the if body exits the loop.

    69.0.0release notes

eslint-plugin-unicorn 6864 changes

Breaking changes 2

  • Replaces the prevent-abbreviations rule name; update configurations to use name-replacements.

    68.0.0release notes

  • Removes prefer-type-literal-last from the unopinionated preset.

    68.0.0release notes

Security 1

New APIs and options 38

Behavior and default changes 12

Fixes and other changes 11

eslint-plugin-unicorn 6735 changes

Breaking changes 1

  • Disallows property targets in object destructuring.

    67.0.0release notes

Security 1

New APIs and options 15

Behavior and default changes 10

  • Removes the rule from the recommended preset, so it is no longer enabled by that preset.

    67.0.0release notes

  • Skips non-prose comments.

    67.0.0release notes

  • Groups static methods with other static members.

    67.0.0release notes

  • With preferAttributes, flags .dataset when it is assigned to a variable.

    67.0.0release notes

  • Suggests Math.sumPrecise() for sum reduces.

    67.0.0release notes

  • Disallows property targets in array destructuring.

    67.0.0release notes

  • Removes the rule from the recommended preset, so it is no longer enabled by that preset.

    67.0.0release notes

  • Ignores template literal types.

    67.0.0release notes

  • Reports partially-scoped selector lists.

    67.0.0release notes

  • Keeps null and undefined last.

    67.0.0release notes

Tooling 1

  • Disallows using push() and unshift() return values.

    67.0.0release notes

Fixes and other changes 7

eslint-plugin-unicorn 66139 changes

Breaking changes 6

  • The rule stops expanding destructuring.

    66.0.0release notes

  • ESLint 10.4 is now required to use this release.

    66.0.0release notes

  • The no-array-for-each rule is renamed to no-for-each; update rule configuration accordingly.

    66.0.0release notes

  • This rule is dropped and replaced by prefer-unicode-code-point-escapes, which covers more cases.

    66.0.0release notes

  • Node.js 22 is now required to use this release.

    66.0.0release notes

  • A new rule is available and replaces no-hex-escape while covering more cases.

    66.0.0release notes

New APIs and options 76

Performance 1

Behavior and default changes 40

  • The rule now ignores props.children.

    66.0.0release notes

  • The rule now allows the newLine word.

    66.0.0release notes

  • The rule now tracks JSX references.

    66.0.0release notes

  • The rule detects length <= 0 as a zero-length check.

    66.0.0release notes

  • The rule now allows acronyms in pascal case.

    66.0.0release notes

  • The rule now supports node: builtins.

    66.0.0release notes

  • The rule now ignores JSX wrappers.

    66.0.0release notes

  • The rule now ignores non-array TypeScript receivers.

    66.0.0release notes

  • The rule now supports all file extensions.

    66.0.0release notes

  • The rule now supports cached length loops.

    66.0.0release notes

  • The rule normalizes legacy MIME types.

    66.0.0release notes

  • The rule now respects Browserslist configuration.

    66.0.0release notes

  • The rule now supports inline TypeScript object type literals.

    66.0.0release notes

  • The rule now supports ternary expressions.

    66.0.0release notes

  • The rule now checks object spread in Object.assign().

    66.0.0release notes

  • In TypeScript files, case null and case undefined are allowed before default.

    66.0.0release notes

  • The rule now handles guarded indexed access.

    66.0.0release notes

  • The rule now ignores TypeScript call arguments.

    66.0.0release notes

  • The rule stops reporting plain concat normalization.

    66.0.0release notes

  • The rule now supports .filter(…).flatMap(…).

    66.0.0release notes

  • The rule now supports for-of array mapping.

    66.0.0release notes

  • The rule now prefers at() for string indexing.

    66.0.0release notes

  • The rule now ignores well-known XML namespace URIs.

    66.0.0release notes

  • The rule simplifies boolean array predicates.

    66.0.0release notes

  • The rule now checks parseInt.

    66.0.0release notes

  • The rule now handles .replaceChildren().

    66.0.0release notes

  • The rule now ignores type predicates.

    66.0.0release notes

  • The rule now checks legacy integer patterns.

    66.0.0release notes

  • The rule auto-fixes isNaN/isFinite when the argument is a number.

    66.0.0release notes

  • The rule now checks for-of loops.

    66.0.0release notes

  • The rule's TypeScript support is improved and it supports String#search() checks.

    66.0.0release notes

  • The rule now supports String#search() checks.

    66.0.0release notes

  • The rule handles trivial for...of copies and improves concat() array detection; it stops checking String#split('').

    66.0.0release notes

  • The rule stops checking String#split('').

    66.0.0release notes

  • The rule allows more regex flags for string fixes.

    66.0.0release notes

  • The rule now detects indexOf() === 0.

    66.0.0release notes

  • The rule now ignores literal discriminants.

    66.0.0release notes

  • The rule no longer flags typeof x === 'undefined' existence checks.

    66.0.0release notes

  • The rule now ignores e2e and a11y.

    66.0.0release notes

  • The rule ignores sql tagged templates.

    66.0.0release notes

Tooling 2

  • The rule checks single-character substring calls and prefers at() for string indexing.

    66.0.0release notes

  • The rule now provides an autofix.

    66.0.0release notes

Fixes and other changes 14

eslint-plugin-unicorn 6591 changes

Breaking changes 7

  • The rule was dropped because it is too broken and not feasible to fix.

    65.0.0release notes

  • Renames the prefer-dom-node-dataset rule to dom-node-dataset.

    65.0.0release notes

  • Renames ignoreDates to checkDates and makes checkDates true by default.

    65.0.0release notes

  • Renames ignoreDatesOnPullRequests to checkDatesOnPullRequests.

    65.0.0release notes

  • Checks directories as well as filenames.

    65.0.0release notes

  • Renames ignoreUsedVariables to checkUsedVariables.

    65.0.0release notes

  • The rule no longer exempts WebWorker-specific APIs.

    65.0.0release notes

New APIs and options 42

Performance 1

Behavior and default changes 8

Tooling 2

Fixes and other changes 31

eslint-plugin-unicorn 6429 changes

Breaking changes 1

  • The rule now flags return undefined when the return type explicitly includes undefined.

    64.0.0release notes

New APIs and options 5

  • Adds a rule for consistent escaping in template literals.

    64.0.0release notes

  • Adds the ignoreDates option.

    64.0.0release notes

  • Adds a rule for detecting useless conversions of iterators to arrays.

    64.0.0release notes

  • Adds a rule for putting the simpler condition first.

    64.0.0release notes

  • Adds a rule for switch-case break placement.

    64.0.0release notes

Performance 1

Behavior and default changes 6

Fixes and other changes 16

eslint-plugin-unicorn 6319 changes

New APIs and options 1

Behavior and default changes 3

Tooling 1

Fixes and other changes 14

  • Explicitly checks the specifier node type.

    63.0.0release notes

  • Does not flag ESLint disable comments.

    63.0.0release notes

  • Ignores || with a string fallback value.

    63.0.0release notes

  • Fixes a crash on export {x} without a from clause.

    63.0.0release notes

  • Ignores TypeScript types.

    63.0.0release notes

  • Ignores .sort() calls with non-function arguments.

    63.0.0release notes

  • Skips autofixes for string types when .entries() would be needed.

    63.0.0release notes

  • Fixes false positives for graduated esnext features.

    63.0.0release notes

  • Uses suggestions to remove empty arrays that have comments.

    63.0.0release notes

  • Fixes a false positive on Iterator.

    63.0.0release notes

  • Avoids autofixing non-function assignments.

    63.0.0release notes

  • Prevents type-imports from being removed when using a namespace import.

    63.0.0release notes

  • Skips TypedArray and ArrayBuffer constructor calls.

    63.0.0release notes

  • Excludes inline snapshots.

    63.0.0release notes

eslint-plugin-unicorn 6215 changes

New APIs and options 6

Behavior and default changes 4

Fixes and other changes 5