TanStack Start: RSC Your Way—The Developer-First React Framework

April 1, 2026

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

AspectNext.jsTanStack Start
PhilosophyServer-firstClient-first
DefaultServer ComponentInteractive Component
RuntimeSubstantialMinimal
CachingFramework-specificUse TanStack Query
Type SafetyGoodExcellent

Try TanStack Start: tanstack.com/start

Home
Blog
GitHub
LinkedIn
X