WIP: Solid router v2 pre main merge 2 - #7955
Conversation
#7802) Update README for WorkOS example: change WORKOS_REDIRECT_URI to point to /api/auth/callback
…#5791) * Add direction aware view transitions * Restore comment * Linter fix --------- Co-authored-by: Birk Skyum <74932975+birkskyum@users.noreply.github.com>
…ic (#7751) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Manuel Schiller <6340397+schiller-manuel@users.noreply.github.com>
* docs: update Next.js middleware description * Fix grammar in Next.js Edge Runtime description Correct grammatical error in comparison of Next.js limitations. * Revise Next.js proxy.ts runtime details Updated Next.js proxy.ts description to reflect runtime changes. * removed the not needed '+' --------- Co-authored-by: Sarah Gerrard <hello@sarahgerrard.me>
fix: remove stray semicolon
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
|
View your CI Pipeline Execution ↗ for commit 5c400bc
☁️ Nx Cloud last updated this comment at |
🚀 Changeset Version PreviewNo changeset entries found. Merging this PR will not cause a version bump for any packages. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
Bundle Size Benchmarks
The following scenarios have bundle-size changes compared with the baseline:
Current gzip tracks all emitted client JS chunks. Initial gzip tracks only the entry/import graph. Trend sparkline is historical current gzip ending with this PR measurement; lower is better. |
Merging this PR will improve performance by 60.85%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | Simulation | ssr request loop (react) |
330.5 ms | 79.4 ms | ×4.2 |
| ⚡ | Simulation | client-side navigation loop (solid) |
72.6 ms | 43.9 ms | +65.66% |
| ⚡ | Simulation | ssr request loop (vue) |
420.3 ms | 269.6 ms | +55.9% |
| ⚡ | Simulation | ssr request loop (solid) |
174.6 ms | 146 ms | +19.63% |
| ⚡ | Simulation | client-side navigation loop (react) |
56.3 ms | 47.6 ms | +18.11% |
| ⚡ | Simulation | client-side navigation loop (vue) |
83 ms | 72.8 ms | +14.04% |
| 🆕 | Simulation | ssr not-found (vue) |
N/A | 145.5 ms | N/A |
| 🆕 | Simulation | ssr redirect (vue) |
N/A | 49.8 ms | N/A |
| 🆕 | Simulation | ssr head (vue) |
N/A | 293 ms | N/A |
| 🆕 | Simulation | ssr loaders (vue) |
N/A | 117.1 ms | N/A |
| 🆕 | Simulation | ssr selective (vue) |
N/A | 126.3 ms | N/A |
| 🆕 | Simulation | ssr server-fn GET (vue) |
N/A | 77.7 ms | N/A |
| 🆕 | Simulation | ssr server-fn POST (vue) |
N/A | 75.4 ms | N/A |
| 🆕 | Simulation | ssr server-route middleware (vue) |
N/A | 56.1 ms | N/A |
| 🆕 | Simulation | ssr server-route (vue) |
N/A | 56 ms | N/A |
| 🆕 | Simulation | ssr streaming deferred (vue) |
N/A | 94.7 ms | N/A |
| 🆕 | Simulation | ssr assets inline-css cdn (vue) |
N/A | 161.5 ms | N/A |
| 🆕 | Simulation | ssr assets linked-css control (vue) |
N/A | 193.8 ms | N/A |
| 🆕 | Simulation | ssr before-load chain (vue) |
N/A | 153.4 ms | N/A |
| 🆕 | Simulation | ssr control-flow error 500 (vue) |
N/A | 174 ms | N/A |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing solid-router-v2-pre-main-merge-2 (5c400bc) with solid-router-v2-pre (67a9040)1
Footnotes
…rver and client Solid 2 derives hydration keys from the reactive owner tree, and its server onSettled stub consumes a child-id slot to mirror the client's effect owner. The server early-return in Transitioner skipped that registration, shifting every subsequent hydration key by one and causing a root-level hydration mismatch that discarded the server-rendered HTML (breaking deferred/streaming content and redirects in the solid-start e2e suites). Run the same code on both sides again: the onSettled callback never executes on the server, so only the owner-tree structure is shared. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…solid's manifest Solid 2's streaming renderer resolves the modules behind server-rendered lazy() boundaries through its `manifest` render option: it emits stylesheet links and modulepreloads for the lazy chunk and serializes the module→asset map the client needs to preload it before hydration. TanStack Start never provided that manifest — its own start manifest is route-keyed and intentionally excludes dynamic-import chunks — so direct visits to routes with SSR'd lazy() components rendered without the lazy chunk's CSS and logged "Asset manifest returned no client assets" on every request. (Pre-merge this was masked: the old Match tree re-rendered the boundary client-side after the failed hydration, fetching the CSS late via Vite's dynamic-import helper.) Wire up vite-plugin-solid's `virtual:solid-manifest` (dev module-graph resolver in dev, the client build's `.vite/manifest.json` in builds), kept entirely inside the solid packages: - solid-router ships an inert `ssr/clientAssetsManifest` stub that the renderers prefer over the route-keyed manifest when non-undefined - solid-start's vite plugin swaps the stub for `virtual:solid-manifest` in the server environment (with `isEntry` neutralized so Solid doesn't duplicate the entry stylesheet Start already emits) and enables `build.manifest` for the client build - bundlers without the plugin (rsbuild) keep the stub and current behavior Fixes the two shared-widget lazy-CSS tests in the solid-start start-manifest e2e (10/10 passing; selective-ssr and basic suites verified unaffected). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
onMount is gone in Solid 2 — record the pending/target mount events via onSettled instead. Also picks up routeTree.gen.ts regeneration churn. Verified with the selective-ssr e2e suite (11/11 passing). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No description provided.