@biomejs/biome@2.5.1

google/magika@biomejs/biome@2.5.1Jun 23, 2026by github-actions[bot]

AI Summary

A patch release focused on fixing bugs and improving stability, including fixes for CSS formatting, JSON reporter path handling, and memory leaks in the language server.

Key Highlights

  • Fixed CSS formatter output for comments between import media queries.
  • Fixed JSON reporter to properly escape backslashes in Windows-style file paths.
  • Fixed `biome migrate` trailing comma issue when renaming rules.
  • Disabled 'Go-to definition' feature by default to prevent memory leaks.
  • Improved how the Biome Language Server loads configuration files.

Full Release Notes

## 2.5.1

### Patch Changes

- [#10722](https://github.com/biomejs/biome/pull/10722) [`f8a303d`](https://github.com/biomejs/biome/commit/f8a303d08b6b22f56edb8ff5e7caa665532d613a) Thanks [@denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatter output for comments between import media queries.

  ```diff
  -@import url("print.css") print,
  -/* comment */
  -screen;
  +@import url("print.css") print, /* comment */ screen;
  ```

- [#10738](https://github.com/biomejs/biome/pull/10738) [`9fdc560`](https://github.com/biomejs/biome/commit/9fdc5600997ef59ca7ed55ac212473de9bdb0b2a) Thanks [@JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#9899](https://github.com/biomejs/biome/issues/9899): the `json` and `json-pretty` reporters now escape backslashes in a diagnostic's `location.path`. Previously, paths containing backslashes (such as Windows-style paths) were emitted unescaped, producing invalid JSON.

  ```diff
  -    "path": "src\account\setup-passkey.tsx",
  +    "path": "src\\account\\setup-passkey.tsx",
  ```

- [#10626](https://github.com/biomejs/biome/pull/10626) [`5f837df`](https://github.com/biomejs/biome/commit/5f837df033afc34d43b398aeddc06c1d4fa491d9) Thanks [@tom-groves](https://github.com/tom-groves)! - Fixed [#10625](https://github.com/biomejs/biome/issues/10625): `biome migrate` no longer emits an invalid trailing comma when a renamed rule (such as `noConsoleLog` → `noConsole`) is the last member of its rule group. Previously this produced malformed output that aborted the migration of a strict-JSON `biome.json` with a parsing error.

- [#10535](https://github.com/biomejs/biome/pull/10535) [`c245f9d`](https://github.com/biomejs/biome/commit/c245f9d9e239471d5437cd08f9cfa4601a85abd5) Thanks [@Mokto](https://github.com/Mokto)! - Fixed a false positive in [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) for Svelte files where variables referenced inside `{@html expr}` blocks were incorrectly reported as unused.

- [#10668](https://github.com/biomejs/biome/pull/10668) [`a0f197e`](https://github.com/biomejs/biome/commit/a0f197eb1a6974539927f105ff1dde1f51d07d74) Thanks [@Netail](https://github.com/Netail)! - The `biome init` command has been updated to include a more up-to-date URL to [the first-party extensions page](https://biomejs.dev/editors/first-party-extensions/).

- [#10667](https://github.com/biomejs/biome/pull/10667) [`d8c3e87`](https://github.com/biomejs/biome/commit/d8c3e878d53515c02bd6c5cb899b2eaec046c542) Thanks [@Netail](https://github.com/Netail)! - Fixed [#10664](https://github.com/biomejs/biome/issues/10664): [useErrorCause](https://biomejs.dev/linter/rules/use-error-cause/) now correctly detects a shorthand property.

- [#10696](https://github.com/biomejs/biome/pull/10696) [`ef2373f`](https://github.com/biomejs/biome/commit/ef2373f29be15673705884d345c9af189e30b581) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#9566](https://github.com/biomejs/biome/issues/9566). Improved how the Biome Language Server loads multiple configuration files inside a workspace.

- [#10705](https://github.com/biomejs/biome/pull/10705) [`4ccb410`](https://github.com/biomejs/biome/commit/4ccb410dc00a6fb243934dad2e8681a9d5d9529e) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#10652](https://github.com/biomejs/biome/issues/10652). Biome plugins are now properly filtered when using `--only` and `--skip` flags.

- [#10669](https://github.com/biomejs/biome/pull/10669) [`aa0a6eb`](https://github.com/biomejs/biome/commit/aa0a6eb8007493961cd578f04201248c15fd809a) Thanks [@Netail](https://github.com/Netail)! - Fixed [#10651](https://github.com/biomejs/biome/issues/10651): [useInlineScriptId](https://biomejs.dev/linter/rules/use-inline-script-id/) now correctly trims trivia to detect if an id attribute has been set.

- [#10689](https://github.com/biomejs/biome/pull/10689) [`844b1be`](https://github.com/biomejs/biome/commit/844b1be60ded28bf4c650d85806919ceb57bc402) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#10658](https://github.com/biomejs/biome/issues/10658). The issue was caused by the "Go-to definition" editor feature, which was enabled by default. The feature is now **disabled by default**. To work, the feature triggers the scanner to build the module graph. This caused memory leak issues in cases where Biome starts in the home directory to modify files.

  If you relied on this new feature, you must now turn on using the [editor settings] of the extension e.g. [Zed](https://biomejs.dev/reference/zed/#goto_definition) and [VSCode](https://biomejs.dev/reference/vscode/#biomegotodefinition).

- [#10695](https://github.com/biomejs/biome/pull/10695) [`043fbb5`](https://github.com/biomejs/biome/commit/043fbb514f1b96c5b723cd86c8db4b9bc9f03631) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#10674](https://github.com/biomejs/biome/issues/10674). Biome now throws an error when the field `level` is missing from a rule option.

- [#10712](https://github.com/biomejs/biome/pull/10712) [`5941df2`](https://github.com/biomejs/biome/commit/5941df2a0d6904e487e73d4dc7231dcaf7b3a2f0) Thanks [@Conaclos](https://github.com/Conaclos)! - Improved the diagnostic and the documentation of [`useFlatMap`](https://biomejs.dev/linter/rules/use-flat-map/).

- [#10615](https://github.com/biomejs/biome/pull/10615) [`23814f1`](https://github.com/biomejs/biome/commit/23814f1ad8430df906a39323ee31d27d7b9ca17b) Thanks [@qwertycxz](https://github.com/qwertycxz)! - Improved the DX the JSON schema when it's used by certain code editors like VSCode.

- [#10688](https://github.com/biomejs/biome/pull/10688) [`ec69489`](https://github.com/biomejs/biome/commit/ec694896a0c75176aca040392e3309df1b2e963d) Thanks [@ematipico](https://github.com/ematipico)! - Fixed a bug where the Biome Daemon did not correctly shut down when the editor was closed during an in-progress operation, especially while scanning.

- [#10701](https://github.com/biomejs/biome/pull/10701) [`6c2e0d7`](https://github.com/biomejs/biome/commit/6c2e0d7bba1cbc457a42adf6c982a773bc7e4605) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#10694](https://github.com/biomejs/biome/issues/10694). The Biome Language Server no longer prints an error when the user hovers a variable imported from node_modules.

- [#10681](https://github.com/biomejs/biome/pull/10681) [`888515b`](https://github.com/biomejs/biome/commit/888515b088cde688a95680362a619221c023f9d0) Thanks [@Conaclos](https://github.com/Conaclos)! - Fixed [`useExportType`](https://biomejs.dev/linter/rules/use-export-type/) that reported useless details in some diagnostics.

- [#10220](https://github.com/biomejs/biome/pull/10220) [`3694a13`](https://github.com/biomejs/biome/commit/3694a135a9976915889988c36d9eb40d679f06e6) Thanks [@theBGuy](https://github.com/theBGuy)! - Fixed [`useAnchorContent`](https://biomejs.dev/linter/rules/use-anchor-content/) false positive for `<a>` elements used as render prop values (e.g. `render={<a href="..." />}`), a pattern where the receiving component renders its children inside the anchor element.

- [#10702](https://github.com/biomejs/biome/pull/10702) [`98823fb`](https://github.com/biomejs/biome/commit/98823fb2e70095b09e1ca4bb9733850bbe8ff33f) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#10612](https://github.com/biomejs/biome/issues/10612). The Biome parser now correctly parses processing instructions. The following SVG doesn't throw errors anymore:

  ```svg
  <?xml version="1.0" encoding="UTF-8" ?>

  <svg></svg>
  ```



## What's Changed
* ci: use tombi from installed from toolchain by @ematipico in https://github.com/biomejs/biome/pull/10613
* docs: fix duplicate "being" in symlink test comments by @dfedoryshchev in https://github.com/biomejs/biome/pull/10611
* refactor(core): add `biome_languages` crate by @ematipico in https://github.com/biomejs/biome/pull/10590
* fix(migrate): avoid trailing comma when a renamed rule is last in its group by @tom-groves in https://github.com/biomejs/biome/pull/10626
* chore(deps): update rust:1.96.0-bullseye docker digest to e12c121 by @renovate[bot] in https://github.com/biomejs/biome/pull/10641
* chore(deps): update dependency @types/node to v24.13.2 by @renovate[bot] in https://github.com/biomejs/biome/pull/10642
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/10643
* chore(deps): update rust crate regex to 1.12.4 by @renovate[bot] in https://github.com/biomejs/biome/pull/10644
* fix(deps): update dependency prettier to v3.8.4 by @renovate[bot] in https://github.com/biomejs/biome/pull/10646
* chore(deps): update pnpm to v11.6.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/10647
* chore(deps): update rust crate insta to 1.48.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/10648
* chore(deps): update rust crate smallvec to 1.15.2 by @renovate[bot] in https://github.com/biomejs/biome/pull/10645
* fix(js_analyze): useErrorCause shorthand property by @Netail in https://github.com/biomejs/biome/pull/10667
* fix(js_analyze): trim useInlineScriptId trivia by @Netail in https://github.com/biomejs/biome/pull/10669
* chore: dead and old links by @Netail in https://github.com/biomejs/biome/pull/10668
* docs(useValidAnchor): enhance lint rule explainer by @Th3S4mur41 in https://github.com/biomejs/biome/pull/10679
* chore(biome_configuration): add allowTrailingCommas to json-schema to make VSCode happy by @qwertycxz in https://github.com/biomejs/biome/pull/10615
* chore: fixes an internal CVE by @ematipico in https://github.com/biomejs/biome/pull/10690
* chore(deps): update dependency vite to v7.3.5 [security] by @renovate[bot] in https://github.com/biomejs/biome/pull/10691
* fix(lsp): shutdown the daemon on disconnect by @ematipico in https://github.com/biomejs/biome/pull/10688
* fix(lsp): disable go-to definition by default by @ematipico in https://github.com/biomejs/biome/pull/10689
* refactor(module_graph): preserve same-name function overloads as a set by @IxxyDev in https://github.com/biomejs/biome/pull/10585
* fix(a11y/useAnchorContent): don't flag <a> elements used as render props by @theBGuy in https://github.com/biomejs/biome/pull/10220
* docs: fix rustdoc for `noImplicitCoercions` by @Bertie690 in https://github.com/biomejs/biome/pull/10614
* fix: level is now mandatory by @ematipico in https://github.com/biomejs/biome/pull/10695
* fix(html): register {@html} expression as a template reference in Svelte by @Mokto in https://github.com/biomejs/biome/pull/10535
* fix(lsp): improved configuration loading by @ematipico in https://github.com/biomejs/biome/pull/10696
* fix: update member creation by @ematipico in https://github.com/biomejs/biome/pull/10700
* docs(js-api): correct "If" to "It" in BiomeCommon method JSDoc by @dfedoryshchev in https://github.com/biomejs/biome/pull/10706
* chore(xtask): scaffold global-types codegen and resolver builder by @minseong0324 in https://github.com/biomejs/biome/pull/10249
* refactor(useExportType): dedup code by @Conaclos in https://github.com/biomejs/biome/pull/10681
* refactor(useFlatMap): improve docs and diagnostics by @Conaclos in https://github.com/biomejs/biome/pull/10712
* chore: refactor html a11y test cases by @Netail in https://github.com/biomejs/biome/pull/10713
* refactor(migrate): remove dead code by @Conaclos in https://github.com/biomejs/biome/pull/10717
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/10723
* fix(lsp): handle navigation result errors by @ematipico in https://github.com/biomejs/biome/pull/10701
* feat(css_formatter): format import media comments inline by @denbezrukov in https://github.com/biomejs/biome/pull/10722
* refactor: expose more utilities by @ematipico in https://github.com/biomejs/biome/pull/10728
* perf(core): save Settings via Arc by @ematipico in https://github.com/biomejs/biome/pull/10720
* fix(parser): html processing instructions by @ematipico in https://github.com/biomejs/biome/pull/10702
* refactor(tools): provide diagnostics printer by @ematipico in https://github.com/biomejs/biome/pull/10732
* refactor: abstract vue directive detection by @Netail in https://github.com/biomejs/biome/pull/10736
* fix(cli): escape backslashes in JSON reporter file paths by @JamBalaya56562 in https://github.com/biomejs/biome/pull/10738
* fix(analyzer): exclude plugins via filters by @ematipico in https://github.com/biomejs/biome/pull/10705
* ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/10627

## New Contributors
* @tom-groves made their first contribution in https://github.com/biomejs/biome/pull/10626
* @qwertycxz made their first contribution in https://github.com/biomejs/biome/pull/10615
* @theBGuy made their first contribution in https://github.com/biomejs/biome/pull/10220

**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.0...@biomejs/biome@2.5.1