Impact Score: 5/10
Biome CLI v2.2.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: Added the `useQwikMethodUsage` lint rule for the Qwik domain.
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)
- Added the `useQwikValidLexicalScope` rule to the Qwik domain.
- Added the rule `useDeprecatedDate`, which makes a deprecation date required for the graphql `@deprecated` directive.
- chore: add .zed to gitignore
- docs: add Polish translation of Biome README
- feat(qwik): add useQwikMethodUsage & useQwikValidLexicalScope
- feat(biome_graphql_analyze): implement `useDeprecatedDate`
๐ง Bug Fixes & Patches (6)
- Added the `useQwikMethodUsage` lint rule for the Qwik domain.
- Fixed #6981: The NoUnknownPseudoClass rule no longer reports local pseudo-classes when CSS Modules are used.
- Fixed #7638: `useImportExtensions` no longer emits diagnostics on valid import paths that end with a query or hash.
- Fixed #7704: The `useExhaustiveDependencies` rule now correctly adds an object dependency when its method is called within the closure.
- Fixed #7595: `noUselessEscapeInString` no longer reports `$\{` escape in template literals.
- Fixed #7619: Added support for parsing the CSS `:state()` pseudo-class.
๐ View Raw Release Notes (Original Developer Log)
## 2.2.6
### Patch Changes
- [#7071](https://github.com/biomejs/biome/pull/7071) [`a8e7301`](https://github.com/biomejs/biome/commit/a8e73018a8c9e34a182624a91389e19d1fa7817f) Thanks [@ptkagori](https://github.com/ptkagori)! - Added the [`useQwikMethodUsage`](https://biomejs.dev/linter/rules/use-qwik-method-usage) lint rule for the Qwik domain.
This rule validates Qwik hook usage. Identifiers matching `useXxx` must be called only within serialisable reactive contexts (for example, inside `component$`, route loaders/actions, or within other Qwik hooks), preventing common Qwik antipatterns.
**Invalid:**
```js
// Top-level hook call is invalid.
const state = useStore({ count: 0 });
function helper() {
// Calling a hook in a non-reactive function is invalid.
const loc = useLocation();
}
```
**Valid:**
```js
component$(() => {
const state = useStore({ count: 0 }); // OK inside component$.
return <div>{state.count}</div>;
});
const handler = $(() => {
const loc = useLocation(); // OK inside a $-wrapped closure.
console.log(loc.params);
});
```
- [#7685](https://github.com/biomejs/biome/pull/7685) [`52071f5`](https://github.com/biomejs/biome/commit/52071f54bc1a3c5d1d2ee6039c5feead836638ed) Thanks [@denbezrukov](https://github.com/denbezrukov)! - Fixed [#6981](https://github.com/biomejs/biome/issues/6981): The [NoUnknownPseudoClass](https://biomejs.dev/linter/rules/no-unknown-pseudo-class/) rule no longer reports local pseudo-classes when CSS Modules are used.
- [#7640](https://github.com/biomejs/biome/pull/7640) [`899f7b2`](https://github.com/biomejs/biome/commit/899f7b28ec9cc457d02565d69212e7c29b5b5aff) Thanks [@arendjr](https://github.com/arendjr)! - Fixed [#7638](https://github.com/biomejs/biome/issues/7638): [`useImportExtensions`](https://biomejs.dev/linter/rules/use-import-extensions/) no longer emits diagnostics on valid import paths that end with a query or hash.
#### Example
```js
// This no longer warns if `index.css` exists:
import style from "../theme/index.css?inline";
```
- [#7071](https://github.com/biomejs/biome/pull/7071) [`a8e7301`](https://github.com/biomejs/biome/commit/a8e73018a8c9e34a182624a91389e19d1fa7817f) Thanks [@ptkagori](https://github.com/ptkagori)! - Added the [`useQwikValidLexicalScope`](https://biomejs.dev/linter/rules/use-qwik-valid-lexical-scope) rule to the Qwik domain.
This rule helps you avoid common bugs in Qwik components by checking that your variables and functions are declared in the correct place.
**Invalid:**
```js
// Invalid: state defined outside the component's lexical scope.
let state = useStore({ count: 0 });
const Component = component$(() => {
return (
<button onClick$={() => state.count++}>Invalid: {state.count}</button>
);
});
```
**Valid:**
```js
// Valid: state initialised within the component's lexical scope and captured by the event.
const Component = component$(() => {
const state = useStore({ count: 0 });
return <button onClick$={() => state.count++}>Valid: {state.count}</button>;
});
```
- [#7620](https://github.com/biomejs/biome/pull/7620) [`5beb1ee`](https://github.com/biomejs/biome/commit/5beb1eefe134f4dc713cfb28bfa1cbae38319975) Thanks [@Netail](https://github.com/Netail)! - Added the rule [`useDeprecatedDate`](https://biomejs.dev/linter/rules/use-deprecated-date/), which makes a deprecation date required for the graphql `@deprecated` directive.
##### Invalid
```graphql
query {
member @deprecated(reason: "Use `members` instead") {
id
}
}
```
##### Valid
```graphql
query {
member
@deprecated(reason: "Use `members` instead", deletionDate: "2099-12-25") {
id
}
}
```
- [#7709](https://github.com/biomejs/biome/pull/7709) [`d6da4d5`](https://github.com/biomejs/biome/commit/d6da4d5a272d61420997e26aef80f53298515665) Thanks [@siketyan](https://github.com/siketyan)! - Fixed [#7704](https://github.com/biomejs/biome/issues/7704): The [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) rule now correctly adds an object dependency when its method is called within the closure.
For example:
```js
function Component(props) {
useEffect(() => {
props.foo();
}, []);
}
```
will now be fixed to:
```js
function Component(props) {
useEffect(() => {
props.foo();
}, [props]);
}
```
- [#7624](https://github.com/biomejs/biome/pull/7624) [`309ae41`](https://github.com/biomejs/biome/commit/309ae41c1a29e50d71300d3e63f6c64ee6ecb968) Thanks [@lucasweng](https://github.com/lucasweng)! - Fixed [#7595](https://github.com/biomejs/biome/issues/7595): [`noUselessEscapeInString`](https://biomejs.dev/linter/rules/no-useless-escape-in-string/) no longer reports `$\{` escape in template literals.
- [#7665](https://github.com/biomejs/biome/pull/7665) [`29e4229`](https://github.com/biomejs/biome/commit/29e422939f25595dca4f19735a27258d97545288) Thanks [@ryan-m-walker](https://github.com/ryan-m-walker)! - Fixed [#7619](https://github.com/biomejs/biome/issues/7619): Added support for parsing the CSS `:state()` pseudo-class.
```css
custom-selector:state(checked) {
}
```
- [#7608](https://github.com/biomejs/biome/pull/7608) [`41df59b`](https://github.com/biomejs/biome/commit/41df59bfc6d49190b9c35fa262def3ecfcc6abd2) Thanks [@ritoban23](https://github.com/ritoban23)! - Fixed [#7604](https://github.com/biomejs/biome/issues/7604): the `useMaxParams` rule now highlights parameter lists instead of entire function bodies. This provides more precise error highlighting. Previously, the entire function was highlighted; now only the parameter list is highlighted, such as `(a, b, c, d, e, f, g, h)`.
- [#7643](https://github.com/biomejs/biome/pull/7643) [`459a6ac`](https://github.com/biomejs/biome/commit/459a6aca67290e8b974802bd693738f79883d67e) Thanks [@daivinhtran](https://github.com/daivinhtran)! - Fixed [#7580](https://github.com/biomejs/biome/issues/7580): Include plugin in summary report
## What's Changed
* chore: add .zed to gitignore by @daivinhtran in https://github.com/biomejs/biome/pull/7634
* fix(lint/noUselessEscapeInString): avoid false positive for $\{ escape in template literals by @lucasweng in https://github.com/biomejs/biome/pull/7624
* fix(lint): only highlight function names in useMaxParams rule by @ritoban23 in https://github.com/biomejs/biome/pull/7608
* docs: add Polish translation of Biome README by @SzymCode in https://github.com/biomejs/biome/pull/7630
* fix(linter): `useImportExtensions` handles queries and hashes by @arendjr in https://github.com/biomejs/biome/pull/7640
* ci: breakdown benchmarks by @ematipico in https://github.com/biomejs/biome/pull/7641
* chore: upgrade to rust 1.90.0 by @ematipico in https://github.com/biomejs/biome/pull/7642
* fix(css_parser): add support for parsing :state() (#7619) by @ryan-m-walker in https://github.com/biomejs/biome/pull/7665
* fix(cli): include plugin rule in summary report by @daivinhtran in https://github.com/biomejs/biome/pull/7643
* feat(qwik): add useQwikMethodUsage & useQwikValidLexicalScope by @ptkagori in https://github.com/biomejs/biome/pull/7071
* fix: replace domains polyfill.io to Cloudflare by @You-saku in https://github.com/biomejs/biome/pull/7678
* feat(biome_graphql_analyze): implement `useDeprecatedDate` by @Netail in https://github.com/biomejs/biome/pull/7620
* chore(deps): update dependency @types/node to v22.18.8 by @renovate[bot] in https://github.com/biomejs/biome/pull/7686
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/7687
* chore(deps): update rust crate regex to 1.11.3 by @renovate[bot] in https://github.com/biomejs/biome/pull/7689
* chore(deps): update rust crate quote to 1.0.41 by @renovate[bot] in https://github.com/biomejs/biome/pull/7688
* chore(deps): update dependency eslint to v9.37.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/7691
* chore(deps): update rust crate serde to 1.0.228 by @renovate[bot] in https://github.com/biomejs/biome/pull/7690
* fix(css_analyze): handle CSS Modules pseudo-class 'local' in NoUnknownPseudoClass rule (#6981) by @denbezrukov in https://github.com/biomejs/biome/pull/7685
* chore(deps): update pnpm to v10.18.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/7693
* chore(deps): update taiki-e/install-action action to v2.62.21 by @renovate[bot] in https://github.com/biomejs/biome/pull/7692
* chore(deps): update rust crate camino to 1.2.1 by @renovate[bot] in https://github.com/biomejs/biome/pull/7694
* fix(deps): update rust crates by @renovate[bot] in https://github.com/biomejs/biome/pull/7562
* fix(lint/useExhaustiveDependencies): correct fix for method calls by @siketyan in https://github.com/biomejs/biome/pull/7709
* chore(deps): update dependency @types/node to v22.18.10 by @renovate[bot] in https://github.com/biomejs/biome/pull/7738
* chore(deps): update rust crate libc to 0.2.177 by @renovate[bot] in https://github.com/biomejs/biome/pull/7740
* chore(deps): update rust crate ureq to 3.1.2 - autoclosed by @renovate[bot] in https://github.com/biomejs/biome/pull/7741
* ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/7637
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/7736
## New Contributors
* @ritoban23 made their first contribution in https://github.com/biomejs/biome/pull/7608
* @SzymCode made their first contribution in https://github.com/biomejs/biome/pull/7630
* @You-saku made their first contribution in https://github.com/biomejs/biome/pull/7678
**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]