Alterações
Version 2.3.12 Latest
Patch Changes
-
#8653
047576dThanks @dyc3! - Added new nursery rulenoDuplicateAttributesto forbid duplicate attributes in HTML elements. -
#8648
96d09f4Thanks @BaeSeokJae! - Added a new nursery rulenoVueOptionsApi.Biome now reports Vue Options API usage, which is incompatible with Vue 3.6’s Vapor Mode. This rule detects Options API patterns in
<script>blocks,defineComponent(), andcreateApp()calls, helping prepare codebases for Vapor Mode adoption.For example, the following now triggers this rule:
<script>export default {data() {return { count: 0 };},};</script> -
#8832
b08270bThanks @Exudev! - Fixed #8809, #7985, and #8136: thenoSecretsrule no longer reports false positives on common CamelCase identifiers likepaddingBottom,backgroundColor,unhandledRejection,uncaughtException, andIngestGatewayLogGroup.The entropy calculation algorithm now uses “average run length” to distinguish between legitimate CamelCase patterns (which have longer runs of same-case letters) and suspicious alternating case patterns (which have short runs).
-
#8793
c19fb0eThanks @TheBaconWizard! - Properly handleparametersmetavariables forarrow_functionGritQL queries. The followingbiome searchcommand no longer throws an error:Terminal window biome search 'arrow_function(parameters=$parameters, body=$body)' -
#8561
981affbThanks @wataryooou! - FixednoUnusedVariablesto ignore type parameters declared in ambient contexts such asdeclare moduleblocks. -
#8817
652cfbbThanks @dyc3! - Fixed #8765: The HTML parser can now parse directive modifiers with a single colon, e.g.@keydown.:. -
#8704
a1914d4Thanks @Netail! - Added the nursery rulenoRootType. Disallow the usage of specified root types. (e.g.mutationand/orsubscription)Invalid:
{"options": {"disallow": ["mutation"]}}type Mutation {SetMessage(message: String): String} -
#8712
251b47bThanks @Netail! - Renamed the following GraphQL nursery rules to match the Biome standard:useUniqueArgumentNames->noDuplicateArgumentNamesuseUniqueFieldDefinitionNames->noDuplicateFieldDefinitionNamesuseUniqueGraphqlOperationName->noDuplicateGraphqlOperationNameuseUniqueInputFieldNames->noDuplicateInputFieldNamesuseUniqueVariableNames->noDuplicateVariableNames
Run the
biome migrate --writecommand to automatically update the configuration file. -
#7602
957cd8eThanks @kedevked! - Added the nursery lint ruleuseErrorCause.This rule enforces that errors caught in a
catchclause are not rethrown without wrapping them in a newErrorobject and specifying the original error as thecause. This helps preserve the error’s stack trace and context for better debugging.It can be configured with the following option:
requireCatchParameter: (default:true)- When
true, the rule requires thatcatchclauses have a parameter. If athrowstatement appears inside acatchclause without a parameter, it will be flagged.
- When
Invalid examples:
try {foo();} catch {throw new Error("fail");}try {foo();} catch (err) {throw new Error(err.message);}Valid examples:
try {foo();} catch (err) {throw new Error("fail", { cause: err });}try {foo();} catch (error) {throw new Error("Something went wrong", { cause: error });}Valid example when
requireCatchParameterisfalse:Valid:
try {foo();} catch {throw new Error("fail");} -
#8725
95aba98Thanks @dyc3! - Fixed #8715: The CSS parser will now recover slightly better if a semicolon is missing from Tailwind’s@applyat-rule. -
#8616
4ee3bdaThanks @Netail! - Added the nursery ruleuseLoneAnonymousOperation. Disallow anonymous operations when more than one operation specified in document.Invalid:
query {fieldA}query B {fieldB} -
#8624
291c9f2Thanks @taga3s! - Added the nursery ruleuseInlineScriptIdto the Next.js domain. This rule enforcesidattribute onnext/scriptcomponents with inline content ordangerouslySetInnerHTML.The following code is invalid:
import Script from "next/script";export default function Page() {return (<Script>{`console.log('Hello');`}</Script> // must have `id` attribute);} -
#8767
0d15370Thanks @mdevils! - Fixed #3512:useExhaustiveDependenciesnow properly handles nested destructuring patterns from hook results.const [[x, y], setXY] = useState([1, 2]);useEffect(() => {console.log(x, y);}, [x, y]); // x and y are now correctly recognized as unstable -
#8757
17ed9d3Thanks @Netail! - Added the nursery rulenoDivRegex. Disallow equal signs explicitly at the beginning of regular expressions.Invalid:
var f = function () {return /=foo/;}; -
#8836
aab1d17Thanks @dyc3! - Fixed #7858: Biome now parses Astro files with empty frontmatter blocks. -
#8755
3a15c29Thanks @arturalkaim! - Fixed #6670. The$filenamemetavariable can now be used in GritQLwhereclauses to filter matches by filename. -
#8821
63e68a1Thanks @playhardgopro! - Fixed several bugs in Vue conditional rules (useVueValidVIf,useVueValidVElse, anduseVueValidVElseIf) related to whitespace handling, newlines, and self-closing tags. -
#8767
0d15370Thanks @mdevils! - Fixed #3685:useExhaustiveDependenciesnow properly handles transparent expression wrappers like non-null assertions and type assertions in dependency comparisons.useMemo(() => Boolean(myObj!.x), [myObj!.x]); // No longer reports incorrect diagnosticsuseMemo(() => myObj!.x?.y === true, [myObj!.x?.y]); // Now correctly matches dependencies -
#8597
f764007Thanks @Netail! - Added the nursery rulenoDuplicateEnumValueNames. Enforce unique enum value names.Invalid:
enum A {TESTTesT} -
#8679
33dfd7cThanks @ematipico! - Fixed #8678. Now Biome correctly parses components inside Vue, Svelte and Astro files when they have the same name of self-closing elements. -
#8617
31a9bfeThanks @Netail! - Added the nursery ruleuseLoneExecutableDefinition. Require queries, mutations, subscriptions or fragments to be located in separate files.Invalid:
query Foo {id}fragment Bar on Baz {id} -
#8697
8519669Thanks @Faizanq! - Added the nursery lint rulenoExcessiveLinesPerFileto CSS and GraphQL. -
#8711
365f7aaThanks @Netail! - Added new nursery rulenoDuplicateEnumValues, which disallows defining an enum with multiple members initialized to the same value. -
#8767
0d15370Thanks @mdevils! - Fixed #5914:useExhaustiveDependenciesnow properly handles variables declared in the same statement.const varA = Math.random(),varB = useMemo(() => varA, [varA]); // varA is now correctly recognized as needed -
#8767
0d15370Thanks @mdevils! - Fixed #8427:useExhaustiveDependenciesnow properly resolves variable references to detect captured dependencies.const fe = fetchEntity;useEffect(() => {fe(id);}, [id, fe]); // fe is now correctly detected as needed -
#8767
0d15370Thanks @mdevils! - Fixed #8484:useExhaustiveDependenciesnow properly handles member access on stable hook results.const stableObj = useStable();useMemo(() => {return stableObj.stableValue; // stableObj.stableValue is now correctly recognized as stable}, []); -
#8767
0d15370Thanks @mdevils! - Fixed #7982:useExhaustiveDependenciesnow properly handles callback expressions with type assertions.const callback = useCallback((() => {return count * 2;}) as Function,[count], // count is now correctly detected); -
#8766
39eb545Thanks @Netail! - Fixed #8761: Reverted wrapping the URL of rule descriptions with<>, causing broken URLs in VSCode. -
#8767
0d15370Thanks @mdevils! - Fixed #3080:useExhaustiveDependenciesnow properly analyzes captures within referenced functions passed to hooks.function myEffect() {console.log(foo, bar);}useEffect(myEffect, [foo, bar]); // foo and bar are now correctly detected -
#8740
4962ed0Thanks @Netail! - Extra rule source references.biome migrate eslintshould do a bit better detecting rules in your eslint configurations. -
#8776
395746fThanks @codiini! - Fixed #6003:noUselessUndefinedInitializationno longer reports exported variables initialized toundefined. In Svelte 4, this pattern is used to declare optional component props. -
#8767
0d15370Thanks @mdevils! - Fixed #4248:useExhaustiveDependenciesnow correctly handles function props passed as callbacks.const data = React.useMemo(getData, [getData]); // getData is now correctly recognized as needed -
#8819
bc191ffThanks @Netail! - Fixed #6567:noUnknownPropertynow ignores unknown properties in at-rules which support descriptors. -
#8787
adb652fThanks @tuyuritio! - Fixed #8777: Add support for:active-view-transitionpseudo-class. -
#8639
6577e32Thanks @ohnoah! - Added the nursery lint rulenoExcessiveLinesPerFile. Biome now reports files that exceed a configurable line limit.// maxLines: 2const a = 1;const b = 2;const c = 3; -
#8753
71b5c6eThanks @Netail! - Added the nursery rulenoExcessiveClassesPerFile. Enforce a maximum number of classes per file.Invalid:
class Foo {}class Bar {} -
#8754
d6b2bdaThanks @Netail! - Added the nursery rulenoFloatingClasses. Disallownewoperators outside of assignments or comparisons.Invalid:
new Date();
Copyright (c) 2023-present Biome Developers and Contributors.