Next.js Server Components
Server Components are the default rendering model in Next.js 16 with React 19.
Agent Workflow (MANDATORY)
Before ANY implementation, use TeamCreate to spawn 3 agents:
- fuse-ai-pilot:explore-codebase - Analyze existing component boundaries
- fuse-ai-pilot:research-expert - Verify latest RSC docs via Context7/Exa
- mcp__context7__query-docs - Check Next.js 16 RSC patterns
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
When to Use
- Deciding between Server and Client Components
- Fetching data directly in components without API routes
- Implementing streaming and progressive rendering
- Passing data across the server/client boundary
- Using async components with direct database access
Why Server Components
| Feature | Benefit |
|---|---|
| Zero client JS | Components never ship to the browser bundle |
| Direct data access | Query databases, read files without API layer |
| Streaming | Progressive rendering with Suspense boundaries |
| Automatic code splitting | Client Components are lazy-loaded by default |
| SEO-friendly | Full HTML rendered on the server |
Critical Rules
- Server Components are default - No directive needed
'use client'only when needed - Hooks, events, browser APIs- Never import server-only into client - Use
server-onlypackage - Props must be serializable - No functions, classes, or Dates across boundary
- Async components are server-only - Client Components cannot be async
- Colocate data fetching - Fetch where the data is consumed
Best Practices
- Push client boundaries down - Keep
'use client'as deep as possible - Composition pattern - Pass Server Components as
childrento Client - Use
server-only- Prevent accidental client imports of secrets - Parallel fetching - Use
Promise.all()for independent data - Cache with
use cache- Cache expensive server computations - Stream with Suspense - Wrap slow components for progressive loading
Reference Guide
| Need | Reference |
|---|---|
| Server vs Client patterns | rsc-patterns.md |
| Streaming and Suspense | streaming.md |
| Data fetching in RSC | rsc-patterns.md |
| Loading states | streaming.md |