Impact Score: 5/10
Biome CLI v2.4.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.
โก Executive Summary (TL;DR)
Biome @biomejs/[email protected]. Source highlight: Fixed #4946: `noUnreachable` no longer reports code inside `finally` blocks as unreachable when there is a `break`, `continue`, or `return` in the corresponding `try` body.
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 (3)
- perf: add `.skip(1)` to `.ancestors()` calls in a bunch of places
- feat(css): use ScssExpression in ScssNestingDeclaration and CssGenericProperty
- feat(css): use expression in page
โก Performance & Enhancements (2)
- perf(noImportCycles): exclude `node_modules` from cycle detection
- perf(noEmptyBlockStatements): short circuit to avoid traversing descendants for comments
๐ง Bug Fixes & Patches (6)
- Fixed #4946: `noUnreachable` no longer reports code inside `finally` blocks as unreachable when there is a `break`, `continue`, or `return` in the corresponding `try` body.
- Fixed #2786: The formatter no longer produces different output on subsequent runs when a `case` clause has a trailing line comment followed by a single block statement.
- Fixed `#7730`: `useAnchorContent` now recognises SolidJS's `innerHTML` the same way as React's `dangerouslySetInnerHTML`.
- Fixed `#9296`, so comments are moved along with the attributes in the useSortedAttributes assist rule code fix.
- Improved performance of `noEmptyBlockStatements`. The rule is now smarter about short-circuiting its logic.
- Improved performance for `noImportCycles` by explicitly excluding node_modules from the cycle detection. The performance improvement is directly proportional to how big your dependency tree is.
๐ View Raw Release Notes (Original Developer Log)
## 2.4.6
### Patch Changes
- [#9305](https://github.com/biomejs/biome/pull/9305) [`40869b5`](https://github.com/biomejs/biome/commit/40869b5a698de5e0d2c06bc7587a9cad8c0389c5) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#4946](https://github.com/biomejs/biome/issues/4946): `noUnreachable` no longer reports code inside `finally` blocks as unreachable when there is a `break`, `continue`, or `return` in the corresponding `try` body.
- [#9303](https://github.com/biomejs/biome/pull/9303) [`464910c`](https://github.com/biomejs/biome/commit/464910c06058454a0a0ed08998e1b32cb4a6ca67) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#2786](https://github.com/biomejs/biome/issues/2786): The formatter no longer produces different output on subsequent runs when a `case` clause has a trailing line comment followed by a single block statement.
- [#9324](https://github.com/biomejs/biome/pull/9324) [`6294aa2`](https://github.com/biomejs/biome/commit/6294aa2e2710e90a05ed53edfc4dd80e3c4cbd9a) Thanks [@arendjr](https://github.com/arendjr)! - Fixed [`#7730`](https://github.com/biomejs/biome/issues/7730): [`useAnchorContent`](https://biomejs.dev/linter/rules/use-anchor-content/) now recognises SolidJS's `innerHTML` the same way as React's `dangerouslySetInnerHTML`.
- [#9298](https://github.com/biomejs/biome/pull/9298) [`1003229`](https://github.com/biomejs/biome/commit/1003229853c80569751137b6f52dcc1b08aed659) Thanks [@Netail](https://github.com/Netail)! - Fixed [`#9296`](https://github.com/biomejs/biome/issues/9296), so comments are moved along with the attributes in the useSortedAttributes assist rule code fix.
- [#9329](https://github.com/biomejs/biome/pull/9329) [`855b451`](https://github.com/biomejs/biome/commit/855b45125ad33933066eb363f706e1f00dc149d2) Thanks [@dyc3](https://github.com/dyc3)! - Improved performance of [`noEmptyBlockStatements`](https://biomejs.dev/linter/rules/no-empty-block-statements/). The rule is now smarter about short-circuiting its logic.
- [#9326](https://github.com/biomejs/biome/pull/9326) [`85dfe9b`](https://github.com/biomejs/biome/commit/85dfe9b00b820fee0ad936a54328491446e085f5) Thanks [@dyc3](https://github.com/dyc3)! - Improved performance for [`noImportCycles`](https://biomejs.dev/linter/rules/no-import-cycles/) by explicitly excluding node_modules from the cycle detection. The performance improvement is directly proportional to how big your dependency tree is.
- [#9323](https://github.com/biomejs/biome/pull/9323) [`d5ee469`](https://github.com/biomejs/biome/commit/d5ee4690bba0a3bb8a97da029732afde56cd4cd7) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#9217](https://github.com/biomejs/biome/issues/9217) and [biomejs/biome-vscode#959](https://github.com/biomejs/biome-vscode/issues/959), where the Biome language server didn't correctly resolve the editor setting `configurationPath` when the provided value is a relative path.
- [#9302](https://github.com/biomejs/biome/pull/9302) [`86fbc70`](https://github.com/biomejs/biome/commit/86fbc70e8f5a63fd9ece11a99b2684c25c301dba) Thanks [@sepagian](https://github.com/sepagian)! - Fixed [#9300](https://github.com/biomejs/biome/issues/9300): Lowercase component member expressions like `<form.Field>` in Svelte and Astro files are now correctly formatted.
```diff
-<form .Field></form.Field>
+<form.Field></form.Field>
```
## What's Changed
* fix(js_analyze): move comments with useSortedAttributes action by @Netail in https://github.com/biomejs/biome/pull/9298
* fix(formatter): switch case comments by @ematipico in https://github.com/biomejs/biome/pull/9303
* refactor(markdown-parser): promote list structural tokens from skipped trivia to explicit CST nodes by @jfmcdowell in https://github.com/biomejs/biome/pull/9274
* fix(noUnreachable): handle dead implicit jumps in finally by @ematipico in https://github.com/biomejs/biome/pull/9305
* refactor(markdown-parser): align newline/prescan paragraph-break checks by @jfmcdowell in https://github.com/biomejs/biome/pull/9197
* refactor(markdown-parser): promote blank lines between list items to MdNewline nodes by @jfmcdowell in https://github.com/biomejs/biome/pull/9313
* fix(linter): support SolidJS's `innerHTML` in `useAnchorContent` by @arendjr in https://github.com/biomejs/biome/pull/9324
* fix(lsp): correctly resolve `configurationPath` by @ematipico in https://github.com/biomejs/biome/pull/9323
* perf(noImportCycles): exclude `node_modules` from cycle detection by @dyc3 in https://github.com/biomejs/biome/pull/9326
* refactor(css_parser): split function parser into modules by @denbezrukov in https://github.com/biomejs/biome/pull/9325
* refactor(markdown-parser): promote fenced code block skipped trivia to explicit CST nodes by @jfmcdowell in https://github.com/biomejs/biome/pull/9321
* refactor(css): rename operator_token field to operator by @denbezrukov in https://github.com/biomejs/biome/pull/9327
* perf: add `.skip(1)` to `.ancestors()` calls in a bunch of places by @dyc3 in https://github.com/biomejs/biome/pull/9330
* perf(noEmptyBlockStatements): short circuit to avoid traversing descendants for comments by @dyc3 in https://github.com/biomejs/biome/pull/9329
* fix: lowercase component member expressions in Astro/Svelte by @sepagian in https://github.com/biomejs/biome/pull/9302
* chore: align parser options struct name by @Netail in https://github.com/biomejs/biome/pull/9332
* feat(css): use ScssExpression in ScssNestingDeclaration and CssGenericProperty by @denbezrukov in https://github.com/biomejs/biome/pull/9328
* refactor(css): align scss expression node variants by @denbezrukov in https://github.com/biomejs/biome/pull/9340
* feat(css): use expression in page by @denbezrukov in https://github.com/biomejs/biome/pull/9342
* ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/9301
## New Contributors
* @sepagian made their first contribution in https://github.com/biomejs/biome/pull/9302
**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]