Przejdź do głównej zawartości

Version History

Version 2.3.15 Latest

Patch Changes

  • #9019 043b67c Thanks @dyc3! - Added the lint rule noNestedPromises. This rule detects nested .then() or .catch() calls that could be refactored into flat promise chains.

    // Invalid: nested promise that can be flattened
    doThing().then(function () {
    return doOtherThing().then(console.log);
    });
    // Valid: flat promise chain
    doThing()
    .then(() => doOtherThing())
    .then(console.log);

    The rule intelligently allows nesting when the inner callback references variables from the outer scope, as these cases cannot be safely flattened.

  • #9029 6ebf6c6 Thanks @ff1451! - Added the nursery rule noUselessReturn. The rule reports redundant return; statements that don’t affect the function’s control flow.

    // Invalid: return at end of function is redundant
    function foo() {
    doSomething();
    return;
    }
  • #9017 8bac2da Thanks @mdevils! - Reverted a behavior change in useExhaustiveDependencies that was accidentally included as part of the #8802 fix. The change made method calls on objects (e.g., props.data.forEach(...)) report only the object (props.data) as a missing dependency instead of the full member expression. This behavior change will be reconsidered separately.

  • #9005 c8dbbbe Thanks @corvid-agent! - Fixed #8790: The noAssignInExpressions rule no longer reports a false positive when an assignment is used as the expression body of an arrow function (e.g., const f = b => a += b).

  • #8519 ccdc602 Thanks @ruidosujeira! - Fixed #8518, where globally excluded files in a monorepo were still being processed when using "extends": "//".

    When a package-level configuration extends the root configuration with "extends": "//", glob patterns (such as those in files.includes) are now correctly resolved relative to the project root directory, instead of the current workspace directory.

  • #9033 0628e0a Thanks @mdevils! - Fixed #8967. useExhaustiveDependencies no longer reports false positives for variables destructured from a rest pattern.

  • #9023 8ef9d1d Thanks @siketyan! - Fixed #9020: When javascript.jsxRuntime is set to reactClassic, noUnusedImports and useImportType rules now allow importing the React identifier from a package other than react. This aligns the behavior with tsc (--jsx=react), which also allows importing React from any package.

  • #8646 16fd71d Thanks @siketyan! - Fixed #8605: Text expressions in some template languages ({{ expr }} or { expr }) at the top level of an HTML document no longer causes panicking.

  • #8930 51c158e Thanks @ANKANJAGTAP! - Fixed #8917 useExhaustiveDependencies now correctly detects JSX component identifiers as hook dependencies.

  • #9009 7d229c7 Thanks @Netail! - Fixed typo in noPositiveTabindex’s quick fix text.

  • #8758 8c789f1 Thanks @Pranav2612000! - Updated the useJsxKeyInIterable rule to not run inside Map constructors

  • #8977 bbe0e0c Thanks @FrankFMY! - Fixed #4888. noUnusedImports now adds export {} when removing the last import in a TypeScript file to prevent it from becoming an ambient module. This does not apply to embedded scripts in Vue, Svelte, or Astro files, which are already in a module context.

  • #9016 9d4cfa3 Thanks @dyc3! - Added eslint migration metadata for the rules @typescript/no-var-requires, @typescript/keyword-spacing, @typescript/func-call-spacing, vue/keyword-spacing, vue/func-call-spacing, and unicorn/empty-brace-spaces,

  • #8848 2cba2b3 Thanks @LouisLau-art! - Fixed #8845. Now useGenericFontNames doesn’t trigger when font is declared inside the @supports at-rule.

  • #8997 a5f3212 Thanks @mldangelo! - Fixed #8476. useAwaitThenable no longer reports false positives for await on call expressions whose return type cannot be resolved (e.g., cross-module function calls to Node.js builtins or npm packages).

  • #8978 cc7a478 Thanks @FrankFMY! - Fixed #8645. useAwait no longer reports async generator functions that use yield*, since yield* in an async generator delegates to an AsyncIterable and requires the async modifier.