Impact Score: 5/10
Biome CLI v2.3.9
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: Added the nursery rule `noScriptUrl`.
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 (4)
- Added the nursery rule `useRegexpExec`. Enforce `RegExp#exec` over `String#match` if no global flag is provided.
- Added the rule `useRequiredScripts`, which enforces presence of configurable entries in the `scripts` section of `package.json` files.
- Added support for negative value utilities in `useSortedClasses`. Negative value utilities such as `-ml-2` or `-top-4` are now recognized and sorted correctly alongside their positive counterparts.
- Added the new nursery rule `useDestructuring`. This rule helps to encourage destructuring from arrays and objects.
โก Performance & Enhancements (1)
- Improved the rule `noBiomeFirstException`. The rule can now inspect if extended configurations already contain the catch-all `**` inside `files.includes` and, if so, the rule suggests removing `**` from the user configuration.
๐ง Bug Fixes & Patches (6)
- Added the nursery rule `noScriptUrl`.
- Added the nursery rule `useAwaitThenable`, which enforces that `await` is only used on Promise values.
- Fixed #8109: return statements in Astro frontmatter no longer trigger "Illegal return statement" errors when using `experimentalFullSupportEnabled`.
- Fixed #8292: Implement tracking
- Fixed #7920: The CSS parser, with Tailwind directives enabled, will no longer error when you use things like `prefix(tw)` in `@import` at rules.
- Fix `--changed` and `--staged` flags throwing "No such file or directory" error when a file has been deleted or renamed in the working directory. The CLI now filters out files that no longer exist before processing.
๐ View Raw Release Notes (Original Developer Log)
## 2.3.9
### Patch Changes
- [#8232](https://github.com/biomejs/biome/pull/8232) [`84c9e08`](https://github.com/biomejs/biome/commit/84c9e08b1b736dcc6d163ab1fb48c581b2de458c) Thanks [@ruidosujeira](https://github.com/ruidosujeira)! - Added the nursery rule [`noScriptUrl`](https://biomejs.dev/linter/rules/no-script-url/).
This rule disallows the use of `javascript:` URLs, which are considered a form of `eval` and can pose security risks such as XSS vulnerabilities.
```jsx
<a href="javascript:alert('XSS')">Click me</a>
```
- [#8341](https://github.com/biomejs/biome/pull/8341) [`343dc4d`](https://github.com/biomejs/biome/commit/343dc4dfd48a048f0c833af318b6a10dfc4dab6d) Thanks [@arendjr](https://github.com/arendjr)! - Added the nursery rule [`useAwaitThenable`](https://biomejs.dev/linter/rules/use-await-thenable/), which enforces that `await` is only used on Promise values.
#### Invalid
```js
await "value";
const createValue = () => "value";
await createValue();
```
#### Caution
This is a first iteration of the rule, and does not yet detect generic ["thenable"](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#thenables) values.
- [#8034](https://github.com/biomejs/biome/pull/8034) [`e7e0f6c`](https://github.com/biomejs/biome/commit/e7e0f6c14df92d83d08f86b1e57fc82b4df775b7) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`useRegexpExec`](https://biomejs.dev/linter/rules/use-regexp-exec/). Enforce `RegExp#exec` over `String#match` if no global flag is provided.
- [#8137](https://github.com/biomejs/biome/pull/8137) [`d407efb`](https://github.com/biomejs/biome/commit/d407efb8c650b9288f545efedd4b7d3f9783c8d1) Thanks [@denbezrukov](https://github.com/denbezrukov)! - Reduced the internal memory used by the Biome formatter.
- [#8281](https://github.com/biomejs/biome/pull/8281) [`30b046f`](https://github.com/biomejs/biome/commit/30b046faca464404aaeecfe1ed0e8a94b0e25990) Thanks [@tylersayshi](https://github.com/tylersayshi)! - Added the rule [`useRequiredScripts`](https://biomejs.dev/linter/rules/use-required-scripts/), which enforces presence of configurable entries in the `scripts` section of `package.json` files.
- [#8290](https://github.com/biomejs/biome/pull/8290) [`d74c8bd`](https://github.com/biomejs/biome/commit/d74c8bda655a17405809d24126ee09e9e200d51e) Thanks [@dyc3](https://github.com/dyc3)! - The HTML formatter has been updated to match Prettier 3.7's behavior for handling `<iframe>`'s `allow` attribute.
```diff
- <iframe allow="layout-animations 'none'; unoptimized-images 'none'; oversized-images 'none'; sync-script 'none'; sync-xhr 'none'; unsized-media 'none';"></iframe>
+ <iframe
+ allow="
+ layout-animations 'none';
+ unoptimized-images 'none';
+ oversized-images 'none';
+ sync-script 'none';
+ sync-xhr 'none';
+ unsized-media 'none';
+ "
+ ></iframe>
```
- [#8302](https://github.com/biomejs/biome/pull/8302) [`d1d5014`](https://github.com/biomejs/biome/commit/d1d50140f23c9c3ce4f48d9d2b97822234aad798) Thanks [@mlafeldt](https://github.com/mlafeldt)! - Fixed [#8109](https://github.com/biomejs/biome/issues/8109): return statements in Astro frontmatter no longer trigger "Illegal return statement" errors when using `experimentalFullSupportEnabled`.
- [#8346](https://github.com/biomejs/biome/pull/8346) [`f3aee1a`](https://github.com/biomejs/biome/commit/f3aee1a92fba7c61de4b6f5ada3063fb126db885) Thanks [@arendjr](https://github.com/arendjr)! - Fixed [#8292](https://github.com/biomejs/biome/issues/8292): Implement tracking
of types of TypeScript constructor parameter properties.
This resolves certain false negatives in `noFloatingPromises` and other typed
rules.
#### Example
```ts
class AsyncClass {
async returnsPromise() {
return "value";
}
}
class ShouldBeReported {
constructor(public field: AsyncClass) {}
// ^^^^^^^^^^^^----------------- Parameter property declaration
async shouldBeReported() {
// `noFloatingPromises` will now report the following usage:
this.field.returnsPromise();
}
}
```
- [#8326](https://github.com/biomejs/biome/pull/8326) [`153e3c6`](https://github.com/biomejs/biome/commit/153e3c6ba999481c8dff2531bcbbd62f4977cd19) Thanks [@ematipico](https://github.com/ematipico)! - Improved the rule `noBiomeFirstException`. The rule can now inspect if extended configurations already contain the catch-all `**` inside `files.includes` and, if so, the rule suggests removing `**` from the user configuration.
- [#8433](https://github.com/biomejs/biome/pull/8433) [`397547a`](https://github.com/biomejs/biome/commit/397547a85c46d87ccf6a8501c734b844b348865e) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#7920](https://github.com/biomejs/biome/issues/7920): The CSS parser, with Tailwind directives enabled, will no longer error when you use things like `prefix(tw)` in `@import` at rules.
- [#8378](https://github.com/biomejs/biome/pull/8378) [`cc2a62e`](https://github.com/biomejs/biome/commit/cc2a62e61b3818e59a16e0add9293c6345441ad7) Thanks [@Bertie690](https://github.com/Bertie690)! - Clarify diagnostic message for `lint/style/useUnifiedTypeSignatures`
The rule's diagnostic message now clearly states that multiple _similar_ overload signatures are hard to read & maintain, as opposed to overload signatures in general.
- [#8296](https://github.com/biomejs/biome/pull/8296) [`9d3ef10`](https://github.com/biomejs/biome/commit/9d3ef10d007e637c43b2f5e97758767da5f03d32) Thanks [@dyc3](https://github.com/dyc3)! - `biome rage` now shows if you have experimental HTML full support enabled.
- [#8414](https://github.com/biomejs/biome/pull/8414) [`09acf2a`](https://github.com/biomejs/biome/commit/09acf2a700f480ae6acbefaab770e8db33d5e596) Thanks [@Bertie690](https://github.com/Bertie690)! - Updated the documentation & diagnostic message for `lint/nursery/noProto`, mentioning the reasons for its longstanding deprecation and why more modern alternatives are preferred.
Notably, the rule clearly states that using `__proto__` inside object literal definitions is still allowed, being a standard way to set the prototype of a newly created object.
- [#8445](https://github.com/biomejs/biome/pull/8445) [`c3df0e0`](https://github.com/biomejs/biome/commit/c3df0e04fe6d23b41daa2cd832071d82fbc4224f) Thanks [@tt-a1i](https://github.com/tt-a1i)! - Fix `--changed` and `--staged` flags throwing "No such file or directory" error when a file has been deleted or renamed in the working directory. The CLI now filters out files that no longer exist before processing.
- [#8459](https://github.com/biomejs/biome/pull/8459) [`b17d12b`](https://github.com/biomejs/biome/commit/b17d12b497ef3ec694d53f684295e0c6e49fdcad) Thanks [@ruidosujeira](https://github.com/ruidosujeira)! - Fix [#8435](https://github.com/biomejs/biome/issues/8435): resolved false positive in `noUnusedVariables` for generic type parameters in construct signature type members (`new <T>(): T`).
- [#8439](https://github.com/biomejs/biome/pull/8439) [`a78774b`](https://github.com/biomejs/biome/commit/a78774bd8eabe159d5596bfed198d7216282e159) Thanks [@tt-a1i](https://github.com/tt-a1i)! - Fixed [#8011](https://github.com/biomejs/biome/issues/8011): [`useConsistentCurlyBraces`](https://biomejs.dev/linter/rules/use-consistent-curly-braces/) no longer suggests removing curly braces from JSX expression children containing characters that would cause parsing issues or semantic changes when converted to plain JSX text (`{`, `}`, `<`, `>`, `&`).
- [#8436](https://github.com/biomejs/biome/pull/8436) [`a392c06`](https://github.com/biomejs/biome/commit/a392c0646e285086558b96e0af7a84174d8bb190) Thanks [@ruidosujeira](https://github.com/ruidosujeira)! - Fixed [#8429](https://github.com/biomejs/biome/issues/8429). Formatter, linter, and assist settings now correctly inherit from global configuration when not explicitly specified in overrides.
Before this fix, when an override specified only one feature (e.g., only `linter`), other features would be incorrectly disabled instead of inheriting from global settings.
Example configuration that now works correctly:
```json
{
"formatter": { "enabled": true },
"overrides": [
{
"includes": ["*.vue"],
"linter": { "enabled": false }
}
]
}
```
After this fix, `.vue` files will have the linter disabled (as specified in the override) but the formatter enabled (inherited from global settings).
- [#8411](https://github.com/biomejs/biome/pull/8411) [`9f1b3b0`](https://github.com/biomejs/biome/commit/9f1b3b06586401b39e0aa886bf7c8484fd2a6ded) Thanks [@rriski](https://github.com/rriski)! - Properly handle `name`, `type_arguments`, and `attributes` slots for `JsxOpeningElement` and `JsxSelfClosingElement` GritQL patterns.
The following biome search commands no longer throw errors:
```shell
biome search 'JsxOpeningElement(name = $elem_name) where { $elem_name <: "div" }'
biome search 'JsxSelfClosingElement(name = $elem_name) where { $elem_name <: "div" }'
```
- [#8441](https://github.com/biomejs/biome/pull/8441) [`cf37d0d`](https://github.com/biomejs/biome/commit/cf37d0dee56dba8c8b9e81c880f82f365f3102bf) Thanks [@tt-a1i](https://github.com/tt-a1i)! - Fixed [#6577](https://github.com/biomejs/biome/issues/6577): [`noUselessUndefined`](https://biomejs.dev/linter/rules/no-useless-undefined/) no longer reports `() => undefined` in arrow function expression bodies. Previously, the rule would flag this pattern and suggest replacing it with `() => {}`, which conflicts with the `noEmptyBlockStatements` rule.
- [#8444](https://github.com/biomejs/biome/pull/8444) [`8caa7a0`](https://github.com/biomejs/biome/commit/8caa7a07547960d8e9101fe67e2c490ec52426e9) Thanks [@tt-a1i](https://github.com/tt-a1i)! - Fix [`noUnknownMediaFeatureName`](https://biomejs.dev/linter/rules/no-unknown-media-feature-name/) false positive for `prefers-reduced-transparency` media feature. The feature name was misspelled as `prefers-reduded-transparency` in the keywords list.
- [#8443](https://github.com/biomejs/biome/pull/8443) [`c3fa5a1`](https://github.com/biomejs/biome/commit/c3fa5a1f26d8ea90006f9ded667136d6db347a8d) Thanks [@tt-a1i](https://github.com/tt-a1i)! - Fix [`useGenericFontNames`](https://biomejs.dev/linter/rules/use-generic-font-names/) false positive when a CSS variable is used as the last value in `font-family` or `font`. The rule now correctly ignores cases like `font-family: "Noto Serif", var(--serif)` and `font: 1em Arial, var(--fallback)`.
- [#8281](https://github.com/biomejs/biome/pull/8281) [`30b046f`](https://github.com/biomejs/biome/commit/30b046faca464404aaeecfe1ed0e8a94b0e25990) Thanks [@tylersayshi](https://github.com/tylersayshi)! - Fixed [`noDuplicateDependencies`](https://biomejs.dev/linter/rules/no-duplicate-dependencies/) incorrectly triggering on files like `_package.json`.
- [#8315](https://github.com/biomejs/biome/pull/8315) [`c7915c4`](https://github.com/biomejs/biome/commit/c7915c445fbe00d94713e4a285df3e0becde64a7) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Fixed [#5213](https://github.com/biomejs/biome/issues/5213): The [`noDoneCallback`](https://biomejs.dev/linter/rules/no-done-callback/) rule no longer flags false positives when a method is called on a regular variable bound to identifiers such as `before`, `after`, `beforeEach`, and `afterEach`.
- [#8398](https://github.com/biomejs/biome/pull/8398) [`204844f`](https://github.com/biomejs/biome/commit/204844f98f50140c4072b3ee1843994dbe73d2f7) Thanks [@Bertie690](https://github.com/Bertie690)! - The default value of the `ignoreRestSiblings` option for [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables)'
has been reverted to its prior value of `true` after [an internal refactor](https://github.com/biomejs/biome/pull/7941) accidentally changed it.
The diagnostic message has also been tweaked for readability.
- [#8242](https://github.com/biomejs/biome/pull/8242) [`9694e37`](https://github.com/biomejs/biome/commit/9694e373a1d34b799fb24780ddfde8680758b8b8) Thanks [@dyc3](https://github.com/dyc3)! - Fixed bugs in the HTML parser so that it will flag invalid shorthand syntaxes instead of silently accepting them. For example, `<Foo : foo="5" />` is now invalid because there is a space after the `:`.
- [#8297](https://github.com/biomejs/biome/pull/8297) [`efa694c`](https://github.com/biomejs/biome/commit/efa694c019cbdbac5328b76bb70c464ad9befbf8) Thanks [@Yonom](https://github.com/Yonom)! - Added support for negative value utilities in [`useSortedClasses`](https://biomejs.dev/linter/rules/use-sorted-classes/). Negative value utilities such as `-ml-2` or `-top-4` are now recognized and sorted correctly alongside their positive counterparts.
```jsx
// Now detected as unsorted:
<div class="-ml-2 p-4 -mt-1" />
// Suggested fix:
<div class="-mt-1 -ml-2 p-4" />
```
- [#8335](https://github.com/biomejs/biome/pull/8335) [`3710702`](https://github.com/biomejs/biome/commit/3710702c3c489f57f82c24311023e1ffad53172a) Thanks [@dibashthapa](https://github.com/dibashthapa)! - Added the new nursery rule [`useDestructuring`](https://biomejs.dev/linter/rules/use-destructuring). This rule helps to encourage destructuring from arrays and objects.
For example, the following code triggers because the variable name `x` matches the property `foo.x`, making it ideal for object destructuring syntax.
```js
var x = foo.x;
```
- [#8383](https://github.com/biomejs/biome/pull/8383) [`59b2f9a`](https://github.com/biomejs/biome/commit/59b2f9a780320b5eae8a4e66e2a5fe8256d52fe6) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7927](https://github.com/biomejs/biome/issues/7927): [`noExtraNonNullAssertion`](https://biomejs.dev/linter/rules/no-extra-non-null-assertion) incorrectly flagged separate non-null assertions on both sides of an assignment.
The rule now correctly distinguishes between nested non-null assertions (still flagged) and separate non-null assertions on different sides of an assignment (allowed).
#### Examples
##### Valid (now allowed)
```ts
arr[0]! ^= arr[1]!;
```
##### Invalid (still flagged)
```ts
arr[0]!! ^= arr[1];
arr[0] ^= arr[1]!!;
```
- [#8401](https://github.com/biomejs/biome/pull/8401) [`382786b`](https://github.com/biomejs/biome/commit/382786b29f0c1e9524fee370ef7067de82a25e91) Thanks [@Bertie690](https://github.com/Bertie690)! - [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies) now correctly validates custom hooks whose dependency arrays come before their callbacks.
Previously, a logical error caused the rule to be unable to detect dependency arrays placed before hook callbacks, producing spurious errors and blocking further diagnostics.
```json
{
"linter": {
"rules": {
"correctness": {
"useExhaustiveDependencies": {
"level": "error",
"options": {
"hooks": [
{
"name": "doSomething",
"closureIndex": 2,
"dependenciesIndex": 0
}
]
}
}
}
}
}
}
```
```js
function component() {
let thing = 5;
// The rule will now correctly recognize `thing` as being specified
// instead of erroring due to "missing" dependency arrays
doSomething([thing], "blah", () => {
console.log(thing);
});
}
```
The rule documentation & diagnostic messages have also been reworked for improved clarity.
- [#8365](https://github.com/biomejs/biome/pull/8365) [`8f36051`](https://github.com/biomejs/biome/commit/8f36051bc30978b2900329a18176de423db25cfe) Thanks [@JacquesLeupin](https://github.com/JacquesLeupin)! - Fixed [#8360](https://github.com/biomejs/biome/issues/8360): GritQL plugins defined in child configurations with `extends: "//"` now work correctly.
- [#8306](https://github.com/biomejs/biome/pull/8306) [`8de2774`](https://github.com/biomejs/biome/commit/8de2774fb507a10e32ecf920bb5d0f801a9e869c) Thanks [@dibashthapa](https://github.com/dibashthapa)! - Fixed [#8288](https://github.com/biomejs/biome/issues/8288): Fixed the issue with false positive errors
This new change will ignore attribute and only show diagnostics for JSX Expressions
For example
Valid:
```jsx
<Something checked={isOpen && items.length} />
```
Invalid:
```jsx
const Component = () => {
return isOpen && items.length;
};
```
- [#8356](https://github.com/biomejs/biome/pull/8356) [`f9673fc`](https://github.com/biomejs/biome/commit/f9673fc0816908cd686eab7a48d4e8be3f51c7c7) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7917](https://github.com/biomejs/biome/issues/7917), where Biome removed the styles contained in a `<style lang="scss">`, when `experimentalFullSupportEnabled` is enabled.
- [#8371](https://github.com/biomejs/biome/pull/8371) [`d71924e`](https://github.com/biomejs/biome/commit/d71924e26d8c71b7216247d71547e45183d85054) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7343](https://github.com/biomejs/biome/issues/7343), where Biome failed to resolve extended configurations from parent directories using relative paths.
- [#8404](https://github.com/biomejs/biome/pull/8404) [`6a221f9`](https://github.com/biomejs/biome/commit/6a221f98304133d80a8b328b74b203a03f68f571) Thanks [@fireairforce](https://github.com/fireairforce)! - Fixed [#7826](https://github.com/biomejs/biome/issues/7826), where a class member named `async` will not cause the parse error.
- [#8249](https://github.com/biomejs/biome/pull/8249) [`893e36c`](https://github.com/biomejs/biome/commit/893e36c7c39d210ccedfe040bb414945262b5d92) Thanks [@cormacrelf](https://github.com/cormacrelf)! - Addressed [#7538](https://github.com/biomejs/biome/issues/7538). Reduced the
volume of logging from the LSP server.
Use `biome clean` to remove large logs.
- [#8303](https://github.com/biomejs/biome/pull/8303) [`db2c65b`](https://github.com/biomejs/biome/commit/db2c65b7eaf057eda12434e98acf5430fe77b165) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Fixed [#8300](https://github.com/biomejs/biome/issues/8300): [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/) now detects JSDoc tags on object properties.
```js
import type LinkOnObjectProperty from "mod";
const testLinkOnObjectProperty = {
/**
* {@link LinkOnObjectProperty}
*/
property: 0,
};
```
- [#8328](https://github.com/biomejs/biome/pull/8328) [`9cf2332`](https://github.com/biomejs/biome/commit/9cf233275d1369bcce191146660ea92b26d6f211) Thanks [@Netail](https://github.com/Netail)! - Corrected rule source reference. `biome migrate eslint` should do a bit better detecting rules in your eslint configurations.
- [#8403](https://github.com/biomejs/biome/pull/8403) [`c96dcf2`](https://github.com/biomejs/biome/commit/c96dcf2f2824a83f8df8f86b684301184dd1344b) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#8340](https://github.com/biomejs/biome/issues/8340): `noUnknownProperty` will no longer flag anything in `@plugin` when the parser option `tailwindDirectives` is enabled
- [#8284](https://github.com/biomejs/biome/pull/8284) [`4976d1b`](https://github.com/biomejs/biome/commit/4976d1bebf81f874a0378f904e03c38fdb397702) Thanks [@denbezrukov](https://github.com/denbezrukov)! - Improved the performance of the Biome Formatter by enabling the internal source maps only when needed.
- [#8260](https://github.com/biomejs/biome/pull/8260) [`a226b28`](https://github.com/biomejs/biome/commit/a226b2862daa6e8d130bf3bfd88f6693412607e6) Thanks [@ho991217](https://github.com/ho991217)! - Fixed [biome-vscode#817](https://github.com/biomejs/biome-vscode/issues/817): Biome now updates documents when the `textDocument/didSave` notification is received.
- [#8183](https://github.com/biomejs/biome/pull/8183) [`b064786`](https://github.com/biomejs/biome/commit/b064786002ec7bd80be3a4a4b94a8f61b0aa3a47) Thanks [@hornta](https://github.com/hornta)! - Fixed [#8179](https://github.com/biomejs/biome/issues/8179): The [`useConsistentArrowReturn`](https://biomejs.dev/linter/rules/use-consistent-arrow-return/) rule now correctly handles multiline expressions in its autofix when the `style` option is set to `"always"`.
Previously, the autofix would incorrectly place a newline after the `return` keyword, causing unexpected behavior.
Example:
```js
const foo = (l) => l.split("\n");
```
Now correctly autofixes to:
```diff
const foo = (l) => {
- return
- l.split('\n');
+ return l.split('\n');
}
```
- [#8382](https://github.com/biomejs/biome/pull/8382) [`7409cba`](https://github.com/biomejs/biome/commit/7409cbaa9be1eed34c1279920bdd33674120f0b3) Thanks [@fireairforce](https://github.com/fireairforce)! - Fixed [#8338](https://github.com/biomejs/biome/issues/8338): Ignored the `noUnknownTypeSelector` check when the `root` selector is used under View Transition pseudo-elements.
**Example**
```css
::view-transition-old(root),
::view-transition-new(root) {
z-index: 1;
}
```
- [#7513](https://github.com/biomejs/biome/pull/7513) [`e039f3b`](https://github.com/biomejs/biome/commit/e039f3b17cdf4e4b7c2ae9b0b0c58a9800b5703c) Thanks [@AsherDe](https://github.com/AsherDe)! - Added the nursery rule [`noVueSetupPropsReactivityLoss`](https://biomejs.dev/linter/rules/no-vue-setup-props-reactivity-loss/).
This new rule disallows usages that cause the reactivity of `props` passed to the `setup` function to be lost.
Invalid code example:
```jsx
export default {
setup({ count }) {
// `count` is no longer reactive here.
return () => h("div", count);
},
};
```
## What's Changed
* fix(lsp): do not log full file contents twice on every keystroke by @cormacrelf in https://github.com/biomejs/biome/pull/8249
* docs: be more specific with changeset guidelines by @dyc3 in https://github.com/biomejs/biome/pull/8282
* fix: reload file from disk on save to fix stale diagnostics by @ho991217 in https://github.com/biomejs/biome/pull/8260
* feat(js_analyze): implement `useRegexpExec` by @Netail in https://github.com/biomejs/biome/pull/8034
* feat(cli): show html full support configuration in `biome rage` output by @dyc3 in https://github.com/biomejs/biome/pull/8296
* ci: bundle WASM manually by @ematipico in https://github.com/biomejs/biome/pull/8271
* feat(analyse/json): add `useRequiredScripts` rule by @tylersayshi in https://github.com/biomejs/biome/pull/8281
* fix(noUnusedImports): detect JSDoc tags on object properties by @hirokiokada77 in https://github.com/biomejs/biome/pull/8303
* fix(js_parser): allow return statements in Astro frontmatter by @mlafeldt in https://github.com/biomejs/biome/pull/8302
* feat(useSortedClasses): add support for negative value utilities by @Yonom in https://github.com/biomejs/biome/pull/8297
* fix(lint): fixed the issue with false positive errors for `noLeakedRender` rule by @dibashthapa in https://github.com/biomejs/biome/pull/8306
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8319
* chore(deps): update dependency @changesets/changelog-github to v0.5.2 by @renovate[bot] in https://github.com/biomejs/biome/pull/8320
* chore(deps): update dependency @changesets/cli to v2.29.8 by @renovate[bot] in https://github.com/biomejs/biome/pull/8322
* docs: node protocol rule reference by @Netail in https://github.com/biomejs/biome/pull/8328
* feat(lint): implement vue/noSetupPropsReactivityLoss by @AsherDe in https://github.com/biomejs/biome/pull/7513
* fix(lint): improve `noBiomeFirstException` by @ematipico in https://github.com/biomejs/biome/pull/8326
* fix(noDoneCallback): avoid false positives on non-hook identifiers by @hirokiokada77 in https://github.com/biomejs/biome/pull/8315
* feat(linter): implement `useAwaitThenable` by @arendjr in https://github.com/biomejs/biome/pull/8341
* chore: move depot to platinum sponsor by @ematipico in https://github.com/biomejs/biome/pull/8337
* fix(core): implement constructor parameter property tracking by @arendjr in https://github.com/biomejs/biome/pull/8346
* refactor(core): document services by @ematipico in https://github.com/biomejs/biome/pull/8327
* refactor(core): use boxcar by @ematipico in https://github.com/biomejs/biome/pull/8352
* fix(html/formatter): style tag with lang by @ematipico in https://github.com/biomejs/biome/pull/8356
* feat(format/html): handle iframe allow special formatting by @dyc3 in https://github.com/biomejs/biome/pull/8290
* chore: sync html prettier tests by @dyc3 in https://github.com/biomejs/biome/pull/8291
* feat(lint): implement `useDestructuring` by @dibashthapa in https://github.com/biomejs/biome/pull/8335
* refactor(formatter): add printer option to disable source-map generation by @denbezrukov in https://github.com/biomejs/biome/pull/8284
* refactor(formatter): reduce best fitting allocations by @denbezrukov in https://github.com/biomejs/biome/pull/8137
* fix: resolve plugin paths relative to config file when using extends by @JacquesLeupin in https://github.com/biomejs/biome/pull/8365
* fix(cli): resolve configs from parent paths by @ematipico in https://github.com/biomejs/biome/pull/8371
* fix(lint): update rule diagnostic message for `useUnifiedTypeSignature` by @Bertie690 in https://github.com/biomejs/biome/pull/8378
* feat: implement noScriptUrl rule by @ruidosujeira in https://github.com/biomejs/biome/pull/8232
* fix(lint): don't flag separate non-null assertions on assignment sides by @ematipico in https://github.com/biomejs/biome/pull/8383
* fix(parse/html/vue): emit diagnostics for invalid vue shorthand syntaxes by @dyc3 in https://github.com/biomejs/biome/pull/8242
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8384
* chore(deps): update rust crate libc to 0.2.178 by @renovate[bot] in https://github.com/biomejs/biome/pull/8385
* fix(noUnknownTypeSelectors): allow root when under ViewTransitions pseudo elements by @fireairforce in https://github.com/biomejs/biome/pull/8382
* fix(deps): update @biomejs packages by @renovate[bot] in https://github.com/biomejs/biome/pull/8386
* fix(deps): update dependency prettier to v3.7.4 by @renovate[bot] in https://github.com/biomejs/biome/pull/8387
* fix(core): document services by @ematipico in https://github.com/biomejs/biome/pull/8394
* ci: attest build provenance for CLI binaries by @siketyan in https://github.com/biomejs/biome/pull/8379
* chore(deps): update rust crate tower-lsp-server to 0.23.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/8392
* fix(parser): allow async as class member name by @fireairforce in https://github.com/biomejs/biome/pull/8404
* fix(noUnknownProperty): don't flag anything in `@plugin` by @dyc3 in https://github.com/biomejs/biome/pull/8403
* fix(grit): correct JSX element slot indices for GritQL patterns by @rriski in https://github.com/biomejs/biome/pull/8411
* chore: speed up build of dev profile by @ematipico in https://github.com/biomejs/biome/pull/8432
* feat(lint): update docs & diagnostic for `lint/nursery/noProto` by @Bertie690 in https://github.com/biomejs/biome/pull/8414
* fix: improve rustdoc for IndentStyle by @GameRoMan in https://github.com/biomejs/biome/pull/8425
* fix(lint): remove `useExhaustiveDependencies` spurious errors on dependency-first custom hooks; improve docs by @Bertie690 in https://github.com/biomejs/biome/pull/8401
* fix: fix typo in changeset by @Bertie690 in https://github.com/biomejs/biome/pull/8438
* fix(linter): prevent useConsistentCurlyBraces from suggesting invalid JSX text conversion by @tt-a1i in https://github.com/biomejs/biome/pull/8439
* fix(config): inherit enabled state from global config in overrides by @ruidosujeira in https://github.com/biomejs/biome/pull/8436
* fix(linter): allow `() => undefined` in noUselessUndefined by @tt-a1i in https://github.com/biomejs/biome/pull/8441
* fix(noUnknownMediaFeatureName): fix typo in prefers-reduced-transparency by @tt-a1i in https://github.com/biomejs/biome/pull/8444
* fix(useGenericFontNames): handle CSS variable as last font-family value by @tt-a1i in https://github.com/biomejs/biome/pull/8443
* fix(cli): skip deleted files in --changed and --staged by @tt-a1i in https://github.com/biomejs/biome/pull/8445
* fix(lint): update default value of `ignoreRestSiblings` for `noUnusedVariables` by @Bertie690 in https://github.com/biomejs/biome/pull/8398
* fix(lint): correct multiline autofix in useConsistentArrowReturn by @hornta in https://github.com/biomejs/biome/pull/8183
* chore: tweak changeset by @dyc3 in https://github.com/biomejs/biome/pull/8452
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8455
* chore(deps): update dependency @types/node to v24.10.3 by @renovate[bot] in https://github.com/biomejs/biome/pull/8458
* chore(deps): update rust:1.91.1-bookworm docker digest to c1e5f19 by @renovate[bot] in https://github.com/biomejs/biome/pull/8456
* chore(deps): update rust:1.91.1-bullseye docker digest to f02c249 by @renovate[bot] in https://github.com/biomejs/biome/pull/8457
* chore(deps): update rust crate camino to 1.2.2 by @renovate[bot] in https://github.com/biomejs/biome/pull/8460
* fix(deps): update @biomejs packages by @renovate[bot] in https://github.com/biomejs/biome/pull/8461
* fix(semantic): track scope for TS construct signature type parameters by @ruidosujeira in https://github.com/biomejs/biome/pull/8459
* fix(parse/css): skip tailwind syntax in `@import` by @dyc3 in https://github.com/biomejs/biome/pull/8433
* ci: fix wasm artifact names for release workflow by @dyc3 in https://github.com/biomejs/biome/pull/8468
* ci: fix wasm artifacts again by @dyc3 in https://github.com/biomejs/biome/pull/8470
* ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/8469
## New Contributors
* @ho991217 made their first contribution in https://github.com/biomejs/biome/pull/8260
* @tylersayshi made their first contribution in https://github.com/biomejs/biome/pull/8281
* @mlafeldt made their first contribution in https://github.com/biomejs/biome/pull/8302
* @Yonom made their first contribution in https://github.com/biomejs/biome/pull/8297
* @AsherDe made their first contribution in https://github.com/biomejs/biome/pull/7513
* @JacquesLeupin made their first contribution in https://github.com/biomejs/biome/pull/8365
* @GameRoMan made their first contribution in https://github.com/biomejs/biome/pull/8425
* @tt-a1i made their first contribution in https://github.com/biomejs/biome/pull/8439
* @hornta made their first contribution in https://github.com/biomejs/biome/pull/8183
**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]