“RSC or SSR?”
RSC is an execution/payload boundary; SSR produces initial HTML. A framework can use both.
Quick reference · Print-friendly
Choose per route or region. Start from constraints; combine patterns deliberately.
| Pattern | HTML timing | Primary gain | Primary cost | Good signal |
|---|---|---|---|---|
| CSR | Browser runtime | App-like client model | Startup JS and data waterfall | Authenticated tool; repeat use |
| SSR | Each request | Fresh or personalized HTML | Compute, latency, operations | Cookies or request data shape output |
| SSG | Build time | Cheap, resilient CDN delivery | Staleness and build scale | Same content for many users |
| ISR | Build + regeneration | Static reads with bounded freshness | Invalidation and stale windows | Many pages; updates tolerate delay |
| Streaming SSR | Request, chunked | Useful shell before slow regions | Fallback and infra complexity | Independent regions have uneven latency |
| Islands | Usually build/server | JavaScript only for widgets | Cross-island coordination | Mostly content, sparse interaction |
| Server Components | Server execution | Server-only dependencies and data access | Boundary mental model and framework coupling | Large non-interactive component subtrees |
| Resumability | Server + lazy continuation | Avoid eager hydration replay | Serialization constraints and ecosystem | Startup JS is the bottleneck |
RSC is an execution/payload boundary; SSR produces initial HTML. A framework can use both.
Usually a spectrum by region and data source, not a whole-site binary.
It can expose initial content, but correctness, crawlability, metadata, links, status codes, and speed still matter.
It can improve progressive display; it does not reduce all work and may be neutralized by buffering.