Biome
Fast formatter and linter for JavaScript, TypeScript and web languages
Biome's weekly patches keep widening past JavaScript, with Tailwind the deepest thread.
◆Recent moves
- 2d ago
Tailwind parser deepens; five nursery rules land
The same shape as the four patches before it: five nursery rules (useNamedLayer, useTailwindShorthandClasses, noUnsafeTypeAssertion, useControlLabel, useAstroClientOnlyDirectiveValue), CSS parser recovery at declaration boundaries, and a long run of HTML formatter whitespace fixes. The thread worth following is the Tailwind parser, which picks up container-query variants, modifiers on bare utilities, combinator selectors in arbitrary variants and the legacy important marker in one release. A Windows ARM64 access violation is also fixed.
View source ↗ - 8d ago
React Compiler rule lands; HTML style attributes lint as CSS
The documented changes are incremental — useReactCompiler pipes React Compiler diagnostics through Biome, HTML style attributes now lint as CSS, noImportCycles gets faster. The undocumented half of this release is more interesting: a markdown linter, its rule generator, a two-phase markdown parser, and useTopLevelHeading all landed here without a changelog entry.
View source ↗ - 15d ago
Tailwind arbitrary values and noExtendNative join the rule set
Tailwind arbitrary values like w-[400px] become reportable, including inside JSX class attributes and tagged templates, and noExtendNative joins the nursery. useNullishCoalescing keeps accumulating opt-outs, a sign the rule is being tuned against real codebases rather than expanded.
View source ↗ - 22d ago
noMisusedPromises performance regression fixed
A performance regression in noMisusedPromises that re-ran type inference per file is fixed, along with CSS comment formatting and a curried-arrow parser bug. Type-aware rules are where Biome's cost lives, and this is the second release in a row tuning them.
View source ↗ - 29d ago
Bigint switch cases fixed; partial-type diagnostics suppressed
useExhaustiveSwitchCases learns to compare bigint literals by value across every spelling, and noBaseToString and useNullishCoalescing now suppress rather than guess when type inference cannot complete. Choosing silence over partial-information diagnostics is the right trade for a linter people run in CI.
View source ↗ - 1mo ago
Accessibility fixes; noCommentText autofix no longer hangs
Accessibility and framework fixes — noLabelWithoutControl now reads interpolated text in Astro, Svelte, and Vue as valid content — plus a fix for check --write --unsafe hanging forever on the noCommentText fix. A hang in a write-mode fix is the kind of bug that stops teams adopting autofix at all.
View source ↗