build(webv2): update dependencies to latest and enable React Compiler lint rules - #256
Merged
Merged
Conversation
Majors: Vitest 5, Playwright 1.63, fuzzysort 4, plotly.js 4, Chakra 3.37, TanStack Router 1.170.36, React 19.3, oxlint 1.82, oxfmt 0.67. Vitest 5 keeps its artifacts under .vitest/; one test file picks up oxfmt's new layout.
oxlint 1.79 split react/react-compiler into 24 rules; every suppression now names the rule that fires at that site, and two stale ones are gone. todo, rule-suppression and the compiler dependency rules stay off, with the reasons in the config.
…1.170 toHaveTextContent is exact now; zag ignores a stationary synthetic hover; the dialog places initial focus asynchronously. A pre-render router.load() on a router whose provider unmounted never settles since @tanstack/react-router 1.170.19, so the provider drives the load.
fuzzysort 4 returns at most 10 matches unless limit is 0, which silently truncated prompt template, wildcard and command palette search.
Vitest 5 browser mode injects string defines as string literals, so "false" was truthy and every browser run rewrote the canvas goldens and skipped the harness tests. The harness now rejects a non-boolean define.
Launchpad grows 24 KB brotli and the editor 20 KB, almost entirely @tanstack/router-core's 1.170.19 scheduler and its store dependency. Request counts drop as the newer bundler folds small chunks into the entry chunk.
joshistoast
requested review from
JPPhoto,
Pfannkuchensack,
blessedcoolant and
lstein
as code owners
September 14, 2026 04:16
Take main's performance baselines; they are re-recorded in the next commit.
- ark 5.39 moved the field error id out of `ariaDescribedby`; read it from the field's input props instead - browser cases for help text and for an invalid field without error text - rewrite the seed-mode reducer's rest destructuring as a declaration for oxlint 1.82
Vendor growth from React 19.3, zod 4.6, fuzzysort 4 and lucide-react; fewer initial requests as Vite 8.3 folds tiny chunks into the entry.
Update five frontend dependencies and run the full release gate in CI. Accept recorded byte growth while preserving request and structural limits. Stabilize accessibility journeys and retain failure screenshots.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every webv2 dependency was behind latest, and the lint config referenced
react/react-compiler, which oxlint 1.79 split into 24 per-category React Compiler rules. This bumps everything to latest (majors: Vitest 5, Playwright 1.63, fuzzysort 4, plotly.js 4, Chakra 3.37, TanStack Router 1.170.36, React 19.3, oxlint 1.82, oxfmt 0.67), enables the compiler rule family with per-site suppressions naming the rule that actually fires, and fixes what the upgrades broke:limit: 0and regression tests."false"golden-update flag was truthy: every browser run rewrote the canvas goldens and skipped the harness tests. Both configs now use booleans and the harness rejects a non-boolean define.toHaveTextContent, zag's stationary-hover gate, Chakra's async dialog focus, and a router 1.170.19 change where a pre-renderrouter.load()on an unmounted router never settles.Four compiler rules stay off with reasons in the config:
todoandrule-suppressionfire 70+ times on legitimate code;exhaustive-effect-dependenciesandmemo-dependenciesflag the deliberate identity-trigger deps used with useEffectEvent (react/exhaustive-depsremains the dependency gate).Checklist
What's Newcopy (if doing a release after this PR)