ShopperCove
Menu
All writingBlogTopicsCategoriesAboutRSS
Blog
Categories
Observability & SRE62All categories
About

Plate 51

  1. Blog

Biome 2.5.15: type-inference speedups, nursery rules, HTML formatter (30 Sep 2026)

Biome published @biomejs/biome@2.5.15 on 30 September 2026: type-inference and HTML formatter performance, plus nursery rules for React defaults, Svelte runes, logical CSS, and more. ShopperCove upgrade checklist only; no affiliate.

Aditya Challa·5 October 2026·4 min read

Summary
On this page
  1. Why 2.5.15 now
  2. What 2.5.15 highlights (release notes)
  3. Performance
  4. New nursery rules (examples)
  5. Notable fixes / behavior
  6. Hands-on upgrade checklist
  7. Bottom line
  8. Sources
  9. Related

Biome 2.5.15: type-inference speedups, nursery rules, HTML formatter (30 Sep 2026)

No affiliate links. This is a frontend toolchain note from public Biome docs and the GitHub release. ShopperCove has not migrated a production monorepo to 2.5.15 for this article.

Why 2.5.15 now

Biome’s npm latest is @biomejs/biome@2.5.15, published 30 Sep 2026 (registry time 2026-09-30T15:23:18.673Z; GitHub release 2026-09-30T15:23:21Z). Cont11 already covered pnpm 12.9.1; this slot is the freshest Biome patch among Biome / Bun / Prettier signals as of 5 Oct 2026 sources—not a Bun 1.4.2 or Prettier 3.9 rehash.

Baseline for the 2.5 line remains the Biome v2.5 blog (5 Jun 2026): 500+ lint rules, plugin includes + plugin code fixes, delimiterSpacing, CLI --watch, linter.rules.preset, go-to-definition, and related LSP/CLI work. 2.5.15 is the patch you pin after that line when you want the late-September inference and formatter wins.

What 2.5.15 highlights (release notes)

From the GitHub release for @biomejs/biome@2.5.15:

Performance

  • Type inference — significant speedups; release notes cite roughly ~2–240× on benchmarks for heavy libraries such as Zod, Valibot, Arktype, Effect, Kysely, and Drizzle (affects typed rules).
  • HTML formatter — up to ~4× faster.
  • Indexing / analysis of big files — up to ~2× (most visible with project and types lint rules).

New nursery rules (examples)

RuleIntent (from release notes)
noReactObjectTypeAsDefaultPropDisallow array/object/function default props in React components
noSvelteExportLetPrefer $props() over legacy export let
useSvelteKitRuneImportsPrefer $app/state over deprecated $app/stores
useLogicalPropertiesPrefer CSS logical properties; direction option ltr (default) or rtl
noMeaninglessVoidOperatorFlag unnecessary void (allows discarded calls, thenables, void 0, never)
useStrictBooleanExpressionsReport ambiguous truthiness such as if (value) on `numberundefined`
noAstroConflictingSetDirectivesFlag conflicting set:html / set:text / children
noTailwindRawColorsDiscourage raw palette classes like bg-pink-500 in favor of design tokens
noSelfImportForbid a module importing itself
usePromiseRejectErrorsRequire Error objects as Promise rejection reasons
noMisplacedListElementsRequire <li> under <ul> / <ol> / <menu> when parent is an HTML element

Nursery rules are opt-in until you promote them. Do not treat nursery as “recommended” by default.

Notable fixes / behavior

  • Astro multiline expressions indent correctly under biome check --write; Astro expressions also format via biome format.
  • Configuration file errors are retained and checked before commands (no silent ignore).
  • Unix daemon socket restricted to the running user (0600 under a biome-daemon cache directory).
  • Tailwind class detection in Svelte / Vue / Astro class attribute expressions without a merge helper.
  • Domain disable no longer turns off rules that also belong to another enabled domain.
  • HTML parser mismatch reporting and several Svelte comment/indent fixes.

ShopperCove is not attaching CVE IDs to this note.

Hands-on upgrade checklist

  1. Inventory: npx @biomejs/biome --version (or your package-manager pin) and whether CI uses npm/pnpm/yarn/bun.
  2. Confirm registry: npm view @biomejs/biome version → expect 2.5.15 as of 5 Oct 2026 sources.
  3. Pin exact: follow Getting started — install with -E / --save-exact (npm i -D -E @biomejs/biome@2.5.15).
  4. Migrate if needed: if you still use deprecated linter.rules.recommended, run biome migrate --write toward linter.rules.preset (v2.5 blog).
  5. Staging bump: upgrade on a branch; run biome check (and format) before enabling new nursery rules.
  6. Typed-rule projects: re-time CI after 2.5.15 if you lean on project/types rules—the release’s main claim is inference cost.
  7. HTML / Astro / Svelte / Vue stacks: re-run format+lint once; expect Astro expression and Svelte comment indent diffs.
  8. Do not invent urgency: this is a docs/release checklist, not a security advisory.

