All versions since 2.4.7
2.4.7
Patch Changes
-
#9318
3ac98ebThanks @ematipico! - Added new nursery lint ruleuseBaselinefor CSS. The rule reports when CSS properties, property values, at-rules, media conditions, functions, or pseudo-selectors are not part of the configured Baseline tier.For example, at the time of writing, the rule will trigger for the use of
accent-colorbecause it has limited availability:a {accent-color: bar;} -
#9272
2de8362Thanks @terror! - Added the nursery ruleuseImportsFirstthat enforces all import statements appear before any non-import statements in a module. Inspired by the eslint-plugin-importimport/firstrule.// Invalidimport { foo } from "foo";const bar = 1;import { baz } from "baz"; // ← flagged// Validimport { foo } from "foo";import { baz } from "baz";const bar = 1; -
#9285
93ea495Thanks @dyc3! - FixednoUndeclaredVariablesfrom erroneously flagging props only used in the template section in Vue SFCs -
#9435
6c5a8f2Thanks @siketyan! - Fixed #9432: Values referenced as a JSX element in Astro/Vue/Svelte templates are now correctly detected;noUnusedImportsanduseImportTyperules no longer reports these values as false positives. -
#9362
fc9ca4cThanks @Netail! - Extra rule source references.biome migrate eslintshould do a bit better detecting rules in your eslint configurations. -
#9392
b881feaThanks @g-ortuno! - Fixed biomejs/biome-vscode#959: LSP now correctly resolves project directory whenconfigurationPathpoints to a configuration file outside the workspace. -
#9420
a1c46afThanks @ematipico! - Fixed #9385:noUselessEscapeInStringno longer incorrectly flags valid CSS hex escapes (e.g.\e7bb) as useless. The rule now recognizes all hex digits (0-9,a-f,A-F) as valid escape characters in CSS strings. -
#9416
f2581b8Thanks @ematipico! - Fixed #9131, #9112, #9166: the formatter no longer crashes or produces corrupt output when a JS file withexperimentalEmbeddedSnippetsEnabledcontains non-embedded template literals alongside embedded ones (e.g.console.log(\test`)next tographql(`…`)`). -
#9344
cb4d7d7Thanks @ematipico! - Fixed #6921:noShadowno longer incorrectly flags destructured variable bindings in sibling scopes as shadowing. Object destructuring, array destructuring, nested patterns, and rest elements are now properly recognized as declarations. -
#9360
bc5dd99Thanks @ematipico! - Fixed #7125: The rulenoShadowno longer incorrectly flags parameters in TypeScript constructor and method overload signatures. -
#9371
29cac17Thanks @ematipico! - Fixed #5279: Tabs in diagnostic diff output are now rendered at a consistent width across context and changed lines, fixing visual misalignment when source files use tab indentation. -
#9043
61e2a02Thanks @dyc3! - Fixed #8897: Biome now parses@utilitynames containing/when Tailwind directives are enabled. -
#9354
930c858Thanks @denbezrukov! - Improved CSS parser recovery for invalidunicode-rangevalues that mix wildcard ranges with range intervals. For example, Biome now reports clearer diagnostics for invalid syntax like:unicode-range: U+11???-2??;unicode-range: U+11???-;with diagnostics such as:
× Wildcard ranges cannot be combined with a range interval.> unicode-range: U+11???-2??;^× Expected a codepoint but instead found ';'.> unicode-range: U+11???-;^ -
#9355
78e74a2Thanks @SchahinRohani! - Fixed #9349: Biome now correctly handles Vue dynamic:altandv-bind:altbindings inuseAltText, preventing false positives in.vuefiles. -
#9369
b309ddeThanks @costajohnt! - Fixed #9210:useAnchorContentno longer reports an accessibility error for AstroImagecomponents inside links when they provide non-emptyalttext. -
#9345
70c2d4eThanks @ematipico! - Fixed #7214:useOptionalChainnow detects optional chain patterns that don’t start at the beginning of a logical AND expression. For example,bar && foo && foo.lengthis now correctly flagged and fixed tobar && foo?.length. -
#9311
78c4e9bThanks @ruidosujeira! - Fixed #9245: theuseSemanticElementsrule no longer suggests<output>forrole="status"androle="alert". The<output>element is only arelatedConceptof these roles, not a direct semantic equivalent. These roles are now excluded from suggestions, aligning with the intended behavior of the upstreamprefer-tag-over-rolerule. -
#9363
b2ffb4aThanks @ematipico! - Fixed #5212:useSemanticElementsno longer reports a diagnostic when a semantic element already has its corresponding role attribute (e.g.<nav role="navigation">,<footer role="contentinfo">). These cases are now correctly left tonoRedundantRoles. -
#9364
1bb9edcThanks @xvchris! - Fixed #9357. Improved the information emitted by some diagnostics. -
#9434
bf12092Thanks @siketyan! - Fixed #9433:noBlankTargetnow correctly handles dynamic href attributes, such as<a href={company?.website} target="_blank">. -
#9351
5046d2bThanks @Netail! - Expanded thenoNegationElserule to cover the inequality & strict inequality operator. -
#9353
2a29e0dThanks @Conaclos! - Fixed #7583:organizeImportsnow sorts named specifiers inside bare exports and merges bare exports.export { b, a };export { c };export { a, b, c };Also,
organizeImportsnow correctly adds a blank line between an import chunk and an export chunk.import { A } from "package";export { A }; -
#8658
bdcc934Thanks @rksvc! - When thedomainsfield is set in the configuration file, domains is now automatically enabled when Biome detects certain dependencies inpackage.json. -
#9383
f5c8bf0Thanks @ematipico! - Fixed #6606: The type inference engine now resolvesRecord<K, V>types, synthesizing them as object types with index signatures. This improves accuracy for type-aware lint rules such asnoFloatingPromises,noMisusedPromises,useAwaitThenable, anduseArraySortComparewhen operating on Record-typed values. -
#9359
701ddd3Thanks @ematipico! - Fixed #7516:noUnusedImportsno longer reports a false positive when a local variable shadows an imported type namespace that is still used in a type annotation. -
#9473
50e93bdThanks @ematipico! - Improved the detection of variables inside Astro files. Now the rulenoUnusedVariablesand others will trigger fewer false positives. -
#9459
171b2eeThanks @ematipico! - Fixed #9314. Now Biome doesn’t panic whenuseAriaPropsForRoleis configured using an object. -
#9465
c8918d6Thanks @Netail! - Fixed #9464: Temporal is now correctly detected as a global. -
#9367
722f0daThanks @Netail! - Added the nursery rulenoTopLevelLiterals. It requires the root-level value to be an array or object.Invalid:
"just a string" -
#9333
a294b89Thanks @terror! - Fixed #9310. Now the HTML formatter doesn’t mangle elements that are followed by self-closing elements such as<br>or<img>. -
#9391
4bffb66Thanks @ematipico! - Slightly increased the performance of the CLI in projects that have more than ~2K files. -
#9365
776cb64Thanks @Netail! - Added the nursery rulenoEmptyObjectKeys, which disallows the use of empty keys in JSON objects.Invalid:
{"": "value"}
2.4.8 Latest
Patch Changes
-
#9488
bc709f6Thanks @mvanhorn! - Fixed #9463: the “Biome found a configuration file outside of the current working directory” diagnostic now includes the configuration file path and the working directory, giving users actionable information to debug the issue. -
#9527
2f8bf80Thanks @mdm317! - Fixed #8959: Fixed TypeScript arrow function formatting when a comment appears after=>. -
#9525
e7b3b10Thanks @ViniciusDev26! - Added the rulenoDrizzleUpdateWithoutWhereto prevent accidental full-table updates when using Drizzle ORM without a.where()clause. -
#9531
1302740Thanks @ematipico! - Fixed #9187: Astro frontmatter containing regex literals with quotes (/'/,/"/) or dashes (/---/) no longer causes parse errors. -
#9535
b630d93Thanks @leno23! - Fixed #9524: remove extra space before>whenbracketSameLineis true and the self-closing slash is absent in HTML formatter. -
#9537
81e6306Thanks @ematipico! - Fixed #9238: The HTML parser no longer incorrectly reports---inside element content (e.g.<td>---</td>) as an “Unexpected value or character” error. -
#9532
4b64145Thanks @ematipico! - Fixed #9117:biome check --writeno longer falsely reports Svelte and Vue files as changed whenhtml.formatter.indentScriptAndStyleis enabled and the files are already correctly formatted. -
#9528
61451efThanks @ematipico! - Fixed #9341: Fixed an LSP crash that could corrupt file content when saving with format-on-save enabled. -
#9538
794f79cThanks @ematipico! - Fixed #9279: The rulenoSubstrnow detects.substr()and.substring()calls in all expression contexts, including variable declarations, function arguments, return statements, and arrow function bodies. -
#9462
c23272cThanks @ematipico! - Fixed #9370: The resolver now correctly prioritizes more specificexportspatterns over less specific ones. Previously, a pattern like"./*"could match before"./features/*", causing resolution failures for packages with overlapping subpath patterns. -
#9515
f85c069Thanks @shivamtiwari3! - Fixed #9506 and #9479: Biome no longer reports false parse errors on<script type="speculationrules">and<script type="application/ld+json">tags. These script types contain non-JavaScript content and are now correctly skipped by the embedded language detector. -
#9514
7fe43c8Thanks @ematipico! - Fixed #6964: Biome now correctly resolves the.gitignorefile relative tovcs.rootwhen configured. Previously, thevcs.rootsetting was ignored and Biome always looked for the ignore file in the workspace directory. -
#9521
af39936Thanks @ematipico! - Fixed #9483. Now the rulenoRedeclaredoesn’t panic when it encounters constructor overloads. -
#9490
60cf024Thanks @willfarrell! - Added support for modern CSS properties, pseudo-classes, and pseudo-elements.New known properties:
dynamic-range-limit,overlay,reading-flow,reading-order,scroll-marker-group,scroll-target-group.New pseudo-elements:
::checkmark,::column,::picker,::picker-icon,::scroll-button,::scroll-marker,::scroll-marker-group.New pseudo-classes:
:active-view-transition-type,:has-slotted,:target-after,:target-before,:target-current. -
#9526
4d42823Thanks @ematipico! - Fixed #9358 and #9375. Now attributes that have text expressions such asclass={buttonClass()}are correctly tracked in Svelte files. -
#9520
61f53eeThanks @ematipico! - Fixed #9519. NownoUnusedVariablesdoesn’t flag variables that are used astypeoftype. -
#9487
331dc0dThanks @mvanhorn! - Fixed #9477:source.fixAll.biomeno longer sorts imports whensource.organizeImports.biomeis disabled in editor settings. The organize imports action is now excluded from the fix-all pass unless explicitly requested. -
#9525
e7b3b10Thanks @ViniciusDev26! - Added the rulenoDrizzleDeleteWithoutWhereto prevent accidental full-table deletes when using Drizzle ORM without a.where()clause.
Copyright (c) 2023-present Biome Developers and Contributors.