Skip to content

Conversation

@birkskyum
Copy link
Member

@birkskyum birkskyum commented Nov 12, 2025

Porting

  • basic-default-search-params
  • basic-ssr-file-based
  • basic-virtual-file-based
  • basic-virtual-inside-file-based

Tracking at

Summary by CodeRabbit

  • Documentation

    • Added two new Solid framework router examples (Basic + SSR and Basic + SSR Streaming file-based) to router configuration.
  • New Features

    • Added four comprehensive Solid.js router example projects demonstrating routing patterns including default search parameters, server-side rendering, virtual file-based routes, and nested virtual route configurations.

@github-actions github-actions bot added the documentation Everything documentation related label Nov 12, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 12, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Four new Solid.js example projects are added to demonstrate TanStack Router functionality: a basic example with search parameters, an SSR file-based example with server rendering, a virtual file-based routing example, and a virtual inside-file-based example with nested virtual routes. Configuration documentation is updated with two new entries.

Changes

Cohort / File(s) Summary
Documentation
docs/router/config.json
Adds two new Solid Router example entries: "Basic + SSR (file-based)" and "Basic + SSR Streaming (file-based)" after the Solid Query example.
basic-default-search-params example setup
examples/solid/basic-default-search-params/.gitignore, .vscode/settings.json, README.md, package.json, postcss.config.mjs, tsconfig.json, vite.config.js, index.html
Configures a new Solid example project with standard build tooling, VSCode settings excluding generated route trees, and minimal setup instructions.
basic-default-search-params routing and styles
examples/solid/basic-default-search-params/src/main.tsx, src/styles.css
Implements a complete router with root layout, index route, nested posts section, dynamic post routes, search parameter validation, error handling, and Tailwind-based styling.
basic-ssr-file-based project configuration
examples/solid/basic-ssr-file-based/.gitignore, .vscode/settings.json, README.md, package.json, postcss.config.mjs, tsconfig.json, vite.config.ts
Configures SSR example with separate client and server build targets, Vite plugin setup, and TypeScript compilation for both environments.
basic-ssr-file-based SSR implementation
examples/solid/basic-ssr-file-based/server.js, src/entry-server.tsx, src/entry-client.tsx, src/fetch-polyfill.js
Implements Express-based SSR server with Vite middleware, client hydration entry, server rendering, and Node.js fetch polyfill.
basic-ssr-file-based route configuration
examples/solid/basic-ssr-file-based/src/router.tsx, src/routerContext.tsx, src/routeTree.gen.ts, src/routes/__root.tsx, src/routes/...
Generates route tree, defines router factory, establishes router context with head metadata, and implements file-based route structure with root, index, error, and nested posts routes.
basic-virtual-file-based project configuration
examples/solid/basic-virtual-file-based/.gitignore, .vscode/settings.json, README.md, package.json, postcss.config.mjs, tsconfig.json, vite.config.ts
Sets up virtual file-based routing example with Tailwind CSS and TanStack Router plugins configured for automatic route discovery.
basic-virtual-file-based virtual routing
examples/solid/basic-virtual-file-based/routes.ts, src/routeTree.gen.ts, src/main.tsx
Defines programmatic route hierarchy combining file-based and virtual routes, generates corresponding type-safe route tree, and initializes router.
basic-virtual-file-based route implementations
examples/solid/basic-virtual-file-based/src/routes/..., src/posts.tsx, src/styles.css
Implements example routes (home, layout, posts index/detail) and data fetching utilities demonstrating virtual routing patterns with layout nesting and dynamic routes.
basic-virtual-inside-file-based project configuration
examples/solid/basic-virtual-inside-file-based/.gitignore, .vscode/settings.json, README.md, package.json, postcss.config.mjs, tsconfig.json, vite.config.ts
Configures virtual-inside-file-based example with Tailwind and router plugins for nested virtual subtree routing.
basic-virtual-inside-file-based routing implementation
examples/solid/basic-virtual-inside-file-based/src/routeTree.gen.ts, src/main.tsx, src/posts.tsx
Generates complex route tree supporting nested virtual subtrees, initializes router with type safety, and exports post data utilities.
basic-virtual-inside-file-based route files
examples/solid/basic-virtual-inside-file-based/src/routes/__root.tsx, src/routes/_layout.tsx, src/routes/_layout/_layout-*, src/routes/posts/__virtual.ts, src/routes/posts/..., src/routes/posts/lets-go/..., src/styles.css
Implements hierarchical route structure with nested layouts, virtual subtrees, dynamic post details, and example routes demonstrating virtual-inside-file-based routing patterns.

Sequence Diagram(s)

sequenceDiagram
    participant Browser
    participant SSR Server
    participant Vite DevServer
    participant File System

    Note over Browser,File System: SSR Build Flow (basic-ssr-file-based)

    Browser->>SSR Server: Request /posts
    SSR Server->>SSR Server: Check NODE_ENV
    alt Development Mode
        SSR Server->>Vite DevServer: Initialize middleware
        Vite DevServer->>File System: Load entry-server.tsx
        Vite DevServer->>SSR Server: Provide module
    else Production Mode
        SSR Server->>File System: Load prebuilt entry-server.js
    end
    SSR Server->>SSR Server: Convert Express req to fetch Request
    SSR Server->>SSR Server: Create SSR Router context (with head)
    SSR Server->>SSR Server: renderRouterToString()
    SSR Server->>SSR Server: Transform HTML (inject head, scripts)
    SSR Server-->>Browser: Stream HTML response

    Note over Browser: Client Hydration
    Browser->>Browser: Load HTML
    Browser->>Browser: Execute entry-client.tsx
    Browser->>Browser: hydrate() + RouterClient
    Browser->>Browser: Attach event listeners
    Browser->>Browser: Full interactivity
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

  • Multiple example projects: Four complete example directories require consistency verification across setup, routing patterns, and implementation styles
  • SSR implementation: server.js and entry-point files contain non-trivial middleware logic and request/response handling that demands careful review
  • Generated route trees: Several routeTree.gen.ts files are large and auto-generated, but their structure and type augmentations should be spot-checked
  • Configuration files: While generally straightforward, vite.config.ts files differ significantly between SSR and non-SSR examples and need verification for correctness
  • Route definitions: Approximately 20+ individual route files follow similar patterns but each needs validation for proper hook usage and loader/error handling

Areas requiring extra attention:

  • examples/solid/basic-ssr-file-based/server.js — Express middleware setup, Vite integration, error handling, and port selection logic
  • examples/solid/basic-ssr-file-based/src/entry-server.tsx — SSR rendering flow, context passing, and response streaming
  • examples/solid/basic-ssr-file-based/vite.config.ts and examples/solid/basic-default-search-params/vite.config.js — build configurations for SSR vs client-only scenarios
  • examples/solid/basic-default-search-params/src/main.tsx — search parameter validation with Zod and complex nested route structure
  • Generated routeTree.gen.ts files — verify type augmentations and parent-child route relationships are correctly wired

Possibly related PRs

Suggested reviewers

  • birkskyum
  • brenelz

Poem

🐰 A rabbit's ode to the routed paths

Four new warrens of Solid examples spring,
With SSR streams and virtual routes that sing,
From file-based paths to subtrees nested deep,
The router tree grows—more routes to keep!

Binky binky, the code now flows!

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch port-solid-rotuer-examples

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 17ec180 and 204ab0f.

⛔ Files ignored due to path filters (2)
  • examples/solid/basic-ssr-file-based/public/images/favicon.ico is excluded by !**/*.ico
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (81)
  • docs/router/config.json (1 hunks)
  • examples/solid/basic-default-search-params/.gitignore (1 hunks)
  • examples/solid/basic-default-search-params/.vscode/settings.json (1 hunks)
  • examples/solid/basic-default-search-params/README.md (1 hunks)
  • examples/solid/basic-default-search-params/index.html (1 hunks)
  • examples/solid/basic-default-search-params/package.json (1 hunks)
  • examples/solid/basic-default-search-params/postcss.config.mjs (1 hunks)
  • examples/solid/basic-default-search-params/src/main.tsx (1 hunks)
  • examples/solid/basic-default-search-params/src/styles.css (1 hunks)
  • examples/solid/basic-default-search-params/tsconfig.json (1 hunks)
  • examples/solid/basic-default-search-params/vite.config.js (1 hunks)
  • examples/solid/basic-ssr-file-based/.gitignore (1 hunks)
  • examples/solid/basic-ssr-file-based/.vscode/settings.json (1 hunks)
  • examples/solid/basic-ssr-file-based/README.md (1 hunks)
  • examples/solid/basic-ssr-file-based/package.json (1 hunks)
  • examples/solid/basic-ssr-file-based/server.js (1 hunks)
  • examples/solid/basic-ssr-file-based/src/entry-client.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/entry-server.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/fetch-polyfill.js (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routeTree.gen.ts (1 hunks)
  • examples/solid/basic-ssr-file-based/src/router.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routerContext.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routes/__root.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routes/error.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routes/index.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routes/posts/$postId.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routes/posts/index.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/src/routes/posts/route.tsx (1 hunks)
  • examples/solid/basic-ssr-file-based/tsconfig.json (1 hunks)
  • examples/solid/basic-ssr-file-based/vite.config.ts (1 hunks)
  • examples/solid/basic-virtual-file-based/.gitignore (1 hunks)
  • examples/solid/basic-virtual-file-based/.vscode/settings.json (1 hunks)
  • examples/solid/basic-virtual-file-based/README.md (1 hunks)
  • examples/solid/basic-virtual-file-based/index.html (1 hunks)
  • examples/solid/basic-virtual-file-based/package.json (1 hunks)
  • examples/solid/basic-virtual-file-based/postcss.config.mjs (1 hunks)
  • examples/solid/basic-virtual-file-based/routes.ts (1 hunks)
  • examples/solid/basic-virtual-file-based/src/main.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/posts.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routeTree.gen.ts (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/a.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/b.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/file-based-subtree/hello/index.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/file-based-subtree/hello/route.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/file-based-subtree/hello/universe.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/file-based-subtree/hello/world.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/home.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/layout/first-layout.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/layout/second-layout.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/posts/posts-detail.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/posts/posts-home.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/posts/posts.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/routes/root.tsx (1 hunks)
  • examples/solid/basic-virtual-file-based/src/styles.css (1 hunks)
  • examples/solid/basic-virtual-file-based/tsconfig.json (1 hunks)
  • examples/solid/basic-virtual-file-based/vite.config.ts (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/.gitignore (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/.vscode/settings.json (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/README.md (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/index.html (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/package.json (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/postcss.config.mjs (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/main.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/posts.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routeTree.gen.ts (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/__root.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/_layout.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/_layout/_layout-2.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-a.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/_layout/_layout-2/layout-b.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/index.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts/__virtual.ts (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts/details.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts/home.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/__virtual.ts (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts/lets-go/deeper/home.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/routes/posts/lets-go/index.tsx (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/src/styles.css (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/tsconfig.json (1 hunks)
  • examples/solid/basic-virtual-inside-file-based/vite.config.ts (1 hunks)

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 and usage tips.

@nx-cloud
Copy link

nx-cloud bot commented Nov 12, 2025

View your CI Pipeline Execution ↗ for commit 204ab0f

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

☁️ Nx Cloud last updated this comment at 2025-11-12 17:30:41 UTC

@pkg-pr-new
Copy link

pkg-pr-new bot commented Nov 12, 2025

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/arktype-adapter@5836

@tanstack/directive-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/directive-functions-plugin@5836

@tanstack/eslint-plugin-router

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

@tanstack/history

npm i https://pkg.pr.new/TanStack/router/@tanstack/history@5836

@tanstack/nitro-v2-vite-plugin

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

@tanstack/react-router

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

@tanstack/react-router-devtools

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

@tanstack/react-router-ssr-query

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

@tanstack/react-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start@5836

@tanstack/react-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-client@5836

@tanstack/react-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-server@5836

@tanstack/router-cli

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

@tanstack/router-core

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

@tanstack/router-devtools

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

@tanstack/router-devtools-core

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

@tanstack/router-generator

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

@tanstack/router-plugin

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

@tanstack/router-ssr-query-core

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

@tanstack/router-utils

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

@tanstack/router-vite-plugin

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

@tanstack/server-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/server-functions-plugin@5836

@tanstack/solid-router

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

@tanstack/solid-router-devtools

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

@tanstack/solid-router-ssr-query

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

@tanstack/solid-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start@5836

@tanstack/solid-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-client@5836

@tanstack/solid-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-server@5836

@tanstack/start-client-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-client-core@5836

@tanstack/start-plugin-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-plugin-core@5836

@tanstack/start-server-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-core@5836

@tanstack/start-static-server-functions

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

@tanstack/start-storage-context

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-storage-context@5836

@tanstack/valibot-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/valibot-adapter@5836

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/TanStack/router/@tanstack/virtual-file-routes@5836

@tanstack/zod-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/zod-adapter@5836

commit: 204ab0f

@birkskyum birkskyum merged commit 85f9734 into main Nov 12, 2025
5 checks passed
@birkskyum birkskyum deleted the port-solid-rotuer-examples branch November 12, 2025 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Everything documentation related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants