TanStack
router
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
ci: apply automated fixes
fix-match-loading-ready
10 minutes ago
refactor(react-router): one deterministic emitter for the load lifecycle The Transitioner carried two emission pipelines: render-observed usePrevious edges (lossy by design — React batching can hide a flip inside one commit) and the mount-load repair, with a setTimeout(0) arbitrating between them. Both are replaced by a single emitter driven by synchronous store subscriptions (isLoading/hasPending), which cannot miss an edge, plus one render-coupled signal for onResolved: a commit tick bumped inside the transition and observed by a layout effect, so resolution still lands after React committed the transition render. A counter rather than a boolean so nested transitions (invalidate inside a user startTransition) can never coalesce into an unobservable no-change. No timer, no arbitration, no repair block, and the mount load reduces to a bare router.load() — its own isLoading toggle through the armed subscriptions is the deterministic signal even for loads that settled before mount (the memory-benchmark case, re-verified: no hang). Net smaller than the file it replaces. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix-match-loading-ready
2 hours ago
ci: apply automated fixes
fix-match-loading-ready
2 hours ago
fix(benchmarks): Solid v2 type fixes for new benchmark scenarios - jsxImportSource solid-js -> @solidjs/web in the new scenario tsconfigs (Solid 2's JSX types moved; with the old value tsc fell back to React's JSX namespace and rejected solid components) - createRenderEffect one-arg calls -> v2 (compute, effect) signature in the loaders, search-params, and nested-params solid scenarios, matching the existing client-nav solid app Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
brenelz:merge-main-into-solid-v2-pre
3 hours ago
refactor: single-shot foreground wait in the preload borrow protocol Replace the counter-capped wait loop with the deterministic contract the protocol originally had: if the borrowed owner is mid-navigation, await the current foreground load exactly once and re-read. An owner that still has not committed after that belongs to a newer navigation, and the speculative pass yields via the ownership sentinel. Zero or one await by construction — no arbitrary iteration bound. INTERNALS and the churn regression test updated to match. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix-match-loading-ready
4 hours ago
fix(benchmarks): adapt new solid benchmarks from main to Solid v2 main's new client-nav scenarios and memory benchmarks were written for Solid 1.x and fail against this branch's Solid 2 toolchain: - import render/HydrationScript from @solidjs/web instead of solid-js/web - memory benchmark manifests: solid-js 2.0.0-beta.15, @solidjs/web, vite-plugin-solid ^3.0.0-next.5 (matching client-nav) - Suspense -> Loading, and createResource -> router Await in the memory-server solid scenarios - skip the streaming-peak solid bench: Solid 2's renderToStream emits </body></html> with the shell and streams deferred Loading content after it, so router-core's transformStreamWithRouter tail-buffers the ~200 kB of deferred sections and throws 'SSR stream tail exceeded maximum buffer' (MAX_TAIL_CHARS = 64 kB). Needs a transformer-level fix on this branch before the scenario can run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
brenelz:merge-main-into-solid-v2-pre
4 hours ago
fix(lockfile): restore @rspack/binding@2.0.8 platform binaries pnpm install --lockfile-only on darwin-arm64 dropped all other platform optionalDependencies for @rspack/binding@2.0.8, causing the bundle-size benchmark on Linux CI to fall back to a stale 2.0.0 binding ("Unmatched version @rspack/core@2.0.8 and @rspack/binding@2.0.0"). Restored the full platform list to match main's lockfile. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
brenelz:merge-main-into-solid-v2-pre
4 hours ago
fix: address delta-review findings - joinPreloadedActiveMatch's foreground wait is now bounded: a speculative preload drops its pass (ownership sentinel) instead of outwaiting sustained navigation churn, where every iteration picked up the replacement latestLoadPromise and awaiters never settled. Covered by a churn regression test with signal-aware loaders. - The react Transitioner stuck-pending repair now also emits onLoad/onBeforeRouteMount/onResolved — deferred one macrotask so the normal effect pipeline (which sets status idle) always wins arbitration and events cannot double-fire; only genuinely unobserved loads repair. - Server asset projection no longer abandons a pending async head()/ scripts() when a sync throw coincides with an async headers(): the response waits on headers regardless, so that case now flows through the generic per-kind branch and commits everything that settles. This also removes the duplicated commit+recurse continuation. - Restores solid-router's server-mode test suite ('vitest --mode server'), accidentally dropped from test:unit by a concurrent agent edit swept into an earlier commit; the suite passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix-match-loading-ready
4 hours ago
Latest Branches
CodSpeed Performance Gauge
+1%
fix: match loading — review fixes and #7713 edge cases
#7744
2 hours ago
022395e
fix-match-loading-ready
CodSpeed Performance Gauge
+59%
chore(solid-router-v2-pre): merge main
#7746
3 hours ago
2bb318b
brenelz:merge-main-into-solid-v2-pre
CodSpeed Performance Gauge
0%
bench(memory): prefix client and server benchmark names
#7743
20 hours ago
ac8eb04
chore/memory-benchmark-prefixes
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs