Skip to content

NerdlystTech · Markets · Code

Biome 2.6.3: 33 New Nursery Rules, Including 2 Sort Checks

Lines of code glowing on a dark monitor, representing Biome 2.6.3 linting
Photo by Chris Ried on Unsplash

Biome 2.6.3 shipped on 24 October 2026 with 33 new nursery (experimental) lint rules and a batch of formatter fixes. Two of the new rules go after a classic JavaScript trap: sorting an array in the wrong way, or for the wrong reason.

Key takeaways

  • Biome 2.6.3 is a patch release, but it adds 33 nursery rules covering JavaScript, TypeScript, CSS and Vue.
  • noArraySortForMinMax flags sorting just to read the smallest or largest value.
  • noBooleanSortComparator flags sort comparators that return a boolean instead of a number.
  • Formatter fixes keep parentheses in tricky TypeScript instantiation expressions.
  • Nursery rules are experimental, so expect changes before they go stable.

What is new in Biome 2.6.3?

Biome is a toolchain that lints and formats web code. The 2.6.3 release notes list 33 new nursery rules, which is the group Biome uses for rules still being tuned. The previous big milestone, Biome v2.5 on 5 June 2026, pushed the toolchain past 500 lint rules and promoted 73 nursery rules to stable.

So this release is a steady stream of new checks rather than a headline feature. That is the point of a nursery: ideas land fast, and the useful ones graduate.

Why do the two sort rules matter?

Both rules, added by contributor dyc3, target code that looks fine and quietly misbehaves.

noArraySortForMinMax (#12275) catches code like array.toSorted((a, b) => a - b)[0]. You sort the whole array, an O(n log n) job, just to read one value. Math.min(...array) or Math.max(...array) says what you mean.

noBooleanSortComparator (#12432) catches array.sort((a, b) => a > b). A comparator must return a number, and a boolean is not one in the way sort needs.

MDN spells out why. A negative value means a comes first, a positive value means a comes after b, and zero or NaN means equal. A comparator that returns only 1 and 0 breaks anti-symmetry, so it “will not be able to sort reliably,” and MDN notes engines disagree on the result: V8 and JavaScriptCore return the array unsorted in its example, while SpiderMonkey sorts it ascending.

That is the nasty part. The bug can pass your tests in one browser and fail in another.

What else is in the 33 new rules?

The list is broad. Here is a sample, grouped by what they check.

AreaRuleWhat it flags
JS/TSnoPathConcatJoining strings to __dirname or import.meta to build paths
JS/TSuseMathTruncBitwise tricks like | 0 and ~~
JS/TSnoUselessSplicesplice calls with simpler forms, such as shift()
JS/TSuseIteratorZipIndex loops that could use Iterator.zip()
React QuerynoTanstackQueryRestDestructuringRest destructuring on query results (new tanstackQuery domain)
VuenoVueWatchAfterAwaitWatchers created after an await in setup()
CSSnoZeroLengthUnitUnits on zero lengths

Vue gets seven new rules in all, and Playwright, Svelte and React Native each get one. A new Vue semantic model (#12260) now also feeds HTML rules.

Which bugs did Biome 2.6.3 fix?

  • Formatter: parentheses are now kept around instantiation expressions in several positions (#12496, #12536, #12540, #12598). Before, type arguments could attach to the wrong operand.
  • Markdown: the blank line between a paragraph and a list survives (#12526).
  • CSS: useSortedProperties no longer produces invalid CSS when the last property has no semicolon (#12418).
  • CLI: exclusions in files.includes no longer reach directories above the project root (#12599).
  • CLI output: the default reporter prints its summary to stderr instead of stdout (#12593).

The last item is worth a look if you parse Biome’s output in scripts. Anything that read the summary from stdout will need to read stderr now. That is my reading of the change, so test your pipeline.

How do you try the new rules?

Update the @biomejs/biome package to 2.6.3, then switch on individual rules under linter.rules.nursery in biome.json. Turning on the whole nursery group is possible too, but it is noisy. Pick the rules you care about, run biome lint, and read what it finds. Check the current Biome configuration docs for exact syntax, as options such as preset arrived in v2.5.

One caveat: noShortTimeValues does nothing until you set a minimum. Opinion: for a patch release, I would trial the two sort rules first. They find real bugs, not style preferences.

What happens next

Nursery rules usually get tuned from user feedback, then move to stable groups in a later minor release, as happened with 73 rules in v2.5. Expect some of these 33 to change names, defaults or severity before then. Watch the Biome releases page for which ones graduate.

If you run Biome through its JavaScript API, see our note on Biome JS API 6.1.0 and the span fix. For another recent tooling fix, read uv 0.13.3 and the uv export slowdown.

FAQ

Is Biome 2.6.3 a breaking release?

It is a patch release, and the new rules are in the nursery, so they are off unless you enable them. The stderr change for the default reporter can affect scripts that read stdout.

Why is a boolean sort comparator a bug?

Sort needs a negative, zero or positive number to order two items. A boolean gives only two outcomes, so the comparator is inconsistent and engines can return different orders.

What does nursery mean in Biome?

Nursery is the group for new, experimental rules. They may change or have rough edges until they are promoted to a stable group.

Next step: update to 2.6.3, enable noBooleanSortComparator and noArraySortForMinMax, and run a lint pass on your codebase.

Leave a comment

Leave a Reply