Skip to content

chore(deps): @biomejs/biome ^ 2.6.7 - #9

Open
floatpanebot wants to merge 1 commit into
masterfrom
renovate/biomejs-biome-2.x-lockfile
Open

floatpanebot wants to merge 1 commit into
masterfrom
renovate/biomejs-biome-2.x-lockfile

Conversation

@floatpanebot

@floatpanebot floatpanebot commented Jun 12, 2026 •

Copy link
Copy Markdown
Member

ℹ️ Note

This PR body was truncated due to platform limits.

What?

This PR contains the following updates:

Package Change Age Confidence
@biomejs/biome (source) 2.4.16 → 2.6.7 age confidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.6.7

Compare Source

Patch Changes
  • #​12906 b3375d2 Thanks @​dyc3! - Added the nursery rule noAsyncPromiseFinally, which reports async functions passed to a promise's .finally() method. If such a function fails, its error replaces the original result or error of the promise.

    promise.finally(async () => {
        await cleanup();
    });
  • #​12894 e24da6f Thanks @​dyc3! - Added the nursery rule noDuplicateTypeConstituents, which reports types listed more than once in a union or intersection type, and undefined in the type of an optional parameter.

    type T = string | number | string;
    function f(a?: string | undefined) {}
  • #​12899 6c15027 Thanks @​dyc3! - Added the nursery rule noExcessiveSelectorComplexity, which limits how many IDs, type selectors, attribute selectors, pseudo-classes, universal selectors, compound selectors, and combinators a CSS selector can contain. It can also disallow chosen combinators, pseudo-classes, pseudo-elements, attributes, and attribute operators. The rule does nothing until an option is set.

    For example, with "maxIds": 1, the following selector is reported:

    #main #sidebar {}
  • #​12897 0b8f429 Thanks @​dyc3! - Added the new nursery rule noInvalidFetchOptions, which reports a body in the options of fetch() and new Request() when the method is GET or HEAD. These calls throw a TypeError at runtime. When no method is given, the request uses GET.

    await fetch("/", { method: "GET", body: "foo=bar" });
  • #​12926 9b6b9f4 Thanks @​dyc3! - Added the nursery rule noNewArray, which reports new Array() calls with a single argument. Such a call creates an empty array of the given length when the argument is a number, and an array that holds the argument otherwise.

    const array = new Array(length);
  • #​12895 739440f Thanks @​dyc3! - Added the new nursery rule noRedundantTypeConstituents, which reports members of union and intersection types that have no effect, such as a literal type next to its primitive type, or never in a union.

    type Status = "active" | string;
  • #​12810 71ab61b Thanks @​dyc3! - Added the nursery rule noSvelteAsyncStore, which disallows passing async functions to the writable(), readable(), and derived() stores from svelte/store.

    import { writable } from "svelte/store";
    const user = writable(null, async (set) => {
        set(await fetchUser());
    });
  • #​12917 37d9f41 Thanks @​dyc3! - Added the new nursery rule noUnresolvedDefaultImport, which reports default imports from modules that have no default export. The rule is part of the project domain.

    // foo.js only contains `export function foo() {}`
    import foo from "./foo.js";
  • #​12892 f16842e Thanks @​dyc3! - Added the nursery rule noUselessFallbackInSpread, which reports empty object fallbacks when spreading a value into an object. Spreading null, undefined, or another falsy value into an object adds no properties, so the fallback has no effect.

    const object = { ...(options || {}) };
  • #​12785 c198be2 Thanks @​dyc3! - Added the new nursery rule noUselessParameterPropertyAssignment, which reports constructor assignments such as this.name = name when name is a parameter property. TypeScript already sets the property to the parameter's value, so the assignment does nothing.

    class User {
      constructor(public name: string) {
        this.name = name;
      }
    }
  • #​12900 a4d1b0f Thanks @​dyc3! - Added the nursery rule noUselessSpread, which reports spread syntax that has no effect. For example, [first, ...[second]] can be written as [first, second], and new Set([...items]) can be written as new Set(items).

  • #​12902 d7d755b Thanks @​dyc3! - Added the nursery rule noVueExposeAfterAwait, which reports expose() and defineExpose() calls that come after an await in a Vue component's setup code. These calls run too late, so a parent component might not receive the exposed properties.

    <script setup>
    await fetchUser();
    defineExpose({ reload });
    </script>
  • #​12596 d33e56e Thanks @​dyc3! - Added the nursery rule useAtomicUpdates, which reports assignments in async functions and generators that can be based on an outdated value because the function paused at an await or yield after reading it.

    let total = 0;
    async function addToTotal(getAmount) {
        total += await getAmount(); // reported
    }
  • #​12901 48e3572 Thanks @​dyc3! - Added the new nursery rule useConsistentBooleanName. It requires variables, parameters, and functions that hold or return a boolean to start with a prefix such as is or has, and reports names with those prefixes that don't hold or return a boolean.

    const completed = progress === 100;
    const hasName = "Sindre";
  • #​12905 5b00387 Thanks @​dyc3! - Added the nursery rule useConsistentFontWeightNotation, which enforces writing font weights either as numbers or as the keywords normal and bold where possible. It checks the font-weight and font properties, and its safe fix converts between normal/bold and 400/700.

    a { font-weight: bold; }
  • #​12922 8d33c85 Thanks @​dyc3! - Added the nursery rule useConsistentTupleLabels, which reports tuple type elements without a label when other elements of the same tuple have one.

    type Point = [x: number, number];
  • #​12925 7252cbd Thanks @​dyc3! - Added the new nursery rule useGlobalRegexInMatchAll, which reports calls to matchAll() with a regular expression that doesn't have the g flag. These calls throw a TypeError at runtime.

    text.matchAll(/pattern/);
  • #​12891 e781bc3 Thanks @​dyc3! - Added the nursery rule useGlobalRegexInReplaceAll, which reports regular expressions without the g flag passed to replaceAll(). These calls throw a TypeError instead of replacing text.

    withSpaces.replaceAll(/\s+/, ",");
  • #​12896 a968e1a Thanks @​dyc3! - Added the new nursery rule useValidCharacterComparison, which reports comparisons between a single character and a string that has more than one character. Such comparisons are always false, or always true with !== and !=.

    text.charAt(0) === "ab";
  • #​13085 7a795d0 Thanks @​ematipico! - Fixed withastro/compiler-rs#221 so Astro template expressions containing comment-only JSX expression children, such as <span>{<!-- x -->}</span>, parse without diagnostics.

  • #​12621 79ce388 Thanks @​latin-1! - Fixed #​12413 and #​12414: useSortedProperties now sorts consecutive groups of properties independently, preserving the positions of nested rules, at-rules, and SCSS variable declarations.

  • #​13065 bd9faae Thanks @​ematipico! - Fixed #​5848: running useSortedKeys or useSortedSelectionSet as an editor source action no longer corrupts nested objects or selection sets.

  • #​13056 98f4d53 Thanks @​ematipico! - Fixed #​10607: noUndeclaredDependencies no longer reports imports resolved through TypeScript's compilerOptions.paths mappings.

  • #​13033 7638393 Thanks @​GBra-4-669! - Fixed #​12980: the CSS parser no longer panics on a composes declaration whose value contains a non-identifier token, such as composes: 1px;. It reports a diagnostic instead.

  • #​12917 37d9f41 Thanks @​dyc3! - Fixed noUnresolvedImports: it now reports default imports from modules that only forward exports with export * from "...". export * never re-exports a default export, so import foo from "./barrel.js" fails when ./barrel.js contains only export * from "./foo.js".

  • #​12596 d33e56e Thanks @​dyc3! - Fixed noUnreachableSuper ignoring the default values of constructor parameters. Using this in a default value is now reported, because it runs before super(), and calling super() in a default value is now recognized.

    class Child extends Parent {
    	constructor(options = this.defaults()) { // reported
    		super(options);
    	}
    }
  • #​12596 d33e56e Thanks @​dyc3! - Fixed noUselessAssignment ignoring variables that are used in the iterated value of a for...of or for...in loop, in the default values of a destructuring declaration or of parameters, or in the body of an arrow function written as a single expression. These variables are now checked too.

    function process(first, second) {
    	let list = first; // reported: this value is never read
    	list = second;
    	for (const item of list) {
    		handle(item);
    	}
    }
  • #​12805 2468384 Thanks @​vibbix! - Fixed #​12332: noUnknownUnit no longer reports hex colors that start with a digit in SCSS custom properties or in unquoted legacy IE filter values. The rule now accepts --accent: #&#8203;4566a8; instead of reporting the unknown unit a8.

  • #​12549 7fdb28f Thanks @​pkallos! - Fixed #​10464: useNullishCoalescing no longer reports a ternary or if statement that checks only null or only undefined when the type can also be the other, because ?? would change its behavior.

  • #​12952 d1896a0 Thanks @​arendjr! - Added grit() queries to JavaScript plugins. A rule can now use a GritQL pattern to select the nodes passed to run() instead of listing syntax kinds with ast().

    For example:

    export const noConsole = defineRule({
      query: grit("`console.log($args)`"),
      run(element) {
        if (element.kind !== "JS_CALL_EXPRESSION") return;
        registerDiagnostic(element, "warning", "Unexpected console.log.");
      },
    });

    Usage of Grit patterns can be particularly useful when it would take several checks to verify the shape of a snippet that involves multiple AST nodes.

    Grit sequence patterns call run() for each matched node. Matching on leaf tokens is also supported for patterns, while patterns containing rewrites are rejected. Plugins using GritQL patterns should report diagnostics from run() as usual.

    Plugins using Grit queries can still request the semantic model as well:

    export const rule = defineRule({
      query: grit("function $fn($args) { $body }", { semantic: true }),
      run(node, { model }) {
        // You can use `model` here similar to a query specified using `ast(..., { semantic: true })`.
      },
    });
  • #​13022 81d0187 Thanks @​arendjr! - Fixed an issue where GritQL patterns wouldn't match snippets if they contain a trailing list separator.

    For example, the pattern `a, b` wouldn't match the arguments in function(a, b,), whereas now they do.

  • #​12999 ace98cf Thanks @​deepsingh132! - Fixed #​12953: the Markdown formatter no longer removes the blank line between a blockquote that ends a list item and the block that follows it, matching Prettier. Removing that line could also move a following paragraph into the blockquote. The same applies to a list item that ends with a hard line break.

     - a
       > b
    +
     #### Heading
  • #​13067 45c8c4d Thanks @​ematipico! - Added the nursery rule noDisabledAttribute, which warns when buttons and other form controls use the native disabled attribute. A disabled control can't be reached with the Tab key, so the rule suggests aria-disabled or readonly instead.

    <button disabled>Save</button>
    <input type="email" disabled />
  • #​12923 0668c8f Thanks @​dyc3! - Added the new nursery rule noScssNullComparison. It reports comparisons to null in Sass @if and @else if conditions, because null already counts as false in a condition.

    a {
      @&#8203;if $value == null {}
    }
  • #​12955 e1ef913 Thanks @​ematipico! - Fixed an issue where Biome could silently skip configured plugins. Biome now reports an error when those plugins are unavailable during analysis.

  • #​12997 419aa5d Thanks @​Riccardo-bit-cpu! - Fixed #​12475: noSwitchDeclarations no longer reports var declarations inside switch clauses, matching ESLint's no-case-declarations.

  • #​12867 6a25d72 Thanks @​dyc3! - Added the nursery rule noUselessQualifier, which reports namespace and enum names that are repeated before a member inside that same namespace or enum. Biome provides a fix that removes the repeated name.

    namespace Shapes {
      export type Point = { x: number; y: number };
      const origin: Shapes.Point = { x: 0, y: 0 };
    }
  • #​12050 60f4695 Thanks @​dor-sr! - Fixed #​11933: useUnicodeRegex no longer offers to add the u flag to patterns that become invalid or change meaning in Unicode mode, such as /{/, /\-/ or /[\d-z]/. The rule still reports them.

  • #​13035 478e056 Thanks @​dyc3! - Fixed #​13026: the Markdown formatter no longer indents the rows of a table inside a blockquote when the table follows a paragraph of two or more lines. Previously, every run of the formatter indented the rows further until they were joined onto the header line.

      > First line of a paragraph,
      > second line of it.
      >
      > | A   | B   |
    -   > | --- | --- |
    -   > | x   | y   |
    + > | --- | --- |
    + > | x   | y   |
  • #​13066 f6cf28e Thanks @​arendjr! - Removed the semantic() query function from the JavaScript plugin API. Pass { semantic: true } to ast() instead to provide the semantic model to a rule.

    export const rule = defineRule({
      query: semantic("JS_REFERENCE_IDENTIFIER"),
      run(node, { model }) {
        // Use `model` here.
      },
    });

    Becomes:

    export const rule = defineRule({
      query: ast("JS_REFERENCE_IDENTIFIER", { semantic: true }),
      run(node, { model }) {
        // Use `model` here.
      },
    });

    This behaviour matches the grit() query function, which also accepts the { semantic: true } option.

  • #​12951 014b976 Thanks @​ematipico! - Fixed #​10782: noUndeclaredClasses no longer appears to hang on projects with long component import chains.

  • #​13073 827e610 Thanks @​vibbix! - Fixed #​13072: a comment before a SCSS map entry whose value is a parenthesized group no longer indents that group one level too deep. This matches Prettier 3.10 behavior now.

      $map: (
        /* comment */
        key: (
    -       a: 1,
    -       b: 2,
    -     ),
    +     a: 1,
    +     b: 2,
    +   ),
      );
  • #​12928 ae0e186 Thanks @​dyc3! - Improved noUselessStringConcat. The rule now reports literals joined after another value, such as foo + "a" + "b", and fixes template literals with placeholders, so `Hello, ${name}` + "!" becomes `Hello, ${name}!`.

    The rule no longer reports strings that would join into text that looks like a placeholder, such as "$" + "{name}", or into a directive such as "use strict". It also no longer reports obj.foo * "a" + "b", which its fix used to change to obj.foo * "ab".

    The fix no longer changes the value of the string in two cases. It used to change 1 + 2 + "b" + "c" to "12bc" instead of 1 + 2 + "bc". It used to change "\1" + "2" to "\12", which is a different escape sequence.

    The fix no longer joins literals that are on different lines when the concatenation ends with two literals on the same line. It also no longer puts a line break from a template literal into a string literal, which made the code invalid.

  • #​13048 24734a8 Thanks @​ematipico! - Fixed #​13028: Biome now keeps a paragraph in its outer block quote when a quote-only blank line closes a nested block quote.

     > > b
     >
    -> > c
    +> c
  • #​12967 bd0988e Thanks @​siketyan! - Fixed #​12827: noDuplicateProperties, noDuplicateCustomProperties, and noMissingVarFunction now check declarations at the top level of embedded CSS templates, such as styled.div`...`.

  • #​13048 24734a8 Thanks @​ematipico! - Fixed #​13029: the Markdown formatter now normalizes spaces inside inline and reference link text without removing whitespace-only text.

    -something [ text   ](   destination)
    -something [    ](   destination)
    +something [ text ](destination)
    +something [ ](destination)
  • #​13021 05a1409 Thanks @​dyc3! - Fixed #​12993: Svelte {@&#8203;const} tags with TypeScript type annotations, such as {@&#8203;const doubled: number = item * 2}, now parse and format in components with <script lang="ts">.

  • #​12968 ec0142b Thanks @​siketyan! - Fixed #​12826: Biome now detects CSS in styled-components templates that use .attrs(), such as styled.button.attrs({ type: "button" })`...` and styled(Component).attrs(() => ({}))`...`, so they are formatted and linted like styled.button`...`.

  • #​13048 24734a8 Thanks @​ematipico! - Fixed #​13027: the Markdown formatter now preserves spaces around text after a code span that crosses block quote lines.

     > `a
    -> b`c`d`
    +> b` c `d`
  • #​13055 78c744a Thanks @​ematipico! - Fixed #​13053: Biome now reports missing CLI paths as file-system errors without the INTERNAL tag or advice that the path was ignored by configuration. File-system diagnostics now use specific fs/* categories, with underlying I/O errors categorized as fs/io.

  • #​12927 c6feec1 Thanks @​dyc3! - Added the nursery rule useCatchErrorName, which requires a specific name for caught errors in try...catch statements and in the error handlers of promise.catch() and promise.then(). The name defaults to error and can be changed with the name option.

    try {} catch (err) {} // `err` should be named `error`
  • #​12788 7f971ed Thanks @​dyc3! - Extended useWhile to report for (;;) loops and to fix them to while (true).

  • #​12967 bd0988e Thanks @​siketyan! - Fixed noMissingVarFunction so it also checks declarations inside at-rules such as @page and @font-face. For example, @page { margin: --page-margin; } is now reported when --page-margin is declared in :root.

  • #​13057 d9267a5 Thanks @​ematipico! - Fixed #​10896 so Svelte <script generics> attributes containing object type constraints parse and format as TypeScript type parameters.

  • #​13048 24734a8 Thanks @​ematipico! - Fixed #​13038: Biome now aligns wrapped task-list paragraphs with the text following the checkbox.

     - [ ] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc varius
    -  malesuada eros, faucibus dapibus odio rhoncus in.
    +      malesuada eros, faucibus dapibus odio rhoncus in.

v2.6.6

Compare Source

Patch Changes
  • #​12887 da0422e Thanks @​dyc3! - Added the new nursery rule noArrayMethodsOnArguments. It reports calls to array methods on the arguments object, which isn't an array, so these calls throw a TypeError when the code runs.

    function sum() {
      return arguments.reduce((total, value) => total + value, 0);
    }
  • #​12877 cd9e10f Thanks @​dyc3! - Added the nursery rule noConstantComparisons, which reports && and || conditions that can never be true, are always true, or contain a check with no effect.

    if (statusCode <= 400 && statusCode > 500) {}
  • #​12876 a7c9586 Thanks @​dyc3! - Added the nursery rule noErasingOperation, which disallows operations with 0 that always result in zero: multiplying by 0, a bitwise AND with 0, and dividing 0 by a number. The other value in these operations has no effect on the result, which usually means the code has a mistake.

    const total = price * 0;
  • #​12841 e954f55 Thanks @​dyc3! - Added the nursery rule noNegatedArrayPredicate, which reports negated calls to Array#some() and Array#every() and suggests moving the negation into the callback function.

    // Invalid: use `array.every((item) => !isUnicorn(item))` instead.
    const isMissing = !array.some((item) => isUnicorn(item));
  • #​12888 15039f7 Thanks @​dyc3! - Added the new nursery rule noNumberArgumentOutOfRange, which reports number literal arguments of toString(), toFixed(), toExponential() and toPrecision() that are outside the range the method accepts. These calls throw a RangeError at runtime.

    value.toString(64);
  • #​12889 1cd7520 Thanks @​dyc3! - Added the nursery rule noSharedBranchCode, which reports code that is repeated at the start or end of every branch of an if statement. That code runs no matter which branch is taken, so it can be moved before or after the if statement.

    if (condition) {
      doSomething();
      cleanup();
    } else {
      doSomethingElse();
      cleanup();
    }
  • #​12842 d47fcfd Thanks @​dyc3! - Added the new nursery rule noSubtractionComparison, which reports subtracting two values only to compare the difference with 0, and suggests comparing the values directly.

    if (a - b > 0) {}
  • #​12866 7c1cd5f Thanks @​dyc3! - Added the nursery rule noSvelteIgnoredUnsubscribe, which reports calls to a store's subscribe() method when the returned function is ignored. Without that function, the subscription can never be stopped, which causes a memory leak.

    <script>
      import { count } from "./stores.js";
    
      count.subscribe((value) => console.log(value));
    </script>
  • #​12890 6b73fcf Thanks @​dyc3! - Added the new nursery rule noUninvokedArrayCallback, which reports array methods such as map() and forEach() called with a callback on an array that only has empty slots. The callback never runs in this case.

    const list = new Array(5).map(() => createElement());
  • #​12886 3bb18d8 Thanks @​dyc3! - Added the nursery rule useNextScriptForGoogleAnalytics, which reports <script> elements that load Google Analytics or Google Tag Manager. Use the GoogleAnalytics and GoogleTagManager components from @next/third-parties/google instead, which load these scripts after the page becomes interactive.

    <script async src="https://www.googletagmanager.com/gtag/js?id=G-XYZ" />

    The rule belongs to the next domain.

  • #​12309 0538e30 Thanks @​dyc3! - Added the new nursery rule usePackageJsonCpu, which reports package.json files that have no cpu field. The cpu field lists the processor types that the package supports.

    The following package.json file satisfies the rule:

    {
      "name": "my-package",
      "version": "1.0.0",
      "cpu": ["x64", "arm64"]
    }
  • #​12310 191111d Thanks @​dyc3! - Added the nursery rule usePackageJsonEngines, which reports package.json files that have no engines field.

    A package.json passes the rule once it declares the field:

    {
      "name": "my-package",
      "engines": {
        "node": ">=20"
      }
    }
  • #​12986 cc929af Thanks @​dyc3! - Fixed #​12954, where configuring rules in groups with more than 256 rules could enable or disable the wrong rule.

  • #​12931 fe9248e Thanks @​dyc3! - Improved the performance of linting. Each lint pass now spends less time stepping over syntax nodes that no enabled rule looks at.

  • #​12969 22d27e8 Thanks @​vibbix! - Improved the performance of CSS linting. Rules that compare selectors, such as noDescendingSpecificity and noDuplicateSelectors, now make fewer memory allocations.

  • #​12973 5a06df5 Thanks @​vibbix! - Fixed useGenericFontNames reporting font-family inside @font-palette-values. There, font-family names the font families the palette applies to, so it doesn't take a generic family.

    @&#8203;font-palette-values --palette {
      font-family: Bixa;
      override-colors: 0 red;
    }
  • #​12930 ce71284 Thanks @​dyc3! - Fixed #​12073: useExhaustiveSwitchCases now reports non-exhaustive switches over values read from for...of loops over Array.prototype.entries(), Map, and Set, and over properties of array elements indexed by a number variable.

    noMisusedPromises now also reports Promise-returning callbacks passed to array methods such as find and every.

  • #​12983 2987b54 Thanks @​ashokram-si! - Fixed #​12957: Biome now correctly parses SCSS negative interpolation list items as separate values instead of an invalid subtraction operator.

    -margin: -#{$s} - #{$s} - #{$s} auto;
    +margin: -#{$s} -#{$s} -#{$s} auto;

v2.6.5

Compare Source

Patch Changes
  • #​12755 bbc4887 Thanks @​dyc3! - Added the new nursery rule noArrayForEach, which reports forEach() calls that can be written as for...of loops. Values known not to be arrays, such as a Map or a Set, are ignored.

    array.forEach((element) => {
    	bar(element);
    });
  • #​12777 ba692e4 Thanks @​dyc3! - Added the new nursery rule noAwaitInPromiseMethods, which reports await inside the array passed to Promise.all(), Promise.allSettled(), Promise.any(), or Promise.race(). The await pauses the code before the method is called, so the promises no longer run at the same time.

    Promise.all([await promise, anotherPromise]);
  • #​12765 af84fb4 Thanks @​dyc3! - Added the new nursery rule noChainedComparison, which reports comparisons chained like a < b < c or a === b === c. JavaScript compares a with b first, and then compares the resulting true or false with c, so 3 > 2 > 1 is false.

    if (a < b < c) {}
  • #​12547 0a2073d Thanks @​dyc3! - Added the nursery rule noDynamicDelete, which disallows using delete with a property name that is computed at runtime. Fixed property names written as string or number literals are allowed.

    delete container[name];
  • #​12481 ed7adc2 Thanks @​dyc3! - Added the nursery rule noLateEventControl, which reports calls to preventDefault(), stopPropagation(), and stopImmediatePropagation() that run after the browser has finished handling the event, where they have no effect.

    element.addEventListener("click", async (event) => {
      await save();
      event.preventDefault();
    });
  • #​12795 179666d Thanks @​dyc3! - Added the nursery rule noMapSpread, which disallows spreading objects or arrays in the values returned by map() and flatMap() callbacks. Each spread copies a whole object or array for every item, which is slow for large arrays. Its unsafe fix replaces an object that starts with a spread with Object.assign().

    const users = getUsers();
    const rows = users.map((user) => ({ ...user, role: getRole(user) }));
  • #​12793 d9a99fd Thanks @​dyc3! - Added the nursery rule noMismatchedMapKey, which reports get() and set() calls that use a different key than the has() check before them. Checking one key and then using another is usually a copy-paste mistake.

    if (map.has(key)) {
      map.get(otherKey); // reported
    }
  • #​12342 1db7c0d Thanks @​vibbix! - Added the nursery rule noMissingScssInterpolation, which disallows Sass variables and function calls in custom property values without #{} interpolation. Sass copies these values into the CSS unchanged, so the browser receives $gap or math.div(8px, 2) instead of their results. Its unsafe fix wraps variables in #{}.

    :root {
      --gap: $gap;
      --half: math.div(8px, 2);
    }
  • #​12792 de86b37 Thanks @​dyc3! - Added the nursery rule noMissingThrow, which reports errors that are created with new but never thrown. Its unsafe fix adds the missing throw keyword.

    function check(value) {
      if (!value) {
        new Error("Missing value");
      }
    }
  • #​12790 c23e4c3 Thanks @​dyc3! - Added the new nursery rule noObjectLiteralComparison, which reports comparisons with an empty object {} or an empty array []. These comparisons never check whether a value is empty, because objects and arrays are compared by reference.

    if (value === {}) {}
  • #​12450 793f07d Thanks @​dyc3! - Added the new nursery rule noPlaywrightUnsafeReferences, which reports functions passed to page.evaluate() or page.addInitScript() that use variables declared outside of them. Playwright runs these functions in the browser page, where those variables don't exist.

    const x = 7;
    await page.evaluate(() => x * 2); // reported: `x` must be passed as an argument
  • #​12388 a0160a4 Thanks @​vibbix! - Added the nursery rule noPseudoElementInFunctionalPseudoClass, which disallows pseudo-elements inside :is(), :where(), :not() and :has(). Browsers drop these selectors, so the styles never apply to the pseudo-element.

    .card:is(::before, ::after) {
      content: "";
    }
  • #​12779 bc1befb Thanks @​dyc3! - Added the new nursery rule noSinglePromiseInPromiseMethods, which reports an array with a single element passed to Promise.all(), Promise.any(), or Promise.race(). The rule offers a fix that awaits the value directly or uses Promise.resolve().

    const result = await Promise.all([promise]);
  • #​12241 d96de1d Thanks @​dyc3! - Added the nursery rule noSvelteBindValueOnCheckableInputs, which reports bind:value on checkbox and radio inputs in Svelte files. Users change whether these inputs are checked, not their value, so bind:value does not track their choice.

    <input type="checkbox" bind:value={accepted} />
  • #​12764 e166d08 Thanks @​dyc3! - Added the new nursery rule noSyncMethods, which reports calls to functions whose names end with Sync, such as fs.readFileSync(). These calls block the program until they finish. The allowAtRootLevel option allows them outside of functions, and the ignore option allows specific function names.

    const contents = fs.readFileSync("data.txt");
  • #​12515 c0a4174 Thanks @​dyc3! - Added the nursery rule noTanstackQueryVoidQueryFn, which disallows TanStack Query functions that don't return any data. TanStack Query doesn't accept undefined as the data of a query, so the query fails with an error.

    import { useQuery } from "@&#8203;tanstack/react-query";
    
    useQuery({
        queryKey: ["todos"],
        queryFn: async () => {
            await fetch("/api/todos");
        },
    });

    The rule belongs to the tanstackQuery and types domains.

  • #​12482 1e6e407 Thanks @​dyc3! - Added the nursery rule noUnnecessaryStringTrim, which reports trim() calls before startsWith() or endsWith() when only one side of the string matters. Use trimStart() or trimEnd() instead.

    value.trim().startsWith("-");
  • #​12772 a108773 Thanks @​dyc3! - Added the nursery rule noUselessAwait, which reports await on values that are never promises, such as literals, arrays, and the results of comparisons.

    await [fetchUser(), fetchPosts()];
  • #​12783 d0931b0 Thanks @​dyc3! - Added the new nursery rule noUselessLengthCheck, which reports array length checks that don't change the res

✂ Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.



  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

@floatpanebot floatpanebot added the dependencies Dependency updates label Jun 12, 2026
@vercel

vercel Bot commented Jun 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
go-icalendar Ready Ready Preview Nov 12, 2026 2:47am UTC

@floatpanebot floatpanebot added the size/M Diff: 51–200 lines label Jun 12, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 01733ef to 1d5dde3 Compare June 23, 2026 09:54
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.0 chore(deps): @biomejs/biome ^ 2.5.1 Jun 23, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 1d5dde3 to da48ecc Compare July 1, 2026 12:44
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.1 chore(deps): @biomejs/biome ^ 2.5.2 Jul 1, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from da48ecc to 364df3f Compare July 8, 2026 10:25
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.2 chore(deps): @biomejs/biome ^ 2.5.3 Jul 8, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 364df3f to ef15766 Compare July 15, 2026 06:21
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.3 chore(deps): @biomejs/biome ^ 2.5.4 Jul 15, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from ef15766 to 75ef465 Compare July 21, 2026 10:31
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.4 chore(deps): @biomejs/biome ^ 2.5.5 Jul 21, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 75ef465 to e796b47 Compare July 28, 2026 11:25
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.5 chore(deps): @biomejs/biome ^ 2.5.6 Jul 28, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from e796b47 to df446a7 Compare August 4, 2026 14:28
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.6 chore(deps): @biomejs/biome ^ 2.5.7 Aug 4, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from df446a7 to 0b161f9 Compare August 11, 2026 09:04
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.7 chore(deps): @biomejs/biome ^ 2.5.8 Aug 11, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 0b161f9 to 39f5708 Compare August 17, 2026 23:28
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.8 chore(deps): @biomejs/biome ^ 2.5.9 Aug 17, 2026
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.12 chore(deps): @biomejs/biome ^ 2.5.13 Sep 10, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from cfffb5d to 3141bc7 Compare September 16, 2026 11:13
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.13 chore(deps): @biomejs/biome ^ 2.5.14 Sep 16, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 3141bc7 to 9df87c7 Compare September 30, 2026 18:59
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.14 chore(deps): @biomejs/biome ^ 2.5.15 Sep 30, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 9df87c7 to 852a853 Compare October 21, 2026 09:55
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.5.15 chore(deps): @biomejs/biome ^ 2.6.0 Oct 21, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 852a853 to 06ea9cb Compare October 21, 2026 14:59
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.6.0 chore(deps): @biomejs/biome ^ 2.6.2 Oct 21, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 06ea9cb to 98134a9 Compare October 24, 2026 14:23
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.6.2 chore(deps): @biomejs/biome ^ 2.6.3 Oct 24, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 98134a9 to 0be782c Compare October 29, 2026 05:10
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.6.3 chore(deps): @biomejs/biome ^ 2.6.4 Oct 29, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 0be782c to 057e369 Compare November 4, 2026 14:05
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.6.4 chore(deps): @biomejs/biome ^ 2.6.5 Nov 4, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from 057e369 to ca6ee71 Compare November 6, 2026 14:53
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.6.5 chore(deps): @biomejs/biome ^ 2.6.6 Nov 6, 2026
@floatpanebot
floatpanebot force-pushed the renovate/biomejs-biome-2.x-lockfile branch from ca6ee71 to 7d1cf65 Compare November 12, 2026 02:47
@floatpanebot floatpanebot changed the title chore(deps): @biomejs/biome ^ 2.6.6 chore(deps): @biomejs/biome ^ 2.6.7 Nov 12, 2026

This branch was successfully deployed

1 active deployment
Preview — 7d1cf654 Deployed Nov 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates size/M Diff: 51–200 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant