Skip to content

chore(deps): update dependency @biomejs/biome to v2#82

Open
renovate[bot] wants to merge 1 commit intodevfrom
renovate/biomejs-biome-2.x
Open

chore(deps): update dependency @biomejs/biome to v2#82
renovate[bot] wants to merge 1 commit intodevfrom
renovate/biomejs-biome-2.x

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jun 17, 2025

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@biomejs/biome (source) 1.9.42.4.7 age confidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.4.7

Compare Source

Patch Changes
  • #​9318 3ac98eb Thanks @​ematipico! - Added new nursery lint rule useBaseline for CSS. The rule reports when CSS properties, property values, at-rules, media conditions, functions, or pseudo-selectors are not part of the configured Baseline tier.

    For example, at the time of writing, the rule will trigger for the use of accent-color because it has limited availability:

    a {
      accent-color: bar;
    }
  • #​9272 2de8362 Thanks @​terror! - Added the nursery rule useImportsFirst that enforces all import statements appear before any non-import statements in a module. Inspired by the eslint-plugin-import import/first rule.

    // Invalid
    import { foo } from "foo";
    const bar = 1;
    import { baz } from "baz"; // ← flagged
    
    // Valid
    import { foo } from "foo";
    import { baz } from "baz";
    const bar = 1;
  • #​9285 93ea495 Thanks @​dyc3! - Fixed noUndeclaredVariables from erroneously flagging props only used in the template section in Vue SFCs

  • #​9435 6c5a8f2 Thanks @​siketyan! - Fixed #​9432: Values referenced as a JSX element in Astro/Vue/Svelte templates are now correctly detected; noUnusedImports and useImportType rules no longer reports these values as false positives.

  • #​9362 fc9ca4c Thanks @​Netail! - Extra rule source references. biome migrate eslint should do a bit better detecting rules in your eslint configurations.

  • #​9392 b881fea Thanks @​g-ortuno! - Fixed biomejs/biome-vscode#959: LSP now correctly resolves project directory when configurationPath points to a configuration file outside the workspace.

  • #​9420 a1c46af Thanks @​ematipico! - Fixed #​9385: noUselessEscapeInString no longer incorrectly flags valid CSS hex escapes (e.g. \e7bb) as useless. The rule now recognizes all hex digits (0-9, a-f, A-F) as valid escape characters in CSS strings.

  • #​9416 f2581b8 Thanks @​ematipico! - Fixed #​9131, #​9112, #​9166: the formatter no longer crashes or produces corrupt output when a JS file with experimentalEmbeddedSnippetsEnabled contains non-embedded template literals alongside embedded ones (e.g. console.log(\test`)next tographql(`...`)`).

  • #​9344 cb4d7d7 Thanks @​ematipico! - Fixed #​6921: noShadow no longer incorrectly flags destructured variable bindings in sibling scopes as shadowing. Object destructuring, array destructuring, nested patterns, and rest elements are now properly recognized as declarations.

  • #​9360 bc5dd99 Thanks @​ematipico! - Fixed #​7125: The rule noShadow no longer incorrectly flags parameters in TypeScript constructor and method overload signatures.

  • #​9371 29cac17 Thanks @​ematipico! - Fixed #​5279: Tabs in diagnostic diff output are now rendered at a consistent width across context and changed lines, fixing visual misalignment when source files use tab indentation.

  • #​9043 61e2a02 Thanks @​dyc3! - Fixed #​8897: Biome now parses @utility names containing / when Tailwind directives are enabled.

  • #​9354 930c858 Thanks @​denbezrukov! - Improved CSS parser recovery for invalid unicode-range values that mix wildcard ranges with range intervals. For example, Biome now reports clearer diagnostics for invalid syntax like:

    unicode-range: U+11???-2??;
    unicode-range: U+11???-;

    with diagnostics such as:

    × Wildcard ranges cannot be combined with a range interval.
      > unicode-range: U+11???-2??;
                                ^
    
    × Expected a codepoint but instead found ';'.
      > unicode-range: U+11???-;
                                 ^
    
  • #​9355 78e74a2 Thanks @​SchahinRohani! - Fixed #​9349: Biome now correctly handles Vue dynamic :alt and v-bind:alt bindings in useAltText, preventing false positives in .vue files.

  • #​9369 b309dde Thanks @​costajohnt! - Fixed #​9210: useAnchorContent no longer reports an accessibility error for Astro Image components inside links when they provide non-empty alt text.

  • #​9345 70c2d4e Thanks @​ematipico! - Fixed #​7214: useOptionalChain now detects optional chain patterns that don't start at the beginning of a logical AND expression. For example, bar && foo && foo.length is now correctly flagged and fixed to bar && foo?.length.

  • #​9311 78c4e9b Thanks @​ruidosujeira! - Fixed #​9245: the useSemanticElements rule no longer suggests <output> for role="status" and role="alert". The <output> element is only a relatedConcept of these roles, not a direct semantic equivalent. These roles are now excluded from suggestions, aligning with the intended behavior of the upstream prefer-tag-over-role rule.

  • #​9363 b2ffb4a Thanks @​ematipico! - Fixed #​5212: useSemanticElements no longer reports a diagnostic when a semantic element already has its corresponding role attribute (e.g. <nav role="navigation">, <footer role="contentinfo">). These cases are now correctly left to noRedundantRoles.

  • #​9364 1bb9edc Thanks @​xvchris! - Fixed #​9357. Improved the information emitted by some diagnostics.

  • #​9434 bf12092 Thanks @​siketyan! - Fixed #​9433: noBlankTarget now correctly handles dynamic href attributes, such as <a href={company?.website} target="_blank">.

  • #​9351 5046d2b Thanks @​Netail! - Expanded the noNegationElse rule to cover the inequality & strict inequality operator.

  • #​9353 2a29e0d Thanks @​Conaclos! - Fixed #​7583:
    organizeImports now
    sorts named specifiers inside bare exports and merges bare exports.

    - export { b, a };
    - export { c };
    + export { a, b, c };

    Also, organizeImports now correctly adds a blank line between an import chunk
    and an export chunk.

      import { A } from "package";
    +
      export { A };
  • #​8658 bdcc934 Thanks @​rksvc! - When the domains field is set in the configuration file, domains is now automatically enabled when Biome detects certain dependencies in package.json.

  • #​9383 f5c8bf0 Thanks @​ematipico! - Fixed #​6606: The type inference engine now resolves Record<K, V> types, synthesizing them as object types with index signatures. This improves accuracy for type-aware lint rules such as noFloatingPromises, noMisusedPromises, useAwaitThenable, and useArraySortCompare when operating on Record-typed values.

  • #​9359 701ddd3 Thanks @​ematipico! - Fixed #​7516: noUnusedImports no longer reports a false positive when a local variable shadows an imported type namespace that is still used in a type annotation.

  • #​9473 50e93bd Thanks @​ematipico! - Improved the detection of variables inside Astro files. Now the rule noUnusedVariables and others will trigger fewer false positives.

  • #​9459 171b2ee Thanks @​ematipico! - Fixed #​9314. Now Biome doesn't panic when useAriaPropsForRole is configured using an object.

  • #​9465 c8918d6 Thanks @​Netail! - Fixed #​9464: Temporal is now correctly detected as a global.

  • #​9367 722f0da Thanks @​Netail! - Added the nursery rule noTopLevelLiterals. It requires the root-level value to be an array or object.

    Invalid:

    "just a string"
  • #​9333 a294b89 Thanks @​terror! - Fixed #​9310. Now the HTML formatter doesn't mangle elements that are followed by self-closing elements such as <br> or <img>.

  • #​9391 4bffb66 Thanks @​ematipico! - Slightly increased the performance of the CLI in projects that have more than ~2K files.

  • #​9365 776cb64 Thanks @​Netail! - Added the nursery rule noEmptyObjectKeys, which disallows the use of empty keys in JSON objects.

    Invalid:

    {
      "": "value"
    }

v2.4.6

Compare Source

Patch Changes

v2.4.5

Compare Source

Patch Changes
  • #​9185 e43e730 Thanks @​dyc3! - Added the nursery rule useVueScopedStyles for Vue SFCs. This rule enforces that <style> blocks have the scoped attribute (or module for CSS Modules), preventing style leakage and conflicts between components.

  • #​9184 49c8fde Thanks @​chocky335! - Improved plugin performance by batching all plugins into a single syntax visitor with a kind-to-plugin lookup map, reducing per-node dispatch overhead from O(N) to O(1) where N is the number of plugins.

  • #​9283 071c700 Thanks @​dyc3! - Fixed noUndeclaredVariables erroneously flagging functions and variables defined in the <script setup> section of Vue SFCs.

  • #​9221 4612133 Thanks @​ematipico! - Fixed an issue where the JSON reporter didn't contain the duration of the command.

  • #​9294 1805c8f Thanks @​Netail! - Extra rule source reference. biome migrate eslint should do a bit better detecting rules in your eslint configurations.

  • #​9178 101b3bb Thanks @​Bertie690! - Fixed #​9172 and #​9168:
    Biome now considers more constructs as valid test assertions.

    Previously, assert, expectTypeOf and assertType
    were not recognized as valid assertions by Biome's linting rules, producing false positives in lint/nursery/useExpect and other similar rules.

    Now, these rules will no longer produce errors in test cases that used these constructs instead of expect:

    import { expectTypeOf, assert, assertType } from "vitest";
    
    const myStr = "Hello from vitest!";
    it("should be a string", () => {
      expectTypeOf(myStr).toBeString();
    });
    test("should still be a string", () => {
      assertType<string>(myStr);
    });
    it.todo("should still still be a string", () => {
      assert(typeof myStr === "string");
    });
  • #​9173 32dad2d Thanks @​dyc3! - Added parsing support for Svelte's new comments-in-tags feature.

    The HTML parser will now accept JS style comments in tags in Svelte files.

    <button
      // single-line comment
      onclick={doTheThing}
    >click me</button>
    
    <div
      /* block comment */
      class="foo"
    >text</div>
  • #​8952 1d2ca15 Thanks @​pkallos! - Added the nursery rule useNullishCoalescing. This rule suggests using the nullish coalescing operator (??) instead of logical OR (||) when the left operand may be nullish. This prevents bugs where falsy values like 0, '', or false are incorrectly treated as missing. Addresses #​8043

    // Invalid
    declare const x: string | null;
    const value = x || "default";
    
    // Valid
    const value = x ?? "default";
  • #​9243 1992a85 Thanks @​Netail! - Fixed #​7813: improved the diagnostic of the rule useExhaustiveDependencies. The diagnostic now shows the name of the variable to add to the dependency array.

  • #​9063 3d0648f Thanks @​taga3s! - Added the nursery rule noVueRefAsOperand. This rule disallows cases where a ref is used as an operand.

    The following code is now flagged:

    import { ref } from "vue";
    
    const count = ref(0);
    count++; // Should be: count.value++
    import { ref } from "vue";
    
    const ok = ref(false);
    if (ok) {
      // Should be: if (ok.value)
      //
    }
  • #​9273 f239e20 Thanks @​denbezrukov! - Fixed #​9253: parsing of @container scroll-state(...) queries.

    @&#8203;container scroll-state(scrolled: bottom) {
    }
    @&#8203;container scroll-state(stuck) {
    }
    @&#8203;container scroll-state(not (stuck)) {
    }
    @&#8203;container scroll-state((stuck) and (scrolled: bottom)) {
    }
    @&#8203;container scroll-state((stuck) or (snapped: x)) {
    }
    @&#8203;container main-layout scroll-state(not ((stuck) and (scrolled: bottom))) {
    }
  • #​9259 96939c0 Thanks @​ematipico! - Fixed CSS formatter incorrectly collapsing selectors when a BOM (Byte Order Mark) character is present at the start of the file. The formatter now correctly preserves line breaks between comments and selectors in BOM-prefixed CSS files, matching Prettier's behavior.

  • #​9251 59e33fb Thanks @​ematipico! - Fixed #​9249: The CSS formatter no longer incorrectly breaks ratio values (like 1 / -1) across lines when followed by comments.

  • #​9284 ec3a17f Thanks @​denbezrukov! - Fixed #​9253: removed false-positive diagnostics for valid @container/@supports general-enclosed queries.

    @&#8203;container scroll-state(scrolled: bottom) {
    }
    @&#8203;supports foo(bar: baz) {
    }
  • #​9215 b2619a1 Thanks @​FrederickStempfle! - Fixed #​9189: biome ci in GitHub Actions now correctly disables colors so that ::error/::warning workflow commands are not wrapped in ANSI escape codes.

  • #​9256 65ae4c1 Thanks @​ematipico! - Fixed JSON reporter escaping of special characters in diagnostic messages. The JSON reporter now properly escapes double quotes, backslashes, and control characters in error messages and advice text, preventing invalid JSON output when diagnostics contain these characters.

  • #​9223 5b9da81 Thanks @​ematipico! - Fixed an issue where the JSON reporter didn't write output to a file when --reporter-file was specified. The output is now correctly written to the specified file instead of always going to stdout.

  • #​9154 c487e54 Thanks @​abossenbroek! - Fixed #​9115: The noPlaywrightMissingAwait rule no longer produces false positives on jest-dom matchers like toBeVisible, toBeChecked, toHaveAttribute, etc. For matchers shared between Playwright and jest-dom, the rule now checks whether expect()'s argument is a Playwright locator or page object before flagging. Added semantic variable resolution so that extracted Playwright locators (e.g. const loc = page.locator('.item'); expect(loc).toBeVisible()) are still correctly flagged.

  • #​9269 33e5cdf Thanks @​dyc3! - Fixed a false positive where noUndeclaredVariables reported bindings from Vue <script setup> as undeclared when used in <template>.

    This change ensures embedded bindings collected from script snippets (like imports and defineModel results) are respected by the rule.

  • #​9267 2c2e060 Thanks @​ematipico! - Fixed #​9143 and #​8849: The noUnresolvedImports rule no longer reports false positives for several common patterns:

    • node:fs, node:path, node:url, and other Node.js built-in modules with the node: prefix are now accepted.
    • Packages that declare their TypeScript entry point via "typings" (instead of "types") in package.json now resolve correctly.
    • Named imports from aliased re-export chains (e.g. export { x as y } from "...") are now resolved correctly through the alias.
    • Namespace re-exports (e.g. export * as Ns from "...") are now recognized as own exports of the barrel module.
  • #​9254 f7bf12b Thanks @​ematipico! - Fixed #​8842: The CSS formatter now correctly formats @container scroll-state() without adding an unwanted space between the function name and opening parenthesis.

  • #​9211 2d0b8e6 Thanks @​ematipico! - Fixed #​7905. Improved the accuracy of type-aware lint rules when analyzing re-exported functions and values.

    Previously, when a binding was imported from another module, its type was not correctly inferred during the type analysis phase. This caused type-aware lint rules to fail to detect issues when working with re-exported imports.

    The following rules now correctly handle re-exported imports:

    Example of now-working detection:

    // getValue.ts
    export async function getValue(): Promise<number> {
      return 42;
    }
    
    // reexport.ts
    export { getValue } from "./getValue";
    
    // index.ts
    import { getValue } from "./reexport";
    
    // Previously: no diagnostic (type was unknown)
    // Now: correctly detects that getValue() returns a Promise
    await getValue(); // Valid - properly awaited
    getValue(); // Diagnostic - floating promise
  • #​8934 b49707c Thanks @​tim-we! - Fixed #​8265: Biome now correctly detects test framework calls that use three arguments (label, options, callback) (e.g., describe("foo", { retry: 2 }, () => {})). This fixes both formatting and the noDuplicateTestHooks lint rule for test frameworks like Vitest.

  • #​9191 688fd34 Thanks @​dyc3! - Fixed #​9180: fixed a panic caused by an interaction between noRedundantUseStrict and the formatter

  • #​9048 9bbdf4d Thanks @​ff1451! - Added the nursery rule useNamedCaptureGroup.
    The rule enforces using named capture groups in regular expressions instead of numbered ones. It supports both regex literals and RegExp constructor calls.

    // Invalid: unnamed capture group
    /(foo)/;
    new RegExp("(foo)");
    
    // Valid: named capture group
    /(?<id>foo)/;
    new RegExp("(?<id>foo)");
  • #​9255 9b6685b Thanks @​ematipico! - Fixed #9234, where some nursery rules panicked when they were configured with the option level without the corresponding options.

  • #​8968 a2b4494 Thanks @​LouisLau-art! - Fixed #​8812: lint/suspicious/noArrayIndexKey will now report index usage anywhere in JSX key template or binary expressions, not only in the last visited identifier.

  • #​9266 84935a4 Thanks @​dyc3! - Fixed #​9250: noVueDuplicateKeys will no longer flag keys under watch, preventing false positives.

  • #​9056 1f2fe2e Thanks @​ruidosujeira! - Added the nursery rule useArraySome to prefer .some() over verbose existence checks like filter(...).length > 0 and findIndex(...) !== -1, with suggestions for find/findLast existence checks. This also applies to ES2025 iterator helpers such as Iterator.prototype.find.

  • #​9163 f87acf6 Thanks @​JUSTIVE! - Added graphql to valid embedded graphql template tags inside JavaScript files, when the feature javascript.experimentalEmbeddedSnippetsEnabled is enabled. This allows proper support for graphql tags used in RelayJS.

    Now, code snippets like the following are correctly formatted and limited:

    import { graphql } from "react-relay";
    
    const query = graphql`
      query {
        user(id: 1) {
          id
          name
        }
      }
    `;
  • #​8773 6b01778 Thanks @​xcb3d! - Added the new nursery rule useUnicodeRegex.

    The rule enforces the use of the u or v flag for regular expressions. This ensures proper handling of Unicode characters like emoji.

    // Invalid
    /foo/;
    new RegExp("foo", "gi");
    
    // Valid
    /foo/u;
    new RegExp("foo", "giu");

