Changelog

biomejs/biome · · 12 commits

Biome lands Svelte, nullish, and parser fixes

Notable lint, parser, and performance work shipped, including a new Svelte rule, smarter overload handling, and embedded-language fixes.

New Svelte nursery rule flags unnecessary $state() wraps (Moktof3d4c00)

Biome adds noSvelteUnnecessaryStateWrap, catching redundant $state() usage around already-reactive svelte/reactivity classes like SvelteMap. The change also wires the rule into config, migration helpers, and test coverage so it can be enabled and migrated cleanly.

noUnused* now tracks embedded template bindings in Svelte/Vue/Astro (Moktod9b5133)

This fixes false negatives in embedded template regions by treating bindings used only in templates as referenced when html.experimentalFullSupportEnabled is on. It tightens linting across Svelte, Vue, and Astro, especially for unused imports, variables, and type-only imports.

useNullishCoalescing gains ignoreBooleanCoercion (pkallosf458028)

A new option lets || and ||= pass when they’re intentionally used inside Boolean(...) coercions, avoiding noisy suggestions in boolean-check patterns. The rule and schema were updated alongside targeted tests and backend config plumbing.

noFloatingPromises now respects the selected overload (IxxyDev3617094)

Biome fixes a false positive where overloaded functions could be flagged as floating promises even when the chosen overload returned a non-পromise value. This makes the rule more precise for generic and arity-based overload resolution.

Markdown nested list parsing is fixed for space+tab indentation (xsourabhsharma13ee358)

The Markdown parser now correctly treats mixed space/tab-indented sublists as nested items instead of flattening or mis-parsing them. Formatter snapshots were updated accordingly, so nested list rendering should now match author intent.

JSON well-known-file detection for Zed is corrected on macOS/Windows (dinocosta5a2e65b)

Biome now resolves Zed’s global settings path from the platform-correct location, fixing misclassification of settings.json as JSONC in those environments. This makes well-known-file detection behave consistently across operating systems.

CSS nesting accepts trailing & in compound selectors (PranavAchar018f073a7)

The CSS parser was updated to allow a trailing ampersand in nested compound selectors, matching valid nesting syntax that previously errored. The semantic and formatter layers were adjusted too, so the new syntax round-trips correctly.

useValidAutocomplete validation was tightened (ematipicof62fb8b)

Autocomplete attribute validation now catches more invalid cases, improving the rule’s usefulness for accessibility correctness. The accompanying test expectations were refreshed to reflect the stricter checks.

noFloatingPromises overload fix required type-data plumbing (IxxyDev3617094)

The overload-selection fix also touched core type-flattening logic, indicating a deeper change in how Biome derives expression types for analysis. That should reduce related edge-case misreports beyond the covered regression.

noUnusedImports/noUnusedVariables Svelte-Vue-Astro support expanded (Moktod9b5133)

These lint rules now better understand template-only references and embedded snippets, reducing spurious “unused” diagnostics in component files. It’s a meaningful quality-of-life improvement for users working in multi-language single-file components.

Other misc changes

  • Performance work in the CLI crawler/handler path to reuse file-feature data and avoid redundant lookups (ematipico8f9dec8).
  • Core semantic/db refactor to salsa-tracked functions with workspace DB extraction and dependency updates (ematipico53c6efc).
  • CI tweak to reduce Windows disk usage (ematipico03c4767).
  • Minor dead-code/comment cleanup in CLI and formatter code (BangDorid6d55d0).