April 2026 marked a significant release: TanStack Start shipped experimental RSC support. But this isn't a Next.js clone—it's a fundamentally different mental model.
TanStack Start treats RSCs as fetchable, cacheable, renderable data—not as a paradigm you're forced to build around.
The Two Visions of React Server Components
Next.js: The Platform Play
- Server-first rendering
- Tight platform integration
- Automatic optimizations
- Server Components as the default
TanStack Start: The Developer-First Play
- Type safety everywhere
- Explicit over implicit
- Client-first by default
- RSCs as just another data primitive
The Core Difference: How RSCs Work
Next.js Model
In Next.js, RSCs define the tree structure. The server decides everything.
TanStack Start Model
In TanStack Start, RSCs are streams you fetch:
import { createServerFn } from '@tanstack/react-start' import { createFromReadableStream } from '@tanstack/react-start/rsc' // Define RSC const fetchUserProfile = createServerFn({ method: 'GET' }) .validator((data) => data) .handler(async ({ data }) => { return renderToReadableStream(<UserProfile user={data.user} />) }) // Fetch when needed function UserPage({ userId }) { const profile = useQuery({ queryKey: ['user', userId], queryFn: () => fetchUserProfile({ data: { user: userId } }) }) return createFromReadableStream(profile) }
Key insight: The client decides when and how to fetch server-rendered UI.
Security: Why TanStack Start Avoids CVEs
The recent RSC CVEs affected frameworks that parse Flight data from the client.
TanStack Start's architecture:
Server → sends Flight stream → Client (renders) ↓ Client does NOT send Flight back to server
One-way data flow prevents the attack surface.
When to Choose TanStack Start
Choose TanStack Start If:
- You want client-first by default
- Type safety is critical
- You value explicit over implicit
- TanStack Query patterns feel natural
- Minimal runtime bundle size matters
Choose Next.js If:
- You're building new and want defaults that work
- Vercel platform features are valuable
- Server-first mental model matches your thinking
Quick Comparison
| Aspect | Next.js | TanStack Start |
|---|---|---|
| Philosophy | Server-first | Client-first |
| Default | Server Component | Interactive Component |
| Runtime | Substantial | Minimal |
| Caching | Framework-specific | Use TanStack Query |
| Type Safety | Good | Excellent |
Try TanStack Start: tanstack.com/start