v2.4.4

Compare Source

Patch Changes
  • #​9150 6946835 Thanks @​dyc3! - Fixed #​9138: Astro files containing --- in HTML content (e.g., <h1>---Hi</h1>) are now parsed correctly, both when a frontmatter block is present and when there is no frontmatter at all.

  • #​9150 aa6f837 Thanks @​dyc3! - Fixed #​9138: The HTML parser incorrectly failing to parse bracket characters ([ and ]) in text content (e.g. <div>[Foo]</div>).

  • #​9151 c0d4b0c Thanks @​dyc3! - Fixed parsing of Svelte directive keywords (use, style) when used as plain text content in HTML/Svelte files. Previously, <p>use JavaScript</p> or <p>style it</p> would incorrectly produce a bogus element instead of proper text content.

  • #​9162 7f1e060 Thanks @​dyc3! - Fixed #​9161: The Vue parser now correctly handles colon attributes like xlink:href and xmlns:xlink by parsing them as single attributes instead of splitting them into separate tokens.

  • #​9164 458211b Thanks @​dyc3! - Fixed #​9161: The noAssignInExpressions rule no longer flags assignments in Vue v-on directives (e.g., @click="counter += 1"). Assignments in event handlers are idiomatic Vue patterns and are now skipped by the rule.