ShopperCove did not change production Biome versions for this article. Prefer biomejs.dev and the GitHub release over third-party roundups.

Bottom line

Biome 2.5.15 (30 Sep 2026) is worth the pin if you care about type-inference cost, HTML format speed, and late nursery coverage for React / Svelte / Astro / CSS logical properties. Start from the v2.5 feature baseline, then land on 2.5.15. No affiliate.

Sources

  • https://github.com/biomejs/biome/releases/tag/%40biomejs%2Fbiome%402.5.15
  • https://biomejs.dev/blog/biome-v2-5/
  • https://biomejs.dev/guides/getting-started/
  • https://www.npmjs.com/package/@biomejs/biome
  • https://registry.npmjs.org/@biomejs/biome/2.5.15
  • https://biomejs.dev/

Related

  • https://www.shoppercove.com/blog/vite-plus-1-0-unified-toolchain-october-2026
  • https://www.shoppercove.com/blog/eslint-10-12-release-october-2026
  • https://www.shoppercove.com/blog/oxlint-1-87-react-suggestions-a11y-fixes-october-2026
  • https://www.shoppercove.com/blog/typescript-eslint-8-71-no-unsafe-enum-assignment-october-2026
  • https://www.shoppercove.com/blog/astro-starlight-0-42-popover-js-dist-october-2026
  • https://www.shoppercove.com/blog/playwright-1-63-test-locks-october-2026
  • https://www.shoppercove.com/blog/webpack-5-111-esm-output-stable-september-2026
  • https://www.shoppercove.com/blog/nodejs-26-lts-october-2026-schedule-change
biomelintingformattertypescriptjavascriptweb developmentastrosvelte

Lab evidence

What I found running this

Sources read 5 Oct 2026 (Asia/Calcutta): npm registry @biomejs/biome latest=2.5.15 (time 2026-09-30T15:23:18.673Z); GitHub release @biomejs/biome@2.5.15 published 2026-09-30T15:23:21Z — type inference performance up to ~2–240x on Zod/Valibot/Arktype/Effect/Kysely/Drizzle benchmarks; HTML formatter up to 4x; indexing/analysis of big files up to 2x; nursery rules noReactObjectTypeAsDefaultProp, noSvelteExportLet, useLogicalProperties (direction ltr|rtl), useSvelteKitRuneImports, noMeaninglessVoidOperator, useStrictBooleanExpressions, noAstroConflictingSetDirectives, noTailwindRawColors, noSelfImport, usePromiseRejectErrors, noMisplacedListElements; Astro multiline expression indent + format via biome format; config errors retained before commands; Unix daemon socket mode 0600 under biome-daemon cache dir; Tailwind detection in Svelte/Vue/Astro class expressions. Baseline context: Biome v2.5 blog (5 Jun 2026) — 500+ rules, plugin path includes + code fixes, delimiterSpacing, --watch, linter.rules.preset. Getting started pin with -E. Checklist only; no ShopperCove monorepo migrated; no affiliate.

Notes when a lab post goes up

Occasional email for new hands-on reviews. No sequence and no sponsors.

Related links

  • Plate 78

    oxlint 1.87.0: React suggestion fixes + jsx-a11y hardening (5 Oct 2026)

    oxlint published v1.87.0 on 5 October 2026: suggestion support for three React/unicorn rules and jsx-a11y/label/mouse/lang hardening plus other fixes. npm latest 1.87.0 confirmed; ShopperCove docs checklist only; no affiliate.

    5 Oct 2026

  • Plate 80

    Astro Starlight 0.42: Popover mobile menu + JS distribution (2 Sep 2026)

    Astro’s documentation theme Starlight published 0.42.0 on 2 September 2026 with a Popover API mobile menu that works when JavaScript fails, a move from shipping TypeScript source to compiled JavaScript + declaration files, removal of the unused tagline option, and a bump to Astro 7.2.10+. npm latest as of 5 Oct 2026 is 0.42.5 (Macedonian locale, 1 Oct). ShopperCove docs upgrade checklist only; no affiliate.

    5 Oct 2026

  • Plate 93

    typescript-eslint 8.71.0: no-unsafe-enum-assignment + rule fixes (28 Sep 2026)

    typescript-eslint published v8.71.0 on 28 September 2026: new typed rule @typescript-eslint/no-unsafe-enum-assignment (flags plain numbers/unsafe values assigned into enum-typed locations) plus fixes for no-misused-promises, no-unnecessary-type-assertion, unbound-method, and switch-exhaustiveness-check. npm latest confirmed 8.71.0; ShopperCove docs checklist only; pairs with live ESLint 10.12 coverage; no affiliate.

    5 Oct 2026

On this page

  1. Why 2.5.15 now
  2. What 2.5.15 highlights (release notes)
  3. Performance
  4. New nursery rules (examples)
  5. Notable fixes / behavior
  6. Hands-on upgrade checklist
  7. Bottom line
  8. Sources
  9. Related
All writingBlogCategoriesTopicsAboutPrivacyRSS

© 2026 ShopperCove