← Back to all sparks
B

Biome

INFRA · APIS
Velocity5.0

Fast formatter and linter for JavaScript, TypeScript and web languages

Biome's weekly patches keep widening past JavaScript, with Tailwind the deepest thread.

lintingformattingtailwindcsshtmltype-aware-rules
Current state
Biome ships a 2.5.x patch roughly weekly, each carrying a handful of nursery rules and a long tail of formatter and parser fixes. The rule set now reaches well past JavaScript — CSS, HTML, Svelte, Vue, Astro and Tailwind all get attention inside a single release. Type-aware rules remain the expensive part, and their performance is tuned in nearly every patch.
Where it's heading
Two expansions run at once: the languages Biome understands, and the depth of its Tailwind class parser, which has gone from flagging arbitrary values to parsing container-query variants, combinator selectors, bare-utility modifiers and the legacy important marker. Nursery is the staging area, and rules are accumulating there faster than they graduate. The HTML formatter is still absorbing whitespace edge cases, which is where a formatter earns the trust to be run on write.
Prediction
The Tailwind parser work is close to supporting a coherent class sorting and linting story rather than isolated rules, and the nursery backlog will need a graduation pass before the next minor.

Recent moves

  1. 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 ↗
  2. 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 ↗
  3. 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 ↗
  4. 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 ↗
  5. 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 ↗
  6. 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 ↗