← Back to all sparks
B

Biome

INFRA · APIS
Velocity5.0

Fast formatter and linter for JavaScript, TypeScript and web languages

Biome's patch train is really a type-aware linting project in disguise

type-aware-lintingfalse-positivessveltecss-formatterpatch-cadence
Current state
Biome is shipping weekly 2.5.x patches with no minor release in the window, and the fixes cluster tightly. One cluster is type-aware lint rules — noMisusedPromises, noBaseToString, useNullishCoalescing, useExhaustiveSwitchCases — where the work is about what to do when type inference is incomplete or expensive. The other is framework coverage: Svelte store subscriptions and bindable props, Astro and Vue text interpolation, CSS Modules parser recovery.
Where it's heading
Biome is buying credibility in the two areas that decide whether a project can drop typescript-eslint: rules that need type information, and correct handling of single-file-component frameworks. The recurring pattern of suppressing diagnostics rather than reporting from partial type information is a deliberate stance — Biome would rather miss a finding than emit a false positive, which is the right trade for a tool asking to be adopted as the default.
Prediction
Expect the type-aware rule set to keep expanding with the same suppress-on-incomplete-inference policy, and Svelte-specific nursery rules to graduate as their false-positive reports dry up.

Recent moves

  1. 6d ago

    Type-inference perf regression fixed in noMisusedPromises

    The headline fix stops type inference from running repeatedly while linting a single file, a regression that directly taxes the type-aware rules Biome is betting on. Alongside it, useHookAtTopLevel stops flagging forwardRef components taking a ref, and the parser handles curried arrows in ternary consequents.

    View source ↗
  2. 13d ago

    Rules go quiet when type inference can't complete

    useExhaustiveSwitchCases learns bigint literals across all spellings, and more importantly noBaseToString and useNullishCoalescing now suppress diagnostics instead of reporting from partial type information. That policy choice is the clearest statement in this window of how Biome wants type-aware rules to behave under uncertainty.

    View source ↗
  3. 19d ago

    Accessibility rules learn Astro, Svelte and Vue interpolation

    noLabelWithoutControl now recognises text interpolation in Astro, Svelte and Vue as valid accessible content, removing a whole class of false positive for component-framework users. A hang in biome check --write --unsafe and an HTML parser speedup round it out.

    View source ↗
  4. 26d ago

    Svelte store and bindable props stop being flagged as unused

    noUnusedVariables learns two Svelte idioms it was misreading — store subscriptions referenced only in templates, and write-only bindable props. Combined with parser recovery for unterminated CSS Modules rules, this is the framework-coverage half of Biome's current work.

    View source ↗
  5. 1mo ago

    useNullishCoalescing gains opt-out options; new Svelte nursery rule

    Two new options let teams silence useNullishCoalescing where falsy coalescing is intentional, and a nursery rule catches unnecessary $state() wrapping of already-reactive Svelte classes. Configurability and Svelte specifics arriving together is the shape of most Biome patches right now.

    View source ↗
  6. 1mo ago

    CSS comment formatting and JSON reporter path escaping

    Housekeeping: comments between import media queries format correctly, the JSON reporters escape backslashes in Windows-style paths, and biome migrate stops emitting a trailing comma on renamed rules. Narrow correctness work with no change to lint behaviour.

    View source ↗