The client-side default — an empty div and a JavaScript bundle — means every visitor, crawler and link-preview bot must run the app to see anything. SSR runs it once on the server and sends the finished HTML: first paint is a page, not a spinner.
It is the middle point of the spectrum: static generation pre-renders at build time for content that rarely changes; SSR renders per request for pages that must be fresh or personal. Frameworks like Next.js let you choose per route, which is the correct granularity — the marketing page wants static, the dashboard wants SSR.
Related terms
Static generation (SSG)
Rendering pages to HTML at build time, so a request is answered by handing over a file instead of running code.
Hydration
The step where JavaScript takes over server-rendered HTML in the browser and makes it interactive.
Client-side rendering (CSR)
Sending a JavaScript bundle that builds the page in the browser — flexible, but the first paint waits for the code to download and run.
The bench this belongs to
Full-stackIf you can describe it, we can build it. React and Next.js on the front, Python or Node behind, Postgres underneath, shipped to somewhere you can afford to run.
