Overview

Client-side rendering delivers something like <div id="root"></div> plus a script; the browser downloads, parses, and runs the bundle, fetches data, and builds the DOM. Choose it for authenticated dashboards and tools where SEO does not matter and the app shell loads once. Avoid it for landing pages, blog posts, and anything that must be indexed or previewed.

Rules

  • Googlebot renders JavaScript in a deferred pass; other crawlers, including many AI crawlers and link-preview scrapers, may see only the empty shell. Put indexable content in ssr or ssg output.
  • CSR delays lcp because nothing meaningful paints until JavaScript runs. Keep the initial bundle small with code-splitting.
  • Deployment is simple: static files from any CDN. Navigation after the first load is fast.
  • Create React App was deprecated in February 2025; start new SPAs with a framework or a build tool such as Vite.
  • ssr: server HTML per request, better for SEO and first paint.
  • ssg: build-time HTML for public content.
  • hydration: the step that makes server HTML interactive.
  • lcp: the metric CSR hurts most.
  • react: SPA patterns.
  • nextjs: choosing a rendering mode per route.