fix(deps): update all dependencies - #28
renovate[bot] wants to merge 1 commit into
Conversation
3879ef7 to
e7ae5d8
Compare
e5e89f4 to
96d426f
Compare
651f6b4 to
573619b
Compare
4059187 to
e18b80b
Compare
ed8aaaf to
195b515
Compare
0af92ca to
5784ad7
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughUpgrade CI and workspace toolchain: pnpm/action-setup → v6, Node runtime bumped in dependency workflow, workspace packageManager → pnpm@11.1.2, and multiple runtime/dev dependency version bumps across app and template packages. ChangesDependency and Toolchain Upgrade
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🐰 I hopped through package trees tonight, Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
package.json (1)
51-53:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winRemove or update the patch version in
patchedDependenciesto match the installed version.The
patchedDependenciesentry references@typescript-eslint/eslint-plugin@8.57.2, but the installed version is8.59.3(as shown in the lockfile and package.json). This version mismatch prevents the patch from being applied. Since8.59.3was released after the patch was created and the underlying optional chaining fix was already included in an earlier release, the patch is likely obsolete. Either update the key to@typescript-eslint/eslint-plugin@8.59.3if the patch is still needed, or remove it if the issue is already resolved in8.59.3.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` around lines 51 - 53, The patchedDependencies entry for "@typescript-eslint/eslint-plugin@8.57.2" in package.json doesn't match the installed version (8.59.3) so the patch won't apply; open package.json, locate the "patchedDependencies" object and either (a) update the key to "@typescript-eslint/eslint-plugin@8.59.3" if the patch is still required and ensure the corresponding patch file exists, or (b) remove the "@typescript-eslint/eslint-plugin@..." entry entirely if the upstream release already contains the fix (preferred if the optional chaining issue is resolved).
♻️ Duplicate comments (1)
packages/app/package.json (1)
55-86:⚠️ Potential issue | 🟠 MajorSame major version bumps as eslint-template package.
This package includes the same major version bumps flagged in
packages/eslint-template/package.json:
- ts-morph 27 → 28 (line 80)
- eslint-plugin-simple-import-sort 12 → 13 (line 73)
- eslint-plugin-unicorn 63 → 64 (line 76)
Please ensure the verification for those breaking changes applies to this package as well.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/app/package.json` around lines 55 - 86, The same major-version upgrades flagged for the eslint-template package also affect this package: update verification for the dependencies ts-morph, eslint-plugin-simple-import-sort, and eslint-plugin-unicorn in packages/app by running the identical compatibility checks you ran for eslint-template (exercise unit tests, linting, build, and any dedicated migration/compat scripts) and address any API or config changes uncovered; ensure package lock/lockfile is updated and any fixes or code changes required for the ts-morph 27→28, eslint-plugin-simple-import-sort 12→13, and eslint-plugin-unicorn 63→64 upgrades are applied here as well.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 6: The package.json currently pins "packageManager": "pnpm@11.1.2" but
the repo must be migrated to pnpm v11 config changes: run the pnpm v10→v11
codemod to move settings from the "pnpm" field in package.json and any .npmrc
entries into a new pnpm-workspace.yaml (use camelCase keys), replace any
npm_config_* env usages with pnpm_config_*, stop using pnpm link --global (use
pnpm add -g), convert build-related settings (neverBuiltDependencies,
ignoreDepScripts, etc.) into the allowBuilds map, verify Node engine
compatibility (v18–v21 removed, ensure pure ESM readiness), and confirm global
install path expectations (pnpmHomeDir/global/v11/{hash}); update packageManager
value only after these migrations and verify CI/environment variables and
workspace config are correct.
In `@packages/eslint-template/package.json`:
- Line 33: The package.json now pins "eslint-plugin-simple-import-sort" to
^13.0.0 which enforces deterministic ordering when the same module is imported
multiple times with different styles; search the codebase for modules imported
more than once using different styles (namespace imports like import * as X,
default imports like import X, and named imports like import {a}) and
consolidate them into a single consistent import per source (e.g., combine
default and named into one line or convert namespace to named/default as
appropriate) so autofix no longer changes ordering unexpectedly; update any
files referencing the same source in multiple import statements (look for
occurrences of the module names flagged by the linter) to use a single unified
import form.
---
Outside diff comments:
In `@package.json`:
- Around line 51-53: The patchedDependencies entry for
"@typescript-eslint/eslint-plugin@8.57.2" in package.json doesn't match the
installed version (8.59.3) so the patch won't apply; open package.json, locate
the "patchedDependencies" object and either (a) update the key to
"@typescript-eslint/eslint-plugin@8.59.3" if the patch is still required and
ensure the corresponding patch file exists, or (b) remove the
"@typescript-eslint/eslint-plugin@..." entry entirely if the upstream release
already contains the fix (preferred if the optional chaining issue is resolved).
---
Duplicate comments:
In `@packages/app/package.json`:
- Around line 55-86: The same major-version upgrades flagged for the
eslint-template package also affect this package: update verification for the
dependencies ts-morph, eslint-plugin-simple-import-sort, and
eslint-plugin-unicorn in packages/app by running the identical compatibility
checks you ran for eslint-template (exercise unit tests, linting, build, and any
dedicated migration/compat scripts) and address any API or config changes
uncovered; ensure package lock/lockfile is updated and any fixes or code changes
required for the ts-morph 27→28, eslint-plugin-simple-import-sort 12→13, and
eslint-plugin-unicorn 63→64 upgrades are applied here as well.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: db3c2e88-f3f6-4ca6-8964-0ab35e5ab234
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
.github/actions/setup/action.yml.github/workflows/checking-dependencies.ymlpackage.jsonpackages/app/package.jsonpackages/eslint-template/package.json
| "private": true, | ||
| "description": "Monorepo workspace for effect-template", | ||
| "packageManager": "pnpm@10.33.0", | ||
| "packageManager": "pnpm@11.1.2", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What are the breaking changes in pnpm 11 compared to pnpm 10?
💡 Result:
The breaking changes in pnpm 11 compared to pnpm 10, as detailed in the official migration guide and release notes, are primarily around configuration handling, command behaviors, and removed features. Here's a complete list: Configuration changes [1][2][3]: - pnpm no longer reads settings from the pnpm field in package.json; move them to pnpm-workspace.yaml [1][2][3]. - .npmrc now only reads auth and registry settings; all other settings (e.g., hoist-pattern, node-linker, save-exact) must be moved to pnpm-workspace.yaml using camelCase keys [1][2][3]. - npm_config_* environment variables are no longer read; use pnpm_config_* instead [1][2][3]. - pnpm no longer reads npm's global config at $PREFIX/etc/npmrc [3]. - Package manager strictness settings (managePackageManagerVersions, packageManagerStrict, packageManagerStrictVersion) collapsed into pmOnFail: download | ignore | warn | error [1]. - allowNonAppliedPatches renamed to allowUnusedPatches; auditConfig.ignoreCves to auditConfig.ignoreGhsas (requires manual CVE to GHSA conversion) [1][2]. Command and behavior changes [1][2][3]: - pnpm link no longer resolves from global store; use relative/absolute paths (e.g., pnpm link ./foo). Removed --global flag (use pnpm add -g .) and pnpm link with no args [1][3]. - pnpm install -g (no args) unsupported; use pnpm add -g <pkg> [1]. - pnpm server command removed [1][2]. - Script names like clean, setup, deploy, rebuild now shadow built-in commands; use pnpm pm <command> to force built-ins [1]. - Removed npm CLI fallback: commands like access, bugs, docs, edit, home, issues, owner, ping, prefix, profile, pkg, search, set-script, team, token, unstar, whoami, xmas (and aliases) now throw errors; many reimplemented natively [2][3]. - Global installs (pnpm add -g) now use isolated directories in {pnpmHomeDir}/global/v11/{hash}/ to prevent interference [3]. - Globally installed binaries now in bin/ subdirectory of PNPM_HOME [3]. Removed/deprecated features [2][3]: - Deprecated build dependency settings removed: onlyBuiltDependencies, onlyBuiltDependenciesFile, neverBuiltDependencies, ignoredBuiltDependencies, ignoreDepScripts. Use allowBuilds map instead [2][3]. - Removed support for useNodeVersion, Env.nodeVersion, pnpmfile [2]. Other [1][2][3]: - Bumps packageManager in package.json to pnpm v11 version [1]. - Default changes: optimisticRepeatInstall: true, verifyDepsBeforeRun: install, minimumReleaseAge: 1440 (1 day), minimumReleaseAgeStrict: false [2]. - Drops Node.js 18-21 support; now pure ESM; standalone exe requires glibc 2.27+ [3]. A codemod is available to automate many config migrations [4]. pnpm prints a pointer to the migration guide on pnpm self-update from v10 [1].
Citations:
- 1: https://pnpm.io/migration
- 2: https://github.com/pnpm/pnpm/releases/tag/v11.0.0-rc.0
- 3: https://pnpm.io/blog/releases/11.0
- 4: https://app.codemod.com/registry/pnpm-v10-to-v11
Review pnpm 11 migration guide and update configuration accordingly.
pnpm 11 introduces breaking changes requiring configuration updates:
- Settings in the
pnpmfield inpackage.jsonand.npmrcmust migrate topnpm-workspace.yamlwith camelCase keys npm_config_*environment variables replaced withpnpm_config_*pnpm link --globalremoved; usepnpm add -g <pkg>instead- Build dependency settings (
neverBuiltDependencies,ignoreDepScripts, etc.) replaced withallowBuildsmap - Node.js 18-21 support dropped; now pure ESM
- Global installs now use isolated directories at
{pnpmHomeDir}/global/v11/{hash}/
Use the pnpm codemod to automate most config migrations, then verify all settings are correctly moved to pnpm-workspace.yaml.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` at line 6, The package.json currently pins "packageManager":
"pnpm@11.1.2" but the repo must be migrated to pnpm v11 config changes: run the
pnpm v10→v11 codemod to move settings from the "pnpm" field in package.json and
any .npmrc entries into a new pnpm-workspace.yaml (use camelCase keys), replace
any npm_config_* env usages with pnpm_config_*, stop using pnpm link --global
(use pnpm add -g), convert build-related settings (neverBuiltDependencies,
ignoreDepScripts, etc.) into the allowBuilds map, verify Node engine
compatibility (v18–v21 removed, ensure pure ESM readiness), and confirm global
install path expectations (pnpmHomeDir/global/v11/{hash}); update packageManager
value only after these migrations and verify CI/environment variables and
workspace config are correct.
2a1dd99 to
845acb7
Compare
There was a problem hiding this comment.
♻️ Duplicate comments (1)
package.json (1)
6-6:⚠️ Potential issue | 🟠 Major | 🏗️ Heavy liftpnpm v11 bump needs config migration validation before merge.
Line 6 upgrades to
pnpm@11.1.2, but this file still contains legacy pnpm config keys (Lines 42 and 46) that may no longer behave as intended under v11. Please validate and migrate config to the v11-supported shape before releasing.#!/bin/bash set -euo pipefail echo "1) Locate workspace-level pnpm config files" fd -HI '^pnpm-workspace\.yaml$' . fd -HI '^\.npmrc$' . echo echo "2) Find deprecated/legacy pnpm keys and any new allowBuilds usage" rg -n --hidden --glob '!.git' '"(ignoredBuiltDependencies|onlyBuiltDependencies|neverBuiltDependencies|ignoreDepScripts|allowBuilds)"' echo echo "3) Find packageManager pin and pnpm config blocks" rg -n --hidden --glob '!.git' '"packageManager"\s*:|^\s*"pnpm"\s*:' echo echo "4) Check env var usage needing pnpm v11 migration" rg -n --hidden --glob '!.git' '\bnpm_config_[A-Za-z0-9_]+\b|\bpnpm_config_[A-Za-z0-9_]+\b' echo echo "5) Check for removed global-link patterns" rg -n --hidden --glob '!.git' 'pnpm\s+link(\s+--global|\s+-g|\s*$)'🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` at line 6, The packageManager bump to "pnpm@11.1.2" requires validating and migrating legacy pnpm config keys (e.g., ignoredBuiltDependencies, onlyBuiltDependencies, neverBuiltDependencies, ignoreDepScripts, allowBuilds) before merge; inspect and update workspace-level pnpm config (pnpm-workspace.yaml) and project .npmrc entries to the v11-supported shape, replace/deprecate old env var usages (npm_config_*/pnpm_config_*), remove any deprecated global link patterns (pnpm link --global/-g), and ensure the packageManager pin remains correct; run the provided shell checks (search for pnpm-workspace.yaml, .npmrc, the legacy keys, packageManager/pnpm blocks, and env var patterns) and apply migrations so the repo config matches pnpm v11 expectations.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@package.json`:
- Line 6: The packageManager bump to "pnpm@11.1.2" requires validating and
migrating legacy pnpm config keys (e.g., ignoredBuiltDependencies,
onlyBuiltDependencies, neverBuiltDependencies, ignoreDepScripts, allowBuilds)
before merge; inspect and update workspace-level pnpm config
(pnpm-workspace.yaml) and project .npmrc entries to the v11-supported shape,
replace/deprecate old env var usages (npm_config_*/pnpm_config_*), remove any
deprecated global link patterns (pnpm link --global/-g), and ensure the
packageManager pin remains correct; run the provided shell checks (search for
pnpm-workspace.yaml, .npmrc, the legacy keys, packageManager/pnpm blocks, and
env var patterns) and apply migrations so the repo config matches pnpm v11
expectations.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: e766f135-c608-4b3a-b538-99c7494d15cb
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
.github/actions/setup/action.yml.github/workflows/checking-dependencies.ymlpackage.jsonpackages/app/package.jsonpackages/eslint-template/package.json
✅ Files skipped from review due to trivial changes (3)
- .github/workflows/checking-dependencies.yml
- .github/actions/setup/action.yml
- packages/eslint-template/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/app/package.json
980a33b to
bed89b0
Compare
This PR contains the following updates:
^2.4.9→^2.5.15^0.6.0→^1.0.1^2.30.0→^3.0.3^0.75.0→^0.77.2^0.58.0→^0.60.2^0.60.0→^0.61.1^0.96.0→^0.97.2^0.106.0→^4.0.1^0.49.0→^0.51.0^0.49.0→^0.51.0^0.75.0→^0.76.2^0.51.0→^0.52.1^0.40.0→^0.41.0^0.29.0→^4.0.1^0.18.0→^0.19.1^4.7.1→^4.8.12.0.3→2.1.13.3.5→3.3.7^25.5.0→^25.9.9^8.57.2→^8.71.1^8.57.2→^8.71.18.57.2→8.71.18.57.2→8.71.1^4.1.2→^5.0.3^1.6.13→^1.6.27v6→v7v6→v7^2.4.9→^2.5.15^3.21.0→^4.0.1^10.1.0→^10.12.0^3.3.2→^3.7.1^4.4.4→^4.4.5^7.3.2→^7.6.2^12.1.1→^14.0.0^4.0.2→^4.2.2^63.0.0→^77.0.0^17.4.0→^17.13.0^4.0.8→^5.4.024.14.1→24.21.0^11.12.1→^12.2.010.33.0→12.9.1v5→v6^27.0.2→^28.0.0>=4.8.4 <7.0.0→>=4.8.4 <8.0.0^6.0.2→^7.0.2^8.57.2→^8.71.1^8.0.3→^8.3.2^4.1.2→^5.0.3cc @skulidropek
Release Notes
biomejs/biome (@biomejs/biome)
v2.5.15Compare Source
Patch Changes
#10634
b436ba0Thanks @subaru-hello! - Added the new nursery rulenoReactObjectTypeAsDefaultProp, which disallows array, object, and function values as default props in React components.For example, the following snippet triggers the rule.
#11956
faa8b37Thanks @dyc3! - Added the nursery rulenoSvelteExportLet, which disallows declaring Svelte component props with the legacyexport letsyntax. Use the$props()rune instead.#10816
1b9479eThanks @Th3S4mur41! - Added a new nursery ruleuseLogicalPropertiesthat enforces the use of logical properties in CSS, promoting better internationalization and accessibility practices. The rule supports adirectionoption with"ltr"as the default and"rtl"as the alternative.This is a first rule covering parts of #9034
{ "linter": { "rules": { "nursery": { "useLogicalProperties": { "level": "warn", "options": { "direction": "rtl" } } } } } }#11960
1fdb5c2Thanks @dyc3! - Added the nursery ruleuseSvelteKitRuneImports, which reports imports from the deprecated$app/storesmodule and suggests$app/stateinstead.#11723
3b429d1Thanks @m1handr! - Fixed #11656:noAstroSetHtmlDirectivenow correctly reportsset:htmldirectives inside Astro template expressions.#12023
874d5aeThanks @codspeed! - Improved the performance of the HTML formatter up to 4x.#11761
a3462feThanks @saberoueslati! - Fixed #11351:useSimplifiedLogicExpressionno longer reports boolean literals on the right side of||and&&outside boolean contexts, because removing them can change the result of the expression. For example,y = x || falseis no longer reported, whileif (x || false)still is.#11732
ff4c4ddThanks @dyc3! - Added the nursery rulenoMeaninglessVoidOperator, which reports unnecessary uses ofvoid, such asvoid log()whenlogreturnsvoid. The rule allows discarded call results, thenables,void 0, and calls returningnever.#11975
40dd3fbThanks @ematipico! - Fixed the indentation of multiline Astro expressions, in templates and attribute values, when runningbiome check --write. Biome now formats Astro expressions withbiome formattoo, and places them at the column of the surrounding markup.<div> {items.map((item) => ( - <span>{item}</span> -))} + <span>{item}</span> + ))} </div>#12016
09d4000Thanks @codspeed! - Improved the performance of indexing and analysis of big files up to 2x. The improvements are mostly visible in projects that make use of project and types lint rules.#11750
089bde0Thanks @dyc3! - Added the nursery ruleuseStrictBooleanExpressions, which reports ambiguous truthiness checks such asif (value)whenvaluehas typenumber | undefined. Non-nullable strings and numbers and nullable objects are allowed; the rule has no options.#11494
ad5b362Thanks @jp-knj! - Added the nursery rulenoAstroConflictingSetDirectives, which reports Astro elements with multiple content sources, such asset:html,set:text, and child content.For example,
<div set:html={html}>content</div>triggers the rule.#11878
84d1b3bThanks @dyc3! - Fixed #11748:useExhaustiveSwitchCasesnow reports missing cases for values created with the mapping overload ofArray.from, including arrays imported from another module.#11802
7d1f37eThanks @dyc3! - Tailwind classes will now be detected in Svelte, Vue, and Astro class attribute expressions that don't use a class merging function.#11910
9e50ea2Thanks @ematipico! - Fixed #11504, a regression where Biome would silently ignore errors in the configuration file. Now errors are correctly retained and checked before executing any command.#11921
d568632Thanks @hirehamir! - Fixed #10846: when plugins fail to load, Biome now prints each failing plugin's path on its own line, instead of concatenating bare messages likeCannot read file.Cannot read file..#11930
82ea5a6Thanks @dyc3! - Fixed #11927: The HTML formatter no longer duplicates comments around Svelte blocks. This affected a comment after a block such as{#if}or{#each}at the end of an element, and a comment on the same line as the last element inside a block, before{:else},{/if}, or a similar tag.#11931
0cc46d8Thanks @dyc3! - Fixed the indentation of comments at the end of a Svelte block's contents. A comment before{:else},{:then},{/if}, or a similar tag is now indented with the block's contents instead of with the tag.{#if condition} <span>Text</span> -<!-- comment --> + <!-- comment --> {/if}#12031
ef0edd4Thanks @dyc3! - Fixed #12027: Biome's test rules no longer mistake regular method calls namedtest,it, ordescribefor tests. For example,useValidTestTitleused to report the following regular expression check as a test with an invalid title:#11959
8477e61Thanks @dyc3! - Fixed #11950:noUnusedVariablesnow reports arrow functions with expression bodies that only reference themselves, such aslet h = () => h();.#11915
3260602Thanks @ematipico! - Fixed #11841, where suppression comments had no effect on some parts of HTML-ish files and on snippets embedded in JavaScript files.Now the following suppression works as expected:
#11952
b51040eThanks @dyc3! - Fixed #11951: the GritQL formatter no longer inserts a space after awithinpattern without anuntilclause.#11794
429cf95Thanks @dyc3! - Added the nursery rulenoTailwindRawColorsfor JavaScript and HTML. It disallows Tailwind palette colors such asbg-pink-500andtext-white, encouraging design system color utilities such asbg-primary.#11837
f5e249bThanks @dyc3! - Fixed #11836:biome check --writeno longer adds invalid parentheses around Svelte{@const}declarations when experimental HTML support and formatting are enabled.#11978
8be0b9eThanks @dyc3! - Fixed #11817: Biome no longer crashes when its output is piped to a program that exits early, such ashead. Output to the closed pipe is now discarded and Biome exits normally.#11868
3841c26Thanks @ematipico! - Fixed #8986: Biome's language server now scopes all watched-file patterns to each workspace folder, falling back to the deprecatedrootUriwhen no workspace folders are provided. Clients without relative-pattern support receive compatible absolute glob patterns.#11928
0015681Thanks @dyc3! - Restricted access to the Unix daemon socket to the user running Biome. The socket now lives in abiome-daemondirectory inside Biome's cache directory that only this user can access, and the socket itself has mode0600.#11835
589ca1aThanks @dyc3! - UpdateduseReactCompiler: Biome now reports React Compiler diagnostics regardless of the React version declared inpackage.json.#11907
b7d9037Thanks @posido! - Fixed withastro/compiler-rs#194: the HTML parser no longer treats a regex literal that starts with>as the end of a self-closing tag. Astro frontmatter such asconst escaped = s.replace(/>/g, ">");no longer swallows the closing---fence, and the same regex inside a template expression no longer runs past its closing}. A regex literal after a keyword such asreturn, as inreturn />'/.test(s), is now recognized too.#12021
59cc595Thanks @dyc3! - Type inference performance has been significantly improved. Some popular libraries like Zod, Valibot, Arktype, Effect, Kysely, and Drizzle have gained a ~2-240x speedup in our benchmarks. This improvement affects all rules that use type information.#12044
c73fb91Thanks @dyc3! - Fixed #12042: the HTML formatter no longer removes the space between text and an inline element on the next line when it joins the lines.#11965
f90bf38Thanks @ematipico! - Fixed module resolution in long-running workspaces so imports reflect package manifest and TypeScript path-mapping changes without requiring the importing file to be edited.#11860
0884e29Thanks @dyc3! - Removed theattributesandfunctionsoptions from the nursery rulenoTailwindArbitraryValue. The rule now uses the same Tailwind detection asuseTailwindShorthandClasses.#11969
865cd30Thanks @AlbinoGeek! - Fixed #11962:noUnknownTypeSelectorno longer reports view transition names inside view transition pseudo-elements, such aspagein::view-transition-group(page).#11914
06ff47bThanks @dyc3! - Fixed #11897: the safe fix fornoUselessStringConcatnow escapes embedded double quotes when combining literals, preserving valid JavaScript and existing escape sequences.#11997
af7825fThanks @github-actions! - The noRestrictedDependencies rule has been updated with new module replacement data, it should now detect for more relevant replacements.#11827
31bb662Thanks @dfedoryshchev! - Fixed #11566:useNamingConventionno longer reports anamespacedeclared insidedeclare globalor inside an external module declaration. Both positions are documented as always ignored, and the rule offered a safe fix, sobiome check --writerenamed the declaration:#11814
23ba25fThanks @siketyan! - Fixed type inference through generic type aliases that instantiate another generic type with a nested generic argument, such astype Nested<T> = Box<Wrapper<T>>. Type-aware rules now resolve members of such types:#11908
dd5a5ceThanks @siketyan! - Fixed #11880: Biome no longer misparses a<<expression followed by a later>>>as TypeScript type arguments. For example,const mask = 1 << bitsfollowed byconst m = mask >>> 0on the next line now parses correctly.#11882
28c817dThanks @mikehasa! - Fixed a bug innoOctalEscapewhere the safe fix could silently change a string's value. A legacy octal escape is at most two digits when the leading digit is4-7, so"\751"is"\75"+"1"(i.e."=1") but was rewritten to the single characterǩ; it is now rewritten to"\x3d1".#11861
81b0adbThanks @Netail! - Added the new nursery rulenoSelfImport, which forbids a module from importing itself.#12041
5e14509Thanks @ematipico! - Fixed a stack overflow in type-aware lint rules, such asnoMisusedPromisesandnoFloatingPromises, when generic types in files that import each other reference one another in their type parameters.#11838
9bbff0cThanks @dyc3! - Added the nursery ruleusePromiseRejectErrors, which requires Error objects as Promise rejection reasons.#11917
717db8cThanks @dyc3! - Added the nursery rulenoMisplacedListElementsfor HTML and JSX, which requires<li>elements with an HTML element parent to be children of<ul>,<ol>, or<menu>. For example,<div><li>Item</li></div>is invalid.#11919
8d0b990Thanks @dyc3! - Fixed #11899: disabling a domain no longer disables rules that also belong to another enabled domain. For example, with"domains": { "react": "all", "next": "none" },useExhaustiveDependenciesanduseHookAtTopLevelare now enabled.Rules enabled explicitly in the configuration also stay enabled when one of their domains is set to
"none".#11814
23ba25fThanks @siketyan! - Fixed #11810 and #11813: type-aware rules such asnoUnnecessaryConditionsandnoFloatingPromisesno longer take several seconds when a member is accessed on a recursive generic type alias, such as react-hook-form'sFieldPathValueor zustand'sMutate.#11983
cc39794Thanks @AlbinoGeek! - Fixed #11939: the fix ofuseRegexLiteralsno longer escapes a slash that is already escaped.new RegExp("\\/")is now fixed to/\//instead of the invalid/\\//.#11869
3a21c80Thanks @ematipico! - Fixed#9105:vcs.useIgnoreFilenow evaluates parent directory patterns when matching child paths, preserving re-included directories such as!/srcwhile ignoring their excluded siblings.#11875
2cdd220Thanks @dyc3! - Fixed #11867:noUndeclaredVariablesincorrectly reported Vue slot props declared withv-slotor its#shorthand, including destructured props.#12021
59cc595Thanks @dyc3! - Type inference accuracy has been improved significantly. More global types, likeArray,Map,Set, etc., are now fully defined. This should decrease false positives on all typed rules, since less types will be unknown.#11929
aef690dThanks @Th3S4mur41! - FixednoUnknownPropertyto recognize theframe-sizingCSS property.#12022
6233eb2Thanks @dyc3! - Fixed #12020: the HTML parser now reports an error for a mismatched closing tag like the</span>in<p>two</span></p>. Previously, it accepted</span>as the end of<p>becausespancontains the letterp, and the formatter deleted everything after it. HTML tag names are matched case-insensitively, so<DIV></div>is no longer reported as mismatched.A closing tag with no opening tag at the top level of a file, like the second
</p>in<p>a</p></p><p>b</p>, is now also reported as an error, instead of the formatter deleting it and everything after it.#12037
48cdbb8Thanks @ff1451! - Fixed #11898:noUselessReturnno longer offers a safe fix for areturn;that is the body of an unbracedif,else, or label, because removing it produced invalid code. The safe fix now also keeps comments placed before or after the removedreturn;.#12030
4ff83ddThanks @ematipico! - Fixed #9155: Biome no longer reports a parse error for typed slot props in Vue files, such asv-slot="{ value }: { value: ValueType }". Types used in slot props annotations are now correctly detected as used bynoUnusedVariables.#11955
088164fThanks @dyc3! - Fixed #11946:noUnreachableanduseGetterReturnnow recognizewhileanddo...whileloops with truthy literal conditions as infinite unless control flow exits the loop.#11958
6964bfcThanks @erenbati! - Fixed #11924:noFocusedTestsno longer reports chained method calls such asbuilder.image(url).fit("max")as focused tests.#11908
dd5a5ceThanks @siketyan! - Fixed parsing of left shifts between TypeScript instantiation expressions. Biome now parsesf<T> << f<T>as a left shift of two instantiation expressions, matching TypeScript, instead of reporting a parse error.#11877
5a53b2cThanks @dyc3! - Fixed #11278:noUnnecessaryConditionsno longer incorrectly reports optional chaining onRegExp.exec()results, including patterns created withnew RegExp(). Biome now infers the nullableRegExpExecArray | nullreturn type, preserving necessary checks such asnew RegExp(pattern).exec(input)?.[1].#11906
b87822dThanks @dyc3! - Fixed #11900:useForOfno longer reports loops that update their index inside the body, includingi += 1andargv[++i].#11834
f89dd4fThanks @dyc3! - Fixed incorrect type inference when generic parameters are reused across inherited types or swapped in recursive types.v2.5.14Compare Source
Patch Changes
#9022
0d49e24Thanks @dyc3! - Added the nursery rulenoReturnInFinally. This rule disallows return statements inPromise.prototype.finally()callbacks, including inside nested blocks and conditional branches. Returns in nested functions are ignored by the rule.Returning a value from a
Promise.prototype.finally()callback does not replace the original promise's fulfillment value, which can be confusing. Returned promises and thenables are awaited, and their rejection rejects the resulting promise.#11754
71eaa0dThanks @griff-rees! - Added the nursery rulenoSvelteAtDebugTags, which disallows Svelte's{@debug}tag.The
{@debug}tag is a debugging aid and should be removed once you no longer need it, as it should not remain in production code. The rule provides a safe fixConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.