You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/blog/tanstack-start-rsc.md
+3-21Lines changed: 3 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,11 +11,11 @@ authors:
11
11
React Server Components are a genuine leap for React. They reduce bundle size, stream UI as it resolves, and move work off the client.
12
12
13
13
But the way RSCs have been implemented so far comes with a tradeoff: **the server owns the component tree**.
14
-
Your client code opts into interactivity with `'use client'`. **Composition flows one direction**—server decides, client receives. The React model you know—props, context, client-led composition—gets fragmented across environments.
14
+
Your client code opts into interactivity with `'use client'`. **Composition flows one direction**: server decides, client receives. The React model you know (props, context, client-led composition) gets fragmented across environments.
15
15
16
16
What if it didn't have to?
17
17
18
-
What if RSCs were actually components? **Fetchable. Cacheable. Composable by the client.** Primitives that flow through your router, your cache, your data layer—without special directives or framework lock-in.
18
+
What if RSCs were actually components? **Fetchable. Cacheable. Composable by the client.** Primitives that flow through your router, your cache, your data layer, without special directives or framework lock-in.
19
19
20
20
That's what we built in **TanStack Start**.
21
21
@@ -261,24 +261,6 @@ You choose patterns **per-route, per-component, per-use-case**. The architecture
261
261
262
262
---
263
263
264
-
## The Philosophy
265
-
266
-
React Server Components are powerful. They unlock patterns that weren't possible before.
267
-
268
-
But the traditional model makes a choice: **the server owns the tree, and interactivity is an escape hatch.** That works for content-heavy sites. It creates friction for apps that are fundamentally interactive.
269
-
270
-
**TanStack Start doesn't make that choice for you.**
271
-
272
-
> RSCs are a serialization format, a way to stream React elements from the server. They're a primitive, not a paradigm. Use them when they help. Compose around them when you need control. The client and server are peers, not a hierarchy.
273
-
274
-
The server can render interactive elements directly. It can also defer to the client through slots. **The client still owns the final composition.**
275
-
You decide the balance, per-component, based on what makes sense.
276
-
277
-
Because it's not about client or server.
278
-
**It's about using both, intentionally.**
279
-
280
-
---
281
-
282
264
## Current Status: Experimental
283
265
284
266
This is the first experimental release of RSCs in TanStack Start. A few things to know:
@@ -299,7 +281,7 @@ If you hit rough edges, [open an issue](https://github.com/tanstack/router/issue
299
281
300
282
Next.js App Router is server-first: your component tree lives on the server by default, and you opt into client interactivity with `'use client'` boundaries.
301
283
302
-
TanStack Start is **isomorphic-first**: your tree lives wherever makes sense, and RSCs are a primitive you pull in when helpful. The key difference is **client-led composition**—Composite Components expose slots so the client can assemble the final tree, not just accept a server-owned one.
284
+
TanStack Start is **isomorphic-first**: your tree lives wherever makes sense, and RSCs are a primitive you pull in when helpful. The key difference is **client-led composition**. Composite Components expose slots so the client can assemble the final tree, not just accept a server-owned one.
303
285
304
286
Both approaches support RSCs. They differ in who owns the tree by default and how composition flows.
0 commit comments