v2.4.3

Compare Source

Patch Changes
  • #​9120 aa40fc2 Thanks @​ematipico! - Fixed #​9109, where the GitHub reporter wasn't correctly enabled when biome ci runs on GitHub Actions.

  • #​9128 8ca3f7f Thanks @​dyc3! - Fixed #​9107: The HTML parser can now correctly parse Astro directives (client/set/class/is/server), which fixes the formatting for Astro directives.

  • #​9124 f5b0e8d Thanks @​ematipico! - Fixed #​8882 and #​9108: The Astro frontmatter lexer now correctly identifies the closing --- fence when the frontmatter contains multi-line block comments with quote characters, strings that mix quote types (e.g. "it's"), or escaped quote characters (e.g. "\").

  • #​9142 3ca066b Thanks @​THernandez03! - Fixed #​9141: The noUnknownAttribute rule no longer reports closedby as an unknown attribute on <dialog> elements.

  • #​9126 792013e Thanks @​ematipico! - Added missing Mocha globals to the Test domain: context, run, setup, specify, suite, suiteSetup, suiteTeardown, teardown, xcontext, xdescribe, xit, and xspecify. These are injected by Mocha's BDD and TDD interfaces and were previously flagged as undeclared variables in projects using Mocha.

  • #​8855 6918c9e Thanks @​ruidosujeira! - Fixed #​8840. Now the Biome CSS parser correctly parses not + scroll-state inside @container queries.

  • #​9111 4fb55cf Thanks @​Jayllyz! - Slightly improved performance of noIrregularWhitespace by adding early return optimization and simplifying character detection logic.

  • #​8975 086a0c5 Thanks @​FrankFMY! - Fixed #​8478: useDestructuring no longer suggests destructuring when the variable has a type annotation, like const foo: string = object.foo.

