Repository navigation
Tracking: open Router and Start PRs by problem area #8810
Copy link
Copy link
Open
Description
This issue tracks my open Router and Start PRs, grouped by the problem each one solves. PRs in the same group usually touch the same code, so reviewing and landing them together avoids repeat conflicts.
Prerender and static output
#8291, #8293, and #8294 are split from #7346. #8294 is stacked on #8293, so #8293 lands first.
- feat(start): add streaming prerenderParams for dynamic routes #8293: typed, streaming
prerenderParamsfor dynamic routes, with per-page options and cancellation. Build-only callbacks are removed from deployed bundles by default. - feat(start): add route sitemap metadata and streamed output #8294: route-level and per-entry sitemap metadata, with streamed sitemap and
pages.jsonoutput. - fix(start): prune statically disabled SSR route implementations #8291: removes statically disabled SSR route code from production server bundles, keeping root shells, fallbacks, and client hydration. Fixes
ssr: falseroutes still bundle components in server output #6400. - fix(start): keep prerender redirects on the preview origin #8298: Vite prerender redirects go through the shared redirect handler, and redirects that leave the preview origin are skipped.
Wrong or unneeded JS and CSS reaching the browser
- Fix/rsbuild static chunk availability #8780: a chunk shared by sibling routes no longer gives one route another route's CSS and preloads. Rsbuild availability is now the intersection across parents, as in Rspack and webpack.
- fix(react-start-rsc): defer stream decoding until render #8275: RSC streams decode on first render, so a component that never renders no longer downloads client JavaScript or applies global CSS.
- fix: consolidate route HMR and missing-chunk recovery #8277: a route module's first import no longer overwrites another router's route with the same ID, Vite RSC hot updates stop piling up stylesheet links, and webpack/Rspack
ChunkLoadErroruses the existing reload-once recovery. Supersedes fix(rsc): remove outdated stale hmr css references #7219, test(rsc): add dev-mode HMR e2e for RSC routes with a co-located server fn #7901, fix(router-plugin): don't patch foreign routers on first route-module import #7937, stabilize test #7304, and fix(router-core): detect Webpack/Rspack ChunkLoadError in isModuleNotFoundError #7653. Fixes [Vite plugin][Module Federation] Multiple routers in the same window cause an Invalid Hook Call when the remote uses @tanstack/router-plugin — regression in 1.168.17 #7921 and isModuleNotFoundError does not detect Rspack/Webpack ChunkLoadError, breaking lazy route auto-reload after deploy #7633.
Work that keeps running after teardown or restarts
- fix(router-core): clean up scroll restoration on history teardown #8273: destroying or replacing a history removes its scroll-restoration listeners, so routers created and disposed without a page reload stop writing scroll positions on
pagehide. - fix(start): release cancelled hydration replay events #8268: queued hydration-replay events are released when a deferred hydration boundary unmounts before hydrating, so they no longer keep removed DOM nodes alive. Covers React and Solid.
- perf(router-devtools-core): avoid idle polling and repeated styles #8266: the closed devtools panel stops scanning the route cache every 500 ms (4 scans to 0 over 2 s in the fixture), and shared-style construction drops from 16 calls to 1.
- fix(react-start-client): preserve idle hydration deadlines #8272: inline
idle()calls no longer restart pending hydration on every render.
Shipped bytes
- perf(start-client-core): keep the server function RPC client out of apps that never use it #8392: apps that define no server functions no longer bundle the RPC client. Minimal React Start drops 10,094 B gzip with Vite and 12,914 B with Rsbuild; apps that use server functions grow 141 B and 449 B. Per-call overhead is unchanged.
- fix(router-plugin): omit browser warnings from production bundles #8269: code-splitting warnings stay out of production browser bundles when
NODE_ENVand the bundler mode disagree. The focused webpack fixture drops one warning and 176 B gzip; the 18 standard bundle scenarios are unchanged.
Build-time speed
- perf(router-plugin): avoid redundant compiler work #8276: route splitting parses each reference file once instead of three times, and skips source maps the webpack and Rspack adapters discarded.
- perf: reduce repeated Zod validation work #8305: compiles the code-splitting grouping schema once and skips Zod parsing for Rspack modules without server-function metadata.
- perf(eslint-plugin-start): avoid repeated file and graph scans #8271:
eslint-plugin-startscopes server-component checks to each argument or callback and caches graph edges, removing repeated scans of unrelated code.
Runtime speed
- perf(router,start): update Seroval to 1.7.1 #8806: Seroval 1.7.1 cuts per-node allocations in its parsers and streaming serializers and adds backpressure for streamed async iterables and
ReadableStream. The tradeoff: a minimal Vite client entry grows from 7,460 B to 8,652 B gzip, while Rsbuild bundles shrink.
API behavior
- fix(router-core): support parsed params in matchRoute #7776:
matchRouteappliesparams.parse, respects route precedence, and returnsfalsefor templates that aren't in the route tree. Closes MatchRoute component fails with custom parse/stringify for numeric route params #2450. - [feat]: Add stable IDs for server functions #7693: server functions accept an optional manual
id, with collision rules and IDs that survive HMR. - fix(react-start-rsc): handle shared and cyclic slot preview arguments #8274: development RSC slot previews clone each shared object once and no longer overflow the stack on cyclic arguments.
Repo and docs
- chore(pnpm): update pnpm to v12 #8612 (draft, not for merge): what the pnpm 12.9.1 upgrade looks like. The lockfile grows 4,560 bytes and resolved versions don't change.
- docs: extend agent performance and Webpack guidance #8267: performance-review and webpack guidance for the agent instructions.
- docs(start): add Request Lifecycle guide #7511: a Request Lifecycle guide for Start, covering middleware, server routes, server functions, and SSR.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity