Skip to content

WIP: Solid router v2 pre main merge 2 - #7955

Open
brenelz wants to merge 52 commits into
solid-router-v2-prefrom
solid-router-v2-pre-main-merge-2
Open

WIP: Solid router v2 pre main merge 2#7955
brenelz wants to merge 52 commits into
solid-router-v2-prefrom
solid-router-v2-pre-main-merge-2

Conversation

@brenelz

@brenelz brenelz commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

No description provided.

soheilnikroo and others added 30 commits July 12, 2026 06:31
#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>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ab9f6058-6b2b-4f50-a9d8-c7ef223d1239

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nx-cloud

nx-cloud Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

View your CI Pipeline Execution ↗ for commit 5c400bc

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 6m 36s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 35s View ↗

☁️ Nx Cloud last updated this comment at 2026-08-05 18:22:30 UTC

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

No changeset entries found. Merging this PR will not cause a version bump for any packages.

@socket-security

socket-security Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​typescript/​typescript6@​6.0.2621005592100
Added@​rsbuild/​plugin-tailwindcss@​2.0.3691007091100
Added@​rsbuild/​core@​2.1.11001008598100
Addedtypescript@​7.0.29910089100100
Addedvue-tsc@​3.3.81001009197100
Addedsrvx@​0.11.181001009595100
Added@​vitejs/​plugin-rsc@​0.5.309910010097100
Added@​playwright/​test@​1.61.110010010099100

View full report

@socket-security

socket-security Bot commented Aug 5, 2026

Copy link
Copy Markdown

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.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: npm @emnapi/runtime is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: pnpm-lock.yamlnpm/@rsbuild/plugin-vue@1.2.7npm/@rsbuild/plugin-react@2.0.0npm/@rsbuild/plugin-tailwindcss@2.0.3npm/@rsbuild/core@2.1.1npm/@emnapi/runtime@1.11.1

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@emnapi/runtime@1.11.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Benchmarks

  • Commit: c58acf341eb4
  • Measured at: 2026-08-05T18:15:38.688Z
  • Baseline source: history:b2908c642ac0
  • Dashboard: bundle-size history

The following scenarios have bundle-size changes compared with the baseline:

Scenario Current (gzip) Delta vs baseline Initial gzip Raw Brotli Trend
solid-router.minimal 40.80 KiB +5.95 KiB (+17.07%) 40.68 KiB 115.65 KiB 36.91 KiB ▂▂▂▂▂▂▂▁▁▁▁█
solid-router.full 46.00 KiB +6.04 KiB (+15.13%) 45.87 KiB 131.47 KiB 41.49 KiB ▂▂▂▂▂▂▂▁▁▁▁█
react-start.minimal 102.00 KiB +1.38 KiB (+1.37%) 101.87 KiB 318.27 KiB 88.50 KiB ██████████▁█
react-start.deferred-hydration 102.74 KiB +1.38 KiB (+1.36%) 101.89 KiB 319.64 KiB 89.25 KiB ██████████▁█
react-start.full 105.41 KiB +1.46 KiB (+1.41%) 105.27 KiB 328.27 KiB 91.38 KiB ██████████▁█
react-start.rsbuild.minimal 99.79 KiB -463 B (-0.45%) 99.62 KiB 312.70 KiB 86.01 KiB ▁▁▁▁▁▁▁▂▂▂█▂
react-start.rsbuild.minimal-iife 100.19 KiB -474 B (-0.46%) 100.02 KiB 313.64 KiB 86.37 KiB ▁▁▁▁▁▁▁▂▂▂█▂
react-start.rsbuild.full 103.12 KiB -478 B (-0.45%) 102.95 KiB 322.85 KiB 88.78 KiB ▁▁▁▁▁▁▁▃▃▃█▃
solid-start.minimal 68.55 KiB +20.32 KiB (+42.14%) 68.42 KiB 200.70 KiB 61.16 KiB ▁▁▁▁▁▁▁▁▁▁▁█
solid-start.deferred-hydration 72.46 KiB +20.98 KiB (+40.75%) 68.97 KiB 209.44 KiB 64.80 KiB ▁▁▁▁▁▁▁▁▁▁▁█
solid-start.full 72.54 KiB +19.05 KiB (+35.62%) 72.41 KiB 212.34 KiB 64.57 KiB ▂▂▂▂▂▂▂▂▂▂▁█
vue-start.minimal 70.46 KiB +1.44 KiB (+2.09%) 70.33 KiB 201.06 KiB 62.61 KiB ███████▆▆▆▁▆
vue-start.full 74.42 KiB +1.44 KiB (+1.97%) 74.29 KiB 213.66 KiB 65.95 KiB ███████▆▆▆▁▆

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.

@pkg-pr-new

pkg-pr-new Bot commented Aug 5, 2026

Copy link
Copy Markdown
More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@7955

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@7955

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@7955

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@7955

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/@tanstack/nitro-v2-vite-plugin@7955

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@7955

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@7955

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@7955

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@7955

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@7955

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@7955

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@7955

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@7955

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@7955

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@7955

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@7955

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@7955

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@7955

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@7955

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@7955

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@7955

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@7955

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@7955

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@7955

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@7955

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@7955

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@7955

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@7955

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@7955

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@7955

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@7955

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@7955

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@7955

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@7955

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@7955

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@7955

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@7955

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@7955

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@7955

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@7955

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@7955

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@7955

commit: 5c400bc

@codspeed-hq

codspeed-hq Bot commented Aug 5, 2026

Copy link
Copy Markdown

Merging this PR will improve performance by 60.85%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 6 improved benchmarks
🆕 173 new benchmarks

Performance Changes

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

Open in CodSpeed

Footnotes

  1. No successful run was found on solid-router-v2-pre (ffaa0ba) during the generation of this report, so 67a9040 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

brenelz and others added 3 commits August 5, 2026 12:27
…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>
@brenelz
brenelz marked this pull request as ready for review August 5, 2026 18:34
@brenelz
brenelz requested a review from a team as a code owner August 5, 2026 18:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment