Plate 51
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 Challa4 min read
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)
| Rule | Intent (from release notes) | |
|---|---|---|
noReactObjectTypeAsDefaultProp | Disallow array/object/function default props in React components | |
noSvelteExportLet | Prefer $props() over legacy export let | |
useSvelteKitRuneImports | Prefer $app/state over deprecated $app/stores | |
useLogicalProperties | Prefer CSS logical properties; direction option ltr (default) or rtl | |
noMeaninglessVoidOperator | Flag unnecessary void (allows discarded calls, thenables, void 0, never) | |
useStrictBooleanExpressions | Report ambiguous truthiness such as if (value) on `number | undefined` |
noAstroConflictingSetDirectives | Flag conflicting set:html / set:text / children | |
noTailwindRawColors | Discourage raw palette classes like bg-pink-500 in favor of design tokens | |
noSelfImport | Forbid a module importing itself | |
usePromiseRejectErrors | Require Error objects as Promise rejection reasons | |
noMisplacedListElements | Require <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 viabiome format. - Configuration file errors are retained and checked before commands (no silent ignore).
- Unix daemon socket restricted to the running user (
0600under abiome-daemoncache 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
- Inventory:
npx @biomejs/biome --version(or your package-manager pin) and whether CI uses npm/pnpm/yarn/bun. - Confirm registry:
npm view @biomejs/biome version→ expect 2.5.15 as of 5 Oct 2026 sources. - Pin exact: follow Getting started — install with
-E/--save-exact(npm i -D -E @biomejs/biome@2.5.15). - Migrate if needed: if you still use deprecated
linter.rules.recommended, runbiome migrate --writetowardlinter.rules.preset(v2.5 blog). - Staging bump: upgrade on a branch; run
biome check(and format) before enabling new nursery rules. - 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.
- HTML / Astro / Svelte / Vue stacks: re-run format+lint once; expect Astro expression and Svelte comment indent diffs.
- 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
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.
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