Client-Side vs. Server-Side Rendering
What we will go through
- How client-side and server-side rendering work
- Where static generation and hydration fit
- How to tell which method a site uses
- Why dynamic rendering is now a workaround
Short answer
Client-side rendering sends a mostly empty HTML page and builds content in the browser with JavaScript. Server-side rendering and static generation send complete HTML from the server, then hydrate it for interactivity. For SEO, server-rendered or static HTML is safer because content and links are visible immediately to every crawler.
Think of a restaurant. With client-side rendering, you get the ingredients and a recipe, and you cook at your table. With server-side rendering, the kitchen cooks and serves the finished dish. With static generation, the dish was prepared earlier and is ready the moment you order. Google can cook, but it prefers being served.
The methods
| Method | What the HTML contains | SEO risk |
|---|---|---|
| CSR | Empty shell, content built by JS | Higher: depends on rendering |
| SSR | Full content per request | Low |
| SSG | Full content, prebuilt | Low |
| Hybrid | Mix per route | Varies, check each template |
Most modern frameworks hydrate SSR or SSG pages so they become interactive after loading.
How to identify the method
- View Source: is the main content there? Yes means SSR or SSG. A near-empty
<div id="root">means CSR. - Disable JavaScript in DevTools and reload. What remains is the raw experience.
- Check framework signs:
__NEXT_DATA__(Next.js),data-reactroot,ng-version, Wappalyzer extension. - Check per template: product pages may be SSR while filters or reviews are CSR.
Dynamic rendering
Serving pre-rendered HTML only to bots was once common. Google now treats it as a workaround, not a long-term solution. In audits, recommend SSR or static generation for important templates.
Practice: which rendering method?
Sort each item into the right group.
-
View Source shows only <div id="app"></div>
Answer: Client-side (CSR).
-
Full product text visible with JavaScript disabled
Answer: Server-side or static.
-
Blog built into HTML files at deploy time
Answer: Server-side or static.
-
Page goes blank when JavaScript is turned off
Answer: Client-side (CSR).
Common mistakes
- Assuming one method for the whole site. Check per template.
- Recommending dynamic rendering as the fix.
- Recommending a full rebuild when only one template needs SSR.
Your action
Next, you will check JavaScript-generated content and links.
Key terms
- Client-side rendering (CSR)
- The browser downloads JavaScript that builds the page content.
- Server-side rendering (SSR)
- The server builds the full HTML for each request before sending it.
- Static site generation (SSG)
- Pages are built into HTML files ahead of time and served as is.
- Hydration
- JavaScript attaching interactivity to server-rendered HTML in the browser.
Questions beginners ask
Can a CSR site rank well?
Yes, if rendering works reliably. But it depends on Google's rendering, is slower to index, and is weaker for non-rendering crawlers.
What is dynamic rendering?
Serving pre-rendered HTML to bots and JavaScript to users. Google now calls it a workaround and recommends SSR or static generation instead.
Which frameworks support SSR?
Next.js, Nuxt, SvelteKit, Remix, Astro, and Angular Universal, among others.
Does WordPress need this?
Standard WordPress is server rendered. Headless WordPress with a JavaScript front end needs checking.
Related lessons
Want someone to handle SEO for your business while you learn? The team at Remar Digital can help.