Biome @biomejs/[email protected]stable Released Jul 28, 2026
Impact Score: 5/10

Biome CLI v2.5.6

Source available โ€” automated, not human-reviewed

Component: @biomejs/biome ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified โ€” check source notes
$ npm install --save-dev --save-exact @biomejs/[email protected]
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Biome @biomejs/[email protected]. Source highlight: Fixed a performance regression in `noMisusedPromises` that caused type inference to run repeatedly while linting a file.

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โœจ New Features & Capabilities (6)

  • refactor(inference): add structural type mapping
  • refactor(inference): add canonical inferred globals
  • feat(css): support preserved SCSS custom property
  • feat(useSortedClasses): order same-utility values in sort_v4
  • ci: add e2e benchmarks for lint rules
  • feat(format/yaml): flow mappings

โšก Performance & Enhancements (1)

  • perf(fmt): inline print_element, fast path for printable ASCII chars

๐Ÿ”ง Bug Fixes & Patches (6)

  • Fixed a performance regression in `noMisusedPromises` that caused type inference to run repeatedly while linting a file.
  • Fixed CSS formatting for multiline function arguments preceded by comments:
  • Fixed #9195: `useHookAtTopLevel` no longer reports hooks in named `forwardRef` components that receive a `ref` parameter.
  • Fixed #10131: Biome now correctly parses curried arrow functions in ternary consequents when the inner arrow's parameters use a destructuring pattern, e.g. `cond ? (x) => ({ a, b }) => body : alt`.
  • Fixed #11092: The `noUselessTernary` quick fix now preserves operator spacing when simplifying or inverting boolean ternary expressions.
  • Fixed #10515: `biome check --write` was not idempotent on Svelte files โ€” multi-line template literals in `<script>` blocks and block comments in `<style>` blocks gained an extra indent level on every run.
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
## 2.5.6 ### Patch Changes - [#11035](https://github.com/biomejs/biome/pull/11035) [`0e4b03b`](https://github.com/biomejs/biome/commit/0e4b03be71b32120c6326e58e046260bcf5d3231) Thanks [@ematipico](https://github.com/ematipico)! - Fixed a performance regression in [`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/) that caused type inference to run repeatedly while linting a file. - [#11043](https://github.com/biomejs/biome/pull/11043) [`22ec076`](https://github.com/biomejs/biome/commit/22ec076462d4590ea7c95f7693b69040c32a38aa) Thanks [@denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting for multiline function arguments preceded by comments: ```diff .example { value: outer( 1, /* comment */ nested( - first, - second - ) + first, + second + ) ); } ``` - [#11007](https://github.com/biomejs/biome/pull/11007) [`c9acb25`](https://github.com/biomejs/biome/commit/c9acb25acbce7a6f632b5041ec546a604aea4343) Thanks [@BTF-Kabir-2020](https://github.com/BTF-Kabir-2020)! - Fixed [#9195](https://github.com/biomejs/biome/issues/9195): [`useHookAtTopLevel`](https://biomejs.dev/linter/rules/use-hook-at-top-level/) no longer reports hooks in named `forwardRef` components that receive a `ref` parameter. - [#10152](https://github.com/biomejs/biome/pull/10152) [`50a9bd8`](https://github.com/biomejs/biome/commit/50a9bd84df852de305e94a91fb57f6b3b1378187) Thanks [@Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed [#10131](https://github.com/biomejs/biome/issues/10131): Biome now correctly parses curried arrow functions in ternary consequents when the inner arrow's parameters use a destructuring pattern, e.g. `cond ? (x) => ({ a, b }) => body : alt`. - [#11105](https://github.com/biomejs/biome/pull/11105) [`8ffe2b9`](https://github.com/biomejs/biome/commit/8ffe2b9f2f9224921a0bad4a772e6611006351e5) Thanks [@dadavidtseng](https://github.com/dadavidtseng)! - Fixed [#11092](https://github.com/biomejs/biome/issues/11092): The [`noUselessTernary`](https://biomejs.dev/linter/rules/no-useless-ternary/) quick fix now preserves operator spacing when simplifying or inverting boolean ternary expressions. - [#10533](https://github.com/biomejs/biome/pull/10533) [`5809875`](https://github.com/biomejs/biome/commit/580987506a32cdde2f5498e0f712e3493ef9adde) Thanks [@Mokto](https://github.com/Mokto)! - Fixed [#10515](https://github.com/biomejs/biome/issues/10515): `biome check --write` was not idempotent on Svelte files โ€” multi-line template literals in `<script>` blocks and block comments in `<style>` blocks gained an extra indent level on every run. - [#11040](https://github.com/biomejs/biome/pull/11040) [`0abb620`](https://github.com/biomejs/biome/commit/0abb620b2f0bd748bf272a2bc56aa02f5a6d0fee) Thanks [@Mokto](https://github.com/Mokto)! - Fixed an issue where the HTML formatter would duplicate a comment placed directly before a Svelte `{@const ...}` or `{@debug ...}` block. The duplication compounded on every subsequent `--write`, causing the file to grow exponentially. - [#10858](https://github.com/biomejs/biome/pull/10858) [`6d18204`](https://github.com/biomejs/biome/commit/6d182043b1de76f8668464bfa5c295161135ee0e) Thanks [@ruidosujeira](https://github.com/ruidosujeira)! - Fixed [#10839](https://github.com/biomejs/biome/issues/10839): Svelte `{#each}` array destructuring no longer includes spaces inside square brackets, and multiline bind function expressions now indent their getter, setter, and function body correctly. - [#11009](https://github.com/biomejs/biome/pull/11009) [`2c36626`](https://github.com/biomejs/biome/commit/2c36626bed58e63e49ecca8a40c717adae4c91ac) Thanks [@ematipico](https://github.com/ematipico)! - Improved the accuracy of type-aware lint rules by resolving more inferred types. For example, [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) now detects floating Promises returned by aliased callbacks and arrays of Promises created by async mapping callbacks. The following statements are now reported: ```ts type AsyncCallback = () => Promise<void>; declare const callback: AsyncCallback; callback(); [1, 2, 3].map(async (value) => value); ``` - [#10973](https://github.com/biomejs/biome/pull/10973) [`9cb044c`](https://github.com/biomejs/biome/commit/9cb044cf2c8971642942c302a6d2b0000964c2f0) Thanks [@ematipico](https://github.com/ematipico)! - Fixed false positives in [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) when generic-constraint, normalization, substitution, or structural return-type comparison cannot complete. The rule now suppresses diagnostics rather than suggesting a return type derived from partial information. For example, this unresolved return type is no longer reported: ```ts function unresolvedReturnType(): MissingType { return "value" as const; } ``` - [#11071](https://github.com/biomejs/biome/pull/11071) [`15047a2`](https://github.com/biomejs/biome/commit/15047a2fff2aa2a5c0c096257b4718b0141431be) Thanks [@dyc3](https://github.com/dyc3)! - The HTML parser now accepts mixed-case `doctype` declarations. - [#11030](https://github.com/biomejs/biome/pull/11030) [`cc90e65`](https://github.com/biomejs/biome/commit/cc90e65a6b14388a5fab1d893f782055fac34f91) Thanks [@marschattha](https://github.com/marschattha)! - The `rdjson` reporter now populates the [severity](https://github.com/reviewdog/reviewdog/blob/master/proto/rdf/reviewdog.proto) field of each diagnostic (`ERROR`, `WARNING`, or `INFO`), so tools consuming Reviewdog Diagnostic Format output no longer need to assume a default severity. - [#11009](https://github.com/biomejs/biome/pull/11009) [`2c36626`](https://github.com/biomejs/biome/commit/2c36626bed58e63e49ecca8a40c717adae4c91ac) Thanks [@ematipico](https://github.com/ematipico)! - Fixed a performance regression in type-aware JavaScript lint rules by inferring only requested types and memoizing export resolution. - [#11056](https://github.com/biomejs/biome/pull/11056) [`903b177`](https://github.com/biomejs/biome/commit/903b1770528040484b5f8b71f652130a8e6bd960) Thanks [@dyc3](https://github.com/dyc3)! - Added support for Svelte declaration tags using `let` and `const`. Biome can now parse, format, and lint bindings declared in these tags. - [#11045](https://github.com/biomejs/biome/pull/11045) [`89c27c6`](https://github.com/biomejs/biome/commit/89c27c62541d2b628247563441e48f2303e53f4b) Thanks [@ematipico](https://github.com/ematipico)! - Improved the performance of Biome formatter up to ~7% across the board. - [#9806](https://github.com/biomejs/biome/pull/9806) [`781d68d`](https://github.com/biomejs/biome/commit/781d68dae5df6ad188efc8afb0972112654614fe) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`noJsRestrictedProperties`](https://biomejs.dev/linter/rules/no-js-restricted-properties/), which ports ESLint's `no-restricted-properties` rule. Biome now flags restricted member access and object destructuring, and `biome migrate eslint` preserves the rule's options. ## What's Changed * refactor(lint): extract return type relation by @ematipico in https://github.com/biomejs/biome/pull/10973 * refactor(inference): separate raw type collection by @ematipico in https://github.com/biomejs/biome/pull/11003 * fix(linter): recognize forwardRef named components with ref params by @BTF-Kabir-2020 in https://github.com/biomejs/biome/pull/11007 * fix(html_formatter): match prettier for svelte each as destructuring โ€ฆ by @ruidosujeira in https://github.com/biomejs/biome/pull/10858 * fix(cli): populate severity in rdjson reporter output by @marschattha in https://github.com/biomejs/biome/pull/11030 * refactor(inference): add structural type mapping by @ematipico in https://github.com/biomejs/biome/pull/11004 * refactor(inference): add canonical inferred globals by @ematipico in https://github.com/biomejs/biome/pull/11005 * feat(css): support preserved SCSS custom property by @denbezrukov in https://github.com/biomejs/biome/pull/11029 * refactor(inference): port Salsa module inference by @ematipico in https://github.com/biomejs/biome/pull/11006 * fix(css_formatter): preserve escaped attribute newlines without breaking parent groups by @denbezrukov in https://github.com/biomejs/biome/pull/11027 * feat(useSortedClasses): order same-utility values in sort_v4 by @johncarmack1984 in https://github.com/biomejs/biome/pull/11016 * fix(linter): inference regression by @ematipico in https://github.com/biomejs/biome/pull/11035 * fix(html): stop duplicating leading comments before Svelte {@const}/{@debug} blocks by @Mokto in https://github.com/biomejs/biome/pull/11040 * fix(inference): handle import cycles by @ematipico in https://github.com/biomejs/biome/pull/11008 * chore: tidy up skills by @ematipico in https://github.com/biomejs/biome/pull/11047 * fix(css_parser): parse SCSS parent selector hyphens by @denbezrukov in https://github.com/biomejs/biome/pull/11042 * fix(parser): allow nested destructured arrow functions inside ternary-consequent bodies by @Zelys-DFKH in https://github.com/biomejs/biome/pull/10152 * fix(css_formatter): indent commented SCSS function arguments by @denbezrukov in https://github.com/biomejs/biome/pull/11043 * ci: add e2e benchmarks for lint rules by @ematipico in https://github.com/biomejs/biome/pull/11048 * feat(format/yaml): flow mappings by @dyc3 in https://github.com/biomejs/biome/pull/11011 * perf(fmt): inline print_element, fast path for printable ASCII chars by @ematipico in https://github.com/biomejs/biome/pull/11045 * feat(lint/js): add `noRestrictedProperties` by @dyc3 in https://github.com/biomejs/biome/pull/9806 * feat(format/yaml): block scalars by @dyc3 in https://github.com/biomejs/biome/pull/11019 * refactor(analyzer): cut over inferred type consumers by @ematipico in https://github.com/biomejs/biome/pull/11009 * test(format/html): enable prettier's vue snapshot tests by @dyc3 in https://github.com/biomejs/biome/pull/11070 * fix(parse/html): accept mixed case doctype declarations by @dyc3 in https://github.com/biomejs/biome/pull/11071 * feat(useSortedClasses): order by name and resolve dashed statics in sort_v4 by @johncarmack1984 in https://github.com/biomejs/biome/pull/11041 * feat(svelte): support for {let}/{const} syntax by @dyc3 in https://github.com/biomejs/biome/pull/11056 * feat(format/yaml): flow scalar content by @dyc3 in https://github.com/biomejs/biome/pull/11050 * feat(format/yaml): indent comments per their block structure by @dyc3 in https://github.com/biomejs/biome/pull/11051 * feat(format/yaml): keep node properties on the entry line by @dyc3 in https://github.com/biomejs/biome/pull/11052 * fix(html): skip reindenting template literal and block-comment continuations in embedded code by @Mokto in https://github.com/biomejs/biome/pull/10533 * chore(xtask): migrate Symbol global types by @minseong0324 in https://github.com/biomejs/biome/pull/11034 * chore(deps): update rust crate jiff to 0.2.35 by @renovate[bot] in https://github.com/biomejs/biome/pull/11085 * chore(deps): update rust crate libc to 0.2.189 by @renovate[bot] in https://github.com/biomejs/biome/pull/11086 * chore(deps): update rust crate proc-macro2 to 1.0.107 by @renovate[bot] in https://github.com/biomejs/biome/pull/11089 * chore(deps): update rust crate regex to 1.13.1 by @renovate[bot] in https://github.com/biomejs/biome/pull/11090 * feat(useSortedClasses): sort sort_v4 candidates by property signature by @johncarmack1984 in https://github.com/biomejs/biome/pull/11076 * feat(inference): add structured inference requests by @ematipico in https://github.com/biomejs/biome/pull/11091 * fix: build bench by @ematipico in https://github.com/biomejs/biome/pull/11097 * chore(xtask): migrate WeakMap global type by @minseong0324 in https://github.com/biomejs/biome/pull/11084 * feat(css_syntax): allow SCSS variables in rule lists by @denbezrukov in https://github.com/biomejs/biome/pull/11103 * fix(lint): remove double space in noUselessTernary quick fix by @dadavidtseng in https://github.com/biomejs/biome/pull/11105 * ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/11022 ## New Contributors * @BTF-Kabir-2020 made their first contribution in https://github.com/biomejs/biome/pull/11007 * @marschattha made their first contribution in https://github.com/biomejs/biome/pull/11030 * @dadavidtseng made their first contribution in https://github.com/biomejs/biome/pull/11105 **Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]