โ ๏ธ Breaking Change
Impact Score: 7/10
Biome CLI v2.3.2
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.
Breaking-change evidence from the source
- [#7901](https://github.com/biomejs/biome/pull/7901) [`0d17b05`](https://github.com/biomejs/biome/commit/0d17b05477a537b6d652a2e56c50bb1db013ef06) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7837](https://github.com/biomejs/biome/issues/7837), where Biome couldn't properly parse text expressions that contained nested curly brackets. This was breaking parsing in Astro and Svelte files.
โก Executive Summary (TL;DR)
Biome @biomejs/[email protected]. Source highlight: Added the nursery rule `noIncrementDecrement`, disallows the usage of the unary operators ++ and --.
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.
โ ๏ธ Breaking Changes & Deprecations (1)
- - [#7901](https://github.com/biomejs/biome/pull/7901) [`0d17b05`](https://github.com/biomejs/biome/commit/0d17b05477a537b6d652a2e56c50bb1db013ef06) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7837](https://github.com/biomejs/biome/issues/7837), where Biome couldn't properly parse text expressions that contained nested curly brackets. This was breaking parsing in Astro and Svelte files.
โจ New Features & Capabilities (2)
- feat(js): update `Boa` to `v0.21.0`
- feat(lint): implement `noIncrementDecrement`
๐ง Bug Fixes & Patches (6)
- Added the nursery rule `noIncrementDecrement`, disallows the usage of the unary operators ++ and --.
- Fixed #7837, where Biome couldn't properly parse text expressions that contained nested curly brackets. This was breaking parsing in Astro and Svelte files.
- Fixed #7230: `noUselessStringConcat` no longer emits false positives for multi-line strings with leading `+` operators.
- Fixed #7601: Properly match Grit plugin's code snippet with only one child.
- Fixed #7837, where Biome Language Server panicked when opening HTML-ish files when the experimental full support is enabled.
- fix(lint): `noUselessStringConcat` now correctly detects leading concatenation operators from `operatorLinebreak=before`
๐ View Raw Release Notes (Original Developer Log)
## 2.3.2
### Patch Changes
- [#7859](https://github.com/biomejs/biome/pull/7859) [`c600618`](https://github.com/biomejs/biome/commit/c6006184a860b42fea3f0ea5fe96c47087341a90) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noIncrementDecrement`](https://biomejs.dev/linter/rules/no-increment-decrement/), disallows the usage of the unary operators ++ and --.
- [#7901](https://github.com/biomejs/biome/pull/7901) [`0d17b05`](https://github.com/biomejs/biome/commit/0d17b05477a537b6d652a2e56c50bb1db013ef06) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7837](https://github.com/biomejs/biome/issues/7837), where Biome couldn't properly parse text expressions that contained nested curly brackets. This was breaking parsing in Astro and Svelte files.
- [#7874](https://github.com/biomejs/biome/pull/7874) [`e617d36`](https://github.com/biomejs/biome/commit/e617d363b9356bef007192a7f508e15d63f56e9b) Thanks [@Bertie690](https://github.com/Bertie690)! - Fixed [#7230](https://github.com/biomejs/biome/issues/7230): [`noUselessStringConcat`](https://biomejs.dev/linter/rules/no-useless-string-concat/) no longer emits false positives for multi-line strings with leading `+` operators.
Previously, the rule did not check for leading newlines on the `+` operator, emitting false positives if one occurred at the start of a line. \
Notably, formatting with `operatorLinebreak="before"` would move the `+` operators to the start of lines automatically, resulting in spurious errors whenever a multi-line string was used.
Now, the rule correctly detects and ignores multi-line concatenations with leading operators as well, working regardless of the setting of `operatorLinebreak`.
**Example**
```ts
// The following code used to error if the `+` operators were at the start of lines (as opposed to the end).
// Now, the rule correctly recognizes this as a stylistic concatenation and ignores it.
const reallyLongStringThatShouldNotError =
"Lorem ipsum dolor sit amet consectetur adipiscing elit." +
"Quisque faucibus ex sapien vitae pellentesque sem placerat." +
"In id cursus mi pretium tellus duis convallis." +
"Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla";
```
- [#7786](https://github.com/biomejs/biome/pull/7786) [`33ffcd5`](https://github.com/biomejs/biome/commit/33ffcd50a749ca0e188796a10b4ffffb59ead4b3) Thanks [@daivinhtran](https://github.com/daivinhtran)! - Fixed [#7601](https://github.com/biomejs/biome/issues/7601): Properly match Grit plugin's code snippet with only one child.
- [#7901](https://github.com/biomejs/biome/pull/7901) [`0d17b05`](https://github.com/biomejs/biome/commit/0d17b05477a537b6d652a2e56c50bb1db013ef06) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7837](https://github.com/biomejs/biome/issues/7837), where Biome Language Server panicked when opening HTML-ish files when the experimental full support is enabled.
## What's Changed
* fix(lint): `noUselessStringConcat` now correctly detects leading concatenation operators from `operatorLinebreak=before` by @Bertie690 in https://github.com/biomejs/biome/pull/7874
* chore(deps): update rust crate globset to 0.4.18 by @renovate[bot] in https://github.com/biomejs/biome/pull/7883
* chore(deps): update rust crate ignore to 0.4.24 by @renovate[bot] in https://github.com/biomejs/biome/pull/7884
* chore(deps): update rust crate proc-macro2 to 1.0.103 by @renovate[bot] in https://github.com/biomejs/biome/pull/7885
* chore(deps): update rust crate tikv-jemallocator to 0.6.1 by @renovate[bot] in https://github.com/biomejs/biome/pull/7886
* fix(lint): extend matcher for GritCodeSnippet to cover edge case by @daivinhtran in https://github.com/biomejs/biome/pull/7786
* feat(js): update `Boa` to `v0.21.0` by @Gumichocopengin8 in https://github.com/biomejs/biome/pull/7888
* chore(deps): update dependency eslint to v9.38.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/7890
* chore(deps): update rust crate indexmap to 2.12.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/7891
* chore(deps): update github-actions - autoclosed by @renovate[bot] in https://github.com/biomejs/biome/pull/7892
* chore(deps): update rust crate rayon to 1.11.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/7894
* chore(deps): update rust crate regex to 1.12.2 by @renovate[bot] in https://github.com/biomejs/biome/pull/7895
* chore(deps): update rust crate tokio to 1.48.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/7896
* fix(core): text expression parsing and LSP file opening by @ematipico in https://github.com/biomejs/biome/pull/7901
* feat(lint): implement `noIncrementDecrement` by @Netail in https://github.com/biomejs/biome/pull/7859
* ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/7887
**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]