React Server Components (RSC) execute on the server and send rendered HTML to the client. They cannot use hooks, state, or browser APIs — they are purely for rendering.
Benefits: zero bundle size impact, direct database/filesystem access, automatic code splitting. Server Components handle data fetching and heavy computation. Client Components handle interactivity.
In Next.js App Router, components are Server Components by default. Add 'use client' directive to make them Client Components.
Use Server Components for: data fetching, SEO-critical content, static content, and large dependencies. Use Client Components for: event handlers, state, effects, and browser-only APIs.
The key mental model: Server Components for reading data, Client Components for writing data and handling user interaction.