Impact Score: 5/10
Biome CLI v2.0.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 a bug where Biome didn't provide all the available code actions when requested by the editor.
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)
- feat(biome_js_analyze): implement noExcessiveLinesPerFunction
- feat(linter): implement noUnassignedVariables rule
- chore: add labels for resolver and type inference
- feat(lint): implement `useUnifiedTypeSignature` rule
- feat(lint): no-alert rule
- feat(lint): implement `noImplicitCoercion` rule
π§ Bug Fixes & Patches (6)
- Fixed a bug where Biome didn't provide all the available code actions when requested by the editor.
- Fixed #6492. The
- Fixed #6287 where Biome Language Server didn't adhere to the `settings.requireConfiguration` option when pulling diagnostics and code actions.
- Fixed #6536. `useSortedKeys` no longer panics in some edge cases where object spreads are involved.
- Fixed #6482 where nursery rules that belonged to a domain were incorrectly enabled.
- Fixed #4677: Now the `noUnusedImports` rule won't produce diagnostics for types used in JSDoc comment of exports.
π View Raw Release Notes (Original Developer Log)
## 2.0.6
### Patch Changes
- [#6557](https://github.com/biomejs/biome/pull/6557) [`fd68458`](https://github.com/biomejs/biome/commit/fd68458f40767cb1aeb9eb444a03c5dd6f3f7c0d) Thanks [@ematipico](https://github.com/ematipico)! - Fixed a bug where Biome didn't provide all the available code actions when requested by the editor.
- [#6511](https://github.com/biomejs/biome/pull/6511) [`72623fa`](https://github.com/biomejs/biome/commit/72623fa30470bbb97bae24514233d4d8a39507ec) Thanks [@Conaclos](https://github.com/Conaclos)! - Fixed [#6492](https://github.com/biomejs/biome/issues/6492). The
`organizeImports` assist action no longer duplicates a comment at the start of
the file when `:BLANK_LINE:` precedes the first import group.
- [#6557](https://github.com/biomejs/biome/pull/6557) [`fd68458`](https://github.com/biomejs/biome/commit/fd68458f40767cb1aeb9eb444a03c5dd6f3f7c0d) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#6287](https://github.com/biomejs/biome/issues/6287) where Biome Language Server didn't adhere to the `settings.requireConfiguration` option when pulling diagnostics and code actions.
Note that for this configuration be correctly applied, your editor must support dynamic registration capabilities.
- [#6551](https://github.com/biomejs/biome/pull/6551) [`0b63b1d`](https://github.com/biomejs/biome/commit/0b63b1d95c32ba61b2dcda4195d860397de3b589) Thanks [@Conaclos](https://github.com/Conaclos)! - Fixed [#6536](https://github.com/biomejs/biome/issues/6536). `useSortedKeys` no longer panics in some edge cases where object spreads are involved.
- [#6503](https://github.com/biomejs/biome/pull/6503) [`9a8fe0f`](https://github.com/biomejs/biome/commit/9a8fe0f9313b2df93df56b3446340cc04a0e1958) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#6482](https://github.com/biomejs/biome/issues/6482) where nursery rules that belonged to a domain were incorrectly enabled.
- [#6565](https://github.com/biomejs/biome/pull/6565) [`e85761c`](https://github.com/biomejs/biome/commit/e85761c72058e2c039ff16707781f7e0aa19d2a9) Thanks [@daivinhtran](https://github.com/daivinhtran)! - Fixed [#4677](https://github.com/biomejs/biome/issues/4677): Now the `noUnusedImports` rule won't produce diagnostics for types used in JSDoc comment of exports.
- [#6166](https://github.com/biomejs/biome/pull/6166) [`b8cbd83`](https://github.com/biomejs/biome/commit/b8cbd839935fd0e672cb0fc2051df0e2fb9e5d1a) Thanks [@mehm8128](https://github.com/mehm8128)! - Added the nursery rule [noExcessiveLinesPerFunction](https://biomejs.dev/linter/rules/no-excessive-lines-per-function/).
This rule restrict a maximum number of lines of code in a function body.
The following code is now reported as invalid when the limit of maximum lines is set to 2:
```js
function foo() {
const x = 0;
const y = 1;
const z = 2;
}
```
The following code is now reported as valid when the limit of maximum lines is set to 3:
```jsx
const bar = () => {
const x = 0;
const z = 2;
};
```
- [#6553](https://github.com/biomejs/biome/pull/6553) [`5f42630`](https://github.com/biomejs/biome/commit/5f42630f7b457070c7c1ad17cee28eae2e9951cc) Thanks [@denbezrukov](https://github.com/denbezrukov)! - Fixed [#6547](https://github.com/biomejs/biome/issues/6547). Now the Biome CSS parser correctly parses `@starting-style` when it's used inside other at-rules. The following example doesn't raise an error anymore:
```css
@layer my-demo-layer {
@starting-style {
div.showing {
background-color: red;
}
}
}
```
- [#6458](https://github.com/biomejs/biome/pull/6458) [`05402e3`](https://github.com/biomejs/biome/commit/05402e395f6e356b690e1cad740294183fafeb84) Thanks [@ematipico](https://github.com/ematipico)! - Fixed an issue where the rule `useSemanticElements` used the incorrect range when positioning suppression comments.
- [#6560](https://github.com/biomejs/biome/pull/6560) [`6d8a6b9`](https://github.com/biomejs/biome/commit/6d8a6b9a31788565455d6a6138ef6c1fe67421d5) Thanks [@siketyan](https://github.com/siketyan)! - Fixed [#6559](https://github.com/biomejs/biome/issues/6559): the error message on detected a large file was outdated and referred a removed configuration option `files.ignore`.
- [#6458](https://github.com/biomejs/biome/pull/6458) [`05402e3`](https://github.com/biomejs/biome/commit/05402e395f6e356b690e1cad740294183fafeb84) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#6384](https://github.com/biomejs/biome/issues/6384). The rule [`useAltText`](https://biomejs/dev/linter/rules/no-alt-text) now emits a diagnostic with a correct range, so suppression comments can work correctly.
- [#6518](https://github.com/biomejs/biome/pull/6518) [`7a56288`](https://github.com/biomejs/biome/commit/7a56288e0c7f366d6aa30100432227f3501afb61) Thanks [@wojtekmaj](https://github.com/wojtekmaj)! - Fixed #6508, where the rule `noUselessFragments` incorrectly flagged Fragments containing HTML entities as unnecessary.
- [#6517](https://github.com/biomejs/biome/pull/6517) [`c5217cf`](https://github.com/biomejs/biome/commit/c5217cfb21653add3d3add930102bea8fb7b5833) Thanks [@arendjr](https://github.com/arendjr)! - Fixed [#6515](https://github.com/biomejs/biome/issues/6515). When using the
`extends` field to extend a configuration from an NPM package, we now accept the
_condition names_ `"biome"` and `"default"` for exporting the configuration in
the `package.json`.
This means that where previously your `package.json` had to contain an export
declaration similar to this:
```json
{
"exports": {
".": "./biome.json"
}
}
```
You may now use one of these as well:
```json
{
"exports": {
".": {
"biome": "./biome.json"
}
}
}
```
Or:
```json
{
"exports": {
".": {
"default": "./biome.json"
}
}
}
```
- [#6219](https://github.com/biomejs/biome/pull/6219) [`a3a3715`](https://github.com/biomejs/biome/commit/a3a371552a84eaaf24ce1bd8e63e3c1243b285a9) Thanks [@huangtiandi1999](https://github.com/huangtiandi1999)! - Added new nursery rule [`noUnassignedVariables`](https://biomejs.dev/linter/rules/no-unassigned-variables/), which disallows `let` or `var` variables that are read but never assigned.
The following code is now reported as invalid:
```js
let x;
if (x) {
console.log(1);
}
```
The following code is now reported as valid:
```js
let x = 1;
if (x) {
console.log(1);
}
```
- [#6395](https://github.com/biomejs/biome/pull/6395) [`f62e748`](https://github.com/biomejs/biome/commit/f62e7481c2a94271869651d2b32bde5d54adbc73) Thanks [@mdevils](https://github.com/mdevils)! - Added the new nursery rule [`noImplicitCoercion`](https://biomejs.dev/linter/rules/no-implicit-coercion), which disallows shorthand type conversions in favor of explicit type conversion functions.
**Example (Invalid): Boolean conversion using double negation:**
```js
!!foo;
!!(foo + bar);
```
**Example (Invalid): Number conversion using unary operators:**
```js
+foo;
-(-foo);
foo - 0;
foo * 1;
foo / 1;
```
**Example (Invalid): String conversion using concatenation:**
```js
"" + foo;
foo + "";
`` + foo;
foo += "";
```
**Example (Invalid): Index checking using bitwise NOT:**
```js
~foo.indexOf(1);
~foo.bar.indexOf(2);
```
**Example (Valid): Using explicit type conversion functions:**
```js
Boolean(foo);
Number(foo);
String(foo);
foo.indexOf(1) !== -1;
```
- [#6544](https://github.com/biomejs/biome/pull/6544) [`f28b075`](https://github.com/biomejs/biome/commit/f28b075b4fd28e49f18ae131878f67ce9a831c5a) Thanks [@daivinhtran](https://github.com/daivinhtran)! - Fixed [#6536](https://github.com/biomejs/biome/issues/6530). Now the rule `noUselessFragments` produces diagnostics for a top-level useless fragment that is in a return statement.
- [#6320](https://github.com/biomejs/biome/pull/6320) [`5705f1a`](https://github.com/biomejs/biome/commit/5705f1aa9e41bfaea53edf255a18167b52a5fd9b) Thanks [@mdevils](https://github.com/mdevils)! - Added the new nursery rule [`useUnifiedTypeSignature`](https://biomejs.dev/linter/rules/use-unified-type-signature), which disallows overload signatures that can be unified into a single signature.
Overload signatures that can be merged into a single signature are redundant and should be avoided. This rule helps simplify function signatures by combining overloads by making parameters optional and/or using type unions.
**Example (Invalid): Overload signatures that can be unified:**
```ts
function f(a: number): void;
function f(a: string): void;
```
```ts
interface I {
a(): void;
a(x: number): void;
}
```
**Example (Valid): Unified signatures:**
```ts
function f(a: number | string): void {}
```
```ts
interface I {
a(x?: number): void;
}
```
**Example (Valid): Different return types cannot be merged:**
```ts
interface I {
f(): void;
f(x: number): number;
}
```
- [#6545](https://github.com/biomejs/biome/pull/6545) [`2782175`](https://github.com/biomejs/biome/commit/2782175c445d4e5f979497ea76beda0276783909) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#6529](https://github.com/biomejs/biome/issues/6529), where the Biome Language Server would emit an error when the user would open a file that isn't part of its workspace (`node_modules` or external files).
Now the language server doesn't emit any errors and it exits gracefully.
- [#6524](https://github.com/biomejs/biome/pull/6524) [`a27b825`](https://github.com/biomejs/biome/commit/a27b8253b2f0d5e5618e9b26eebaaa5da55ed69a) Thanks [@vladimir-ivanov](https://github.com/vladimir-ivanov)! - Fixed [#6500](https://github.com/biomejs/biome/issues/6500): The `useReadonlyClassProperties` rule now correctly marks class properties as `readonly` when they are assigned in a constructor, setter or method,
even if the assignment occurs inside an if or else block.
The following code is now correctly detected by the rule:
```ts
class Price {
#price: string;
@Input()
set some(value: string | number) {
if (
value === undefined ||
value === null ||
value === "undefined" ||
value === "null" ||
Number.isNaN(value)
) {
this.#price = "";
} else {
this.#price = "" + value;
}
}
}
```
- [#6355](https://github.com/biomejs/biome/pull/6355) [`e128ea9`](https://github.com/biomejs/biome/commit/e128ea9eb44bcf5558ab6b08214884d1c087686d) Thanks [@anthonyshew](https://github.com/anthonyshew)! - Added a new nursery rule `noAlert` that disallows the use of `alert`, `confirm` and `prompt`.
The following code is deemed incorrect:
```js
alert("here!");
```
- [#6548](https://github.com/biomejs/biome/pull/6548) [`37e9799`](https://github.com/biomejs/biome/commit/37e979978b406c3e132fd5093bfb21e811c93d2d) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#6459](https://github.com/biomejs/biome/issues/6459), where the Biome LSP was not taking into account the correct settings when applying `source.fixAll.biome` code action.
## What's Changed
* fix(linter): don't enable nursery rules in domains by @ematipico in https://github.com/biomejs/biome/pull/6503
* fix(assist/organizeImports): don't duplicate header file comment by @Conaclos in https://github.com/biomejs/biome/pull/6511
* feat(biome_js_analyze): implement noExcessiveLinesPerFunction by @mehm8128 in https://github.com/biomejs/biome/pull/6166
* fix(core): allow condition names in configuration packages by @arendjr in https://github.com/biomejs/biome/pull/6517
* feat(linter): implement noUnassignedVariables rule by @huangtiandi1999 in https://github.com/biomejs/biome/pull/6219
* chore: add labels for resolver and type inference by @arendjr in https://github.com/biomejs/biome/pull/6526
* ci: add step to dispatch event for automated codegen by @ematipico in https://github.com/biomejs/biome/pull/6505
* fix(biome-js-analyze): add a check for if/ else and ternary operators⦠by @vladimir-ivanov in https://github.com/biomejs/biome/pull/6524
* fix(doc): typo in CONTRIBUTING.md by @daivinhtran in https://github.com/biomejs/biome/pull/6543
* docs: fix indenting in the CLI-reference by @CommanderStorm in https://github.com/biomejs/biome/pull/6542
* feat(lint): implement `useUnifiedTypeSignature` rule by @mdevils in https://github.com/biomejs/biome/pull/6320
* feat(lint): no-alert rule by @anthonyshew in https://github.com/biomejs/biome/pull/6355
* feat(lint): implement `noImplicitCoercion` rule by @mdevils in https://github.com/biomejs/biome/pull/6395
* fix(js/useSortedKeys): don't compare named properties with nameless ones by @Conaclos in https://github.com/biomejs/biome/pull/6551
* fix(js/useSortedKeys): add sources by @Conaclos in https://github.com/biomejs/biome/pull/6552
* fix(lsp): fix all file features by @ematipico in https://github.com/biomejs/biome/pull/6548
* fix(linter): diagnostic range for `useAtlText` by @ematipico in https://github.com/biomejs/biome/pull/6458
* fix(lsp): code action error by @ematipico in https://github.com/biomejs/biome/pull/6545
* chore(editorconfig): remove max_line_length comment by @tatzyr in https://github.com/biomejs/biome/pull/6555
* refactor: attach rule source kind to rule source by @Conaclos in https://github.com/biomejs/biome/pull/6556
* fix(cli): replace `files.ignore` with `files.includes` in the error message by @siketyan in https://github.com/biomejs/biome/pull/6560
* chore: link packages differently by @ematipico in https://github.com/biomejs/biome/pull/6558
* fix(lint/complexity/noUselessFragments): fix Fragments containing HTML entities marked as unnecessary by @wojtekmaj in https://github.com/biomejs/biome/pull/6518
* fix(biome_js_analyze): produce diagnogstics for top-level useless fragment that is in a return statement by @daivinhtran in https://github.com/biomejs/biome/pull/6544
* fix(docs): mdx printing and missed diagnostic by @ematipico in https://github.com/biomejs/biome/pull/6561
* fix(lsp): require config and code actions by @ematipico in https://github.com/biomejs/biome/pull/6557
* fix(css_parser): use a conditional block for the @starting-style at-rule by @denbezrukov in https://github.com/biomejs/biome/pull/6553
* fix(biome_js_analyze): add JsExport to be walked by JsDocTypeCollectorVisitior by @daivinhtran in https://github.com/biomejs/biome/pull/6565
* ci: release by @github-actions in https://github.com/biomejs/biome/pull/6507
## New Contributors
* @CommanderStorm made their first contribution in https://github.com/biomejs/biome/pull/6542
* @tatzyr made their first contribution in https://github.com/biomejs/biome/pull/6555
**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]