Where your React app's HTML actually gets built — in the browser, or on the server.
Client-Side Rendering ships a nearly empty HTML shell along with a JavaScript bundle, and the browser has to download, parse, and execute that bundle before React builds any actual UI — which is why CSR apps often show a blank screen or spinner before anything meaningful appears. Server-Side Rendering flips this: the server renders the initial HTML for each request, so the browser receives a fully-formed page immediately, which generally means a faster first paint and better SEO, since crawlers see real content without needing to execute JavaScript.
SSR's HTML isn't interactive on its own, though — hydration is the step where React runs on the client, attaches event listeners to the server-rendered markup, and reconciles it with what React would have rendered itself, effectively taking over the static HTML rather than rebuilding it. A mismatch between what the server rendered and what the client would render causes a hydration error. Static Site Generation (pre-rendering HTML at build time) and Incremental Static Regeneration sit alongside SSR as further variations on exactly when that HTML gets generated.
What you'll walk away knowing