v2.4.2

Compare Source

Patch Changes

v2.4.1

Compare Source

Patch Changes

Configuration

📅 Schedule: 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 was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 5 times, most recently from 23e0ddd to 24e3216 Compare June 27, 2025 11:36
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from ec60dc6 to 970e0d5 Compare July 1, 2025 01:13
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 3 times, most recently from 93012b7 to 549feb4 Compare July 10, 2025 00:01
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 3 times, most recently from 5f15fd9 to 4649818 Compare July 18, 2025 01:44
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 4 times, most recently from 534eee9 to 8acd7e2 Compare July 31, 2025 00:36
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 5 times, most recently from 645c86d to b509664 Compare August 9, 2025 01:35
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 4 times, most recently from 89d9599 to eef3c9a Compare August 19, 2025 15:15
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 4 times, most recently from cf269fd to 1cc2fbc Compare August 26, 2025 23:27
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from f2fe5db to 9775129 Compare November 3, 2025 10:47
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 58098e8 to ed0b24f Compare November 11, 2025 18:11
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from d826679 to 689592e Compare November 21, 2025 14:02
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch from 689592e to 9416af4 Compare November 27, 2025 16:11
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 2 times, most recently from 98069f3 to 1cd7f20 Compare December 17, 2025 15:05
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 7 times, most recently from e2b920f to ba61b16 Compare January 10, 2026 02:01
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 5 times, most recently from 0da66b0 to d8b739f Compare January 17, 2026 00:38
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch from d8b739f to d7d03d0 Compare January 21, 2026 00:58
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch 5 times, most recently from e85397b to 02a690d Compare January 29, 2026 00:55
@renovate renovate bot force-pushed the renovate/biomejs-biome-2.x branch from 02a690d to c3a6cd9 Compare January 30, 2026 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants