Skip to content

Commit 8186255

Browse files
author
clark.zou
committed
chore: Refactor code structure for improved readability and maintainability
1 parent 6e9891a commit 8186255

File tree

5 files changed

+550
-373
lines changed

5 files changed

+550
-373
lines changed

apps/web-tanstack/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@
2424
"@vitejs/plugin-react": "^5.0.3",
2525
"drizzle": "workspace:*",
2626
"framer-motion": "^12.23.26",
27-
"nitro": "3.0.260311-beta",
27+
"nitro": "3.0.260415-beta",
2828
"react": "^19.2.3",
2929
"react-dom": "^19.2.3"
3030
},
3131
"devDependencies": {
3232
"@types/node": "^24.5.2",
3333
"@types/react": "^19.1.13",
3434
"@types/react-dom": "^19.1.9",
35+
"@vitejs/plugin-rsc": "^0.5.24",
3536
"typescript": "^6.0.2",
3637
"vite": "catalog:",
3738
"vite-plugin-checker": "^0.12.0",

apps/web-tanstack/src/routes/posts/$postId.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,42 @@
1+
import { useQuery } from '@tanstack/react-query'
12
import { createFileRoute } from '@tanstack/react-router'
3+
import { createServerFn } from '@tanstack/react-start'
4+
import {
5+
createFromReadableStream,
6+
renderServerComponent,
7+
renderToReadableStream,
8+
} from '@tanstack/react-start/rsc'
9+
10+
// Create a server function
11+
// const getGreeting = createServerFn().handler(async () => {
12+
// // Create an RSC readable stream
13+
// return renderToReadableStream(
14+
// // Return JSX
15+
// <h1>Hello from the server</h1>,
16+
// )
17+
// })
18+
19+
function Greeting() {
20+
return <h1>Hello from RSC</h1>
21+
}
22+
23+
const getGreeting = createServerFn().handler(async () => {
24+
const Renderable = await renderServerComponent(<Greeting />)
25+
return { Renderable }
26+
})
227

328
export const Route = createFileRoute('/posts/$postId')({
429
component: RouteComponent,
30+
loader: async () => {
31+
const { Renderable } = await getGreeting()
32+
return { Greeting: Renderable }
33+
},
534
})
635

736
function RouteComponent() {
837
const { postId } = Route.useParams()
38+
const { Greeting } = Route.useLoaderData()
39+
940
return (
1041
<div>
1142
<h2>Post Details</h2>
@@ -14,6 +45,7 @@ function RouteComponent() {
1445
{postId}
1546
</p>
1647
<p>This page inherits the posts layout!</p>
48+
{Greeting}
1749
</div>
1850
)
1951
}

apps/web-tanstack/vite.config.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { resolve } from 'node:path'
33
// import { nitroV2Plugin as nitro } from '@tanstack/nitro-v2-vite-plugin'
44
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
55
import viteReact from '@vitejs/plugin-react'
6+
import rsc from '@vitejs/plugin-rsc'
67
import { nitro } from 'nitro/vite'
78
import UnoCSS from 'unocss/vite'
89
import { FileSystemIconLoader } from 'unplugin-icons/loaders'
@@ -19,7 +20,12 @@ export default defineConfig({
1920
port: 3000,
2021
},
2122
plugins: [
22-
tanstackStart(),
23+
tanstackStart({
24+
rsc: {
25+
enabled: true,
26+
},
27+
}),
28+
rsc(),
2329
// react's vite plugin must come after start's vite plugin
2430
viteReact(),
2531
nitro({

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
},
1616
"dependencies": {
1717
"@antfu/nip": "^0.1.0",
18-
"@tanstack/react-query": "^5.90.21",
19-
"@tanstack/react-router": "^1.166.7",
20-
"@tanstack/react-start": "^1.166.8",
18+
"@tanstack/react-query": "^5.99.0",
19+
"@tanstack/react-router": "^1.168.22",
20+
"@tanstack/react-start": "^1.167.41",
2121
"@trpc/client": "^11.12.0",
2222
"@trpc/react-query": "^11.12.0",
2323
"@trpc/server": "^11.12.0",

0 commit comments

Comments
 (0)