React Server Components represent the biggest shift in React's architecture since hooks. They fundamentally change how we think about component boundaries and data fetching.
Think of server components as your data layer and client components as your interaction layer. Server components fetch and prepare data, while client components handle user interactions.
Server components ship zero JavaScript to the client. Your component code runs entirely on the server, reducing bundle sizes and improving performance.
Combined with Suspense, server components enable streaming HTML. Users see content progressively as it becomes available, rather than waiting for the entire page to render.
Use server components by default. Add "use client" only when you need browser APIs, event handlers, or state management. This keeps your client bundle lean.