Biome @biomejs/[email protected]stable Released Nov 27, 2025
Impact Score: 5/10

Biome CLI v2.3.8

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.

Compatibility not verified β€” check source notes
$ npm install --save-dev --save-exact @biomejs/[email protected]
πŸ“„ .MD
⚑ Executive Summary (TL;DR)

Biome @biomejs/[email protected]. Source highlight: Fixed #7390, where Biome couldn't apply the correct configuration passed via `--config-path`.

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.

πŸ”§ Bug Fixes & Patches (5)

  • Fixed #7390, where Biome couldn't apply the correct configuration passed via `--config-path`.
  • Added the new rule `noLeakedRender`. This rule helps prevent potential leaks when rendering components that use binary expressions or ternaries.
  • Added the nursery rule `noDuplicatedSpreadProps`. Disallow JSX prop spreading the same identifier multiple times.
  • Fixed a bug where logs were discarded (the kind from `--log-level=info` etc.). This is a regression introduced after an internal refactor that wasn't adequately tested.
  • Fixed #8222: The HTML parser, with Vue directives enabled, can now parse `v-slot` shorthand syntax, e.g. `
πŸ“„ View Raw Release Notes (Original Developer Log)
## 2.3.8 ### Patch Changes - [#8188](https://github.com/biomejs/biome/pull/8188) [`4ca088c`](https://github.com/biomejs/biome/commit/4ca088c7648f37724dad07ae4e6f805e7a51ac79) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#7390](https://github.com/biomejs/biome/issues/7390), where Biome couldn't apply the correct configuration passed via `--config-path`. If you have multiple **root** configuration files, running any command with `--config-path` will now apply the chosen configuration file. - [#8171](https://github.com/biomejs/biome/pull/8171) [`79adaea`](https://github.com/biomejs/biome/commit/79adaea7d5bc382bd0a4cdcc34e59a8cb3fb6a55) Thanks [@dibashthapa](https://github.com/dibashthapa)! - Added the new rule [`noLeakedRender`](https://biomejs.dev/linter/rules/no-leaked-render). This rule helps prevent potential leaks when rendering components that use binary expressions or ternaries. For example, the following code triggers the rule because the component would render `0`: ```jsx const Component = () => { const count = 0; return <div>{count && <span>Count: {count}</span>}</div>; }; ``` - [#8116](https://github.com/biomejs/biome/pull/8116) [`b537918`](https://github.com/biomejs/biome/commit/b53791835ea98edf8fe4b4288240bd38abb19f2f) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noDuplicatedSpreadProps`](https://biomejs.dev/linter/rules/no-duplicated-spread-props/). Disallow JSX prop spreading the same identifier multiple times. **Invalid:** ```jsx <div {...props} something="else" {...props} /> ``` - [#8256](https://github.com/biomejs/biome/pull/8256) [`f1e4696`](https://github.com/biomejs/biome/commit/f1e4696bf8f018fc23656cd7b96fda32ca46677a) Thanks [@cormacrelf](https://github.com/cormacrelf)! - Fixed a bug where logs were discarded (the kind from `--log-level=info` etc.). This is a regression introduced after an internal refactor that wasn't adequately tested. - [#8226](https://github.com/biomejs/biome/pull/8226) [`3f19b52`](https://github.com/biomejs/biome/commit/3f19b520c65f4fc53e61ca7cef341deadec5f518) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#8222](https://github.com/biomejs/biome/issues/8222): The HTML parser, with Vue directives enabled, can now parse `v-slot` shorthand syntax, e.g. `<template #foo>`. - [#8007](https://github.com/biomejs/biome/pull/8007) [`182ecdc`](https://github.com/biomejs/biome/commit/182ecdc2736a54073fe79b4d3e1eaf793b73afa6) Thanks [@brandonmcconnell](https://github.com/brandonmcconnell)! - Added support for dollar-sign-prefixed filenames in the [`useFilenamingConvention`](https://biomejs.dev/linter/rules/use-filenaming-convention/) rule. Biome now allows filenames starting with the dollar-sign (e.g. `$postId.tsx`) by default to support naming conventions used by frameworks such as [TanStack Start](https://tanstack.com/start/latest/docs/framework/react/guide/routing#file-based-routing) for file-based-routing. - [#8218](https://github.com/biomejs/biome/pull/8218) [`91484d1`](https://github.com/biomejs/biome/commit/91484d1d53096a554f288c81105f71c7ea8df945) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Added the [`noMultiStr`](https://biomejs.dev/linter/rules/no-multi-str) rule, which disallows creating multiline strings by escaping newlines. **Invalid:** ```js const foo = "Line 1\n\ Line 2"; ``` **Valid:** ```js const foo = "Line 1\nLine 2"; const bar = `Line 1 Line 2`; ``` - [#8225](https://github.com/biomejs/biome/pull/8225) [`98ca2ae`](https://github.com/biomejs/biome/commit/98ca2ae9f3b9b25a14d63b243223583aba6e4907) Thanks [@ongyuxing](https://github.com/ongyuxing)! - Fixed [#7806](https://github.com/biomejs/biome/issues/7806): Prefer breaking after the assignment operator for conditional types with generic parameters to match Prettier. ```diff -type True = unknown extends Type< - "many", - "generic", - "parameters", - "one", - "two", - "three" -> - ? true - : false; +type True = + unknown extends Type<"many", "generic", "parameters", "one", "two", "three"> + ? true + : false; ``` - [#6765](https://github.com/biomejs/biome/pull/6765) [`23f7855`](https://github.com/biomejs/biome/commit/23f78551167e5415da17b5cca8eb2a34e64e0aac) Thanks [@emilyinure](https://github.com/emilyinure)! - Fixed [#6569](https://github.com/biomejs/biome/issues/6569): Allow files to export from themselves with `noImportCycles`. This means the following is now allowed: ```js // example.js export function example() { return 1; } // Re-exports all named exports from the current module under a single namespace // and then imports the namespace from the current module. // Allows for encapsulating functions/variables into a namespace instead // of using a static class. export * as Example from "./example.js"; import { Example } from "./example.js"; ``` - [#8214](https://github.com/biomejs/biome/pull/8214) [`68c052e`](https://github.com/biomejs/biome/commit/68c052efa29892470d4590bffefb20448685f2d9) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Added the [`noEqualsToNull`](https://biomejs.dev/linter/rules/no-equals-to-null) rule, which enforces the use of `===` and `!==` for comparison with `null` instead of `==` or `!=`. **Invalid:** ```js foo == null; foo != null; ``` **Valid:** ```js foo === null; foo !== null; ``` - [#8219](https://github.com/biomejs/biome/pull/8219) [`793bb9a`](https://github.com/biomejs/biome/commit/793bb9adf179117f6cd7796140f1da2098a4eab5) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#8190](https://github.com/biomejs/biome/issues/8190): The HTML parser will now parse Vue event handlers that contain `:` correctly, e.g. `@update:modelValue="onUpdate"`. - [#8259](https://github.com/biomejs/biome/pull/8259) [`4a9139b`](https://github.com/biomejs/biome/commit/4a9139bbe393d7f8acc226281c7a92d0cc5887ee) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Fixed [#8254](https://github.com/biomejs/biome/issues/8254): The `noParameterAssign` rule with `propertyAssignment: "deny"` was incorrectly reporting an error when a function parameter was used on the right-hand side of an assignment to a local variable's property. The rule should only flag assignments that modify the parameter binding or its properties (L-value), not the use of its value. **Valid:** ```js (input) => { const local = { property: 0 }; local.property = input; }; ``` - [#8201](https://github.com/biomejs/biome/pull/8201) [`cd2edd7`](https://github.com/biomejs/biome/commit/cd2edd75d9532171c599073fc91de5a15578e84d) Thanks [@Netail](https://github.com/Netail)! - Added the nursery rule [`noTernary`](https://biomejs.dev/linter/rules/no-ternary/). Disallow ternary operators. **Invalid:** ```js const foo = isBar ? baz : qux; ``` - [#8172](https://github.com/biomejs/biome/pull/8172) [`de98933`](https://github.com/biomejs/biome/commit/de98933f77091358e70d23e51aa5a2a084953722) Thanks [@JeremyMoeglich](https://github.com/JeremyMoeglich)! - Fixed [#8145](https://github.com/biomejs/biome/issues/8145): handling of large hex literals, which previously caused both false positives and false negatives. This affects [`noPrecisionLoss`](https://biomejs.dev/linter/rules/no-precision-loss/) and [`noConstantMathMinMaxClamp`](https://biomejs.dev/linter/rules/no-constant-math-min-max-clamp/). - [#8210](https://github.com/biomejs/biome/pull/8210) [`7b44e9e`](https://github.com/biomejs/biome/commit/7b44e9eec8200fdde096ebdfac493b2e48fd707e) Thanks [@Netail](https://github.com/Netail)! - Corrected rule source reference. `biome migrate eslint` should do a bit better detecting rules in your eslint configurations. - [#8213](https://github.com/biomejs/biome/pull/8213) [`e430555`](https://github.com/biomejs/biome/commit/e43055515212a81fc3ef0477fb0ce505555ad0af) Thanks [@ruidosujeira](https://github.com/ruidosujeira)! - Fixed #8209: Recognized formatting capability when either range or on-type formatting is supported, not only full-file formatting. This ensures editors and the language server correctly detect formatting support in files like JSONC. - [#8202](https://github.com/biomejs/biome/pull/8202) [`6f49d95`](https://github.com/biomejs/biome/commit/6f49d95f3f3330c12012064a0c6facc306f9f8bf) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Fixed [#8079](https://github.com/biomejs/biome/issues/8079): Properly handle `name` and `value` metavariables for `JsxAttribute` GritQL queries. The following `biome search` command no longer throws an error: ``` biome search 'JsxAttribute($name, $value) as $attr where { $name <: "style" }' ``` - [#8276](https://github.com/biomejs/biome/pull/8276) [`f7e836f`](https://github.com/biomejs/biome/commit/f7e836fa2b5859c712bb891dc7fbb2fcf28e19a3) Thanks [@hirokiokada77](https://github.com/hirokiokada77)! - Added the [`noProto`](https://biomejs.dev/linter/rules/no-proto/) rule, which disallows the use of the `__proto__` property for getting or setting the prototype of an object. **Invalid**: ```js obj.__proto__ = a; const b = obj.__proto__; ``` **Valid**: ```js const a = Object.getPrototypeOf(obj); Object.setPrototypeOf(obj, b); ``` ## What's Changed * fix(noImportCycles): prevent flagging on single file import cycling by @emilyinure in https://github.com/biomejs/biome/pull/6765 * chore: fix changeset by @ematipico in https://github.com/biomejs/biome/pull/8191 * ci: breakdown wasm CI build by @ematipico in https://github.com/biomejs/biome/pull/8187 * chore: disable docstrings in coderabbit by @Netail in https://github.com/biomejs/biome/pull/8203 * feat(js_analyze): implement noTernary by @Netail in https://github.com/biomejs/biome/pull/8201 * docs: missing references by @Netail in https://github.com/biomejs/biome/pull/8207 * fix(biome_grit_patterns): properly handle name and value metavariables for JsxAttribute GritQL queries by @hirokiokada77 in https://github.com/biomejs/biome/pull/8202 * feat(lint): added new rule `no-leaked-render` from eslint-react by @dibashthapa in https://github.com/biomejs/biome/pull/8171 * fix(noPrecisionLoss): correctly handle large hex literals by @JeremyMoeglich in https://github.com/biomejs/biome/pull/8172 * docs: qwik no-react-props rule reference by @Netail in https://github.com/biomejs/biome/pull/8210 * docs(noSecrets): properly document `entropyThreshold` option by @dyc3 in https://github.com/biomejs/biome/pull/8211 * feat(use_filenaming_convention): add support for `$` prefix by @brandonmcconnell in https://github.com/biomejs/biome/pull/8007 * feat(biome_js_analyze): implement `noEqualsToNull` rule by @hirokiokada77 in https://github.com/biomejs/biome/pull/8214 * fix: recognize format_range and format_on_type as Format capabilities… by @ruidosujeira in https://github.com/biomejs/biome/pull/8213 * feat(biome_js_analyze): implement `noMultiStr` rule by @hirokiokada77 in https://github.com/biomejs/biome/pull/8218 * feat(js_biome_analyze): implement noDuplicatedSpreadProps by @Netail in https://github.com/biomejs/biome/pull/8116 * chore: improve the wording of the no_descending_specificity rule by @ashnewmanjones in https://github.com/biomejs/biome/pull/8220 * fix(cli): make config-path absolute by @ematipico in https://github.com/biomejs/biome/pull/8188 * docs: clarify doc comments for ISO validation functions by @hirokiokada77 in https://github.com/biomejs/biome/pull/8227 * chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/8230 * chore(deps): update rust crate indexmap to 2.12.1 by @renovate[bot] in https://github.com/biomejs/biome/pull/8236 * chore(deps): update rust:1.91.1-bullseye docker digest to 4886b15 by @renovate[bot] in https://github.com/biomejs/biome/pull/8235 * chore(deps): update rust:1.91.1-bookworm docker digest to 8fed34f by @renovate[bot] in https://github.com/biomejs/biome/pull/8231 * chore(deps): update github-actions (major) by @renovate[bot] in https://github.com/biomejs/biome/pull/8238 * fix(parse/html/vue): fix lexing of event handlers with `:` in them by @dyc3 in https://github.com/biomejs/biome/pull/8219 * feat(parse/html/vue): parse v-slot shorthand syntax by @dyc3 in https://github.com/biomejs/biome/pull/8226 * ci: fix regression in benchmark workflows by @ematipico in https://github.com/biomejs/biome/pull/8244 * fix(formatter): align conditional type formatting with Prettier by @ongyuxing in https://github.com/biomejs/biome/pull/8225 * fix(cli): revert some of PR #7531 to re-enable logging by @cormacrelf in https://github.com/biomejs/biome/pull/8256 * fix(noParameterAssign): prevent false positive when parameter is used as R-value by @hirokiokada77 in https://github.com/biomejs/biome/pull/8259 * ci: restore WASM build in release by @ematipico in https://github.com/biomejs/biome/pull/8264 * chore: add flags to regex literals by @arendjr in https://github.com/biomejs/biome/pull/8279 * feat(biome_js_analyze): implement `noProto` rule by @hirokiokada77 in https://github.com/biomejs/biome/pull/8276 * chore(test infra): record parsing errors for analyze crates by @dyc3 in https://github.com/biomejs/biome/pull/8268 * ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/8263 * chore: refactor global type system to accommodate further extensions by @tidefield in https://github.com/biomejs/biome/pull/8253 ## New Contributors * @JeremyMoeglich made their first contribution in https://github.com/biomejs/biome/pull/8172 * @brandonmcconnell made their first contribution in https://github.com/biomejs/biome/pull/8007 * @ruidosujeira made their first contribution in https://github.com/biomejs/biome/pull/8213 * @ongyuxing made their first contribution in https://github.com/biomejs/biome/pull/8225 * @cormacrelf made their first contribution in https://github.com/biomejs/biome/pull/8256 **Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/[email protected]...@biomejs/[email protected]