Glossary
What is server-side rendering (SSR)?
Server-side rendering (SSR) is a way of delivering web pages in which the server builds the complete HTML for a page when it is requested, so the browser, search engines and AI crawlers receive the full content straight away.
Also called SSR
SSR vs CSR
With client-side rendering (CSR), the server sends a nearly empty HTML file and a JavaScript bundle; the browser runs the JavaScript to build the page. With SSR, the server runs that work first and sends finished HTML, and JavaScript then makes the page interactive, a step called hydration.
The difference is invisible to a person on a fast laptop. It matters a lot to anything that reads the raw HTML without running JavaScript.
Why it matters for AI crawlers
Googlebot can run JavaScript, though rendering may happen later than the first crawl. Many AI crawlers do not. A December 2024 analysis of crawler traffic by Vercel and MERJ found that the crawlers used by OpenAI, Anthropic and Perplexity fetched JavaScript files but did not execute them.
So a client-side rendered page can look complete in a browser while ChatGPT, Claude or Perplexity see an empty shell with a loading spinner. SSR, or static generation, puts the content in the HTML they actually read.
When to use SSR
- Pages that change per visitor or per request, such as personalized or logged-in views
- Content that changes too often to rebuild, such as live inventory or listings
- Pages behind search or filters that must still be crawlable
- For content that is the same for everyone, static generation is usually simpler and faster
Example
A product comparison page built as a client-side React app shows “Loading…” in its HTML. Rendered on the server, the same page’s HTML contains the table, headings and prices, so any crawler can read it.
How we handle it
Every page we build delivers its main content in the HTML, whether through static generation, SSR or a visual builder that pre-renders. When we take over a browser-only React site, such as one made with an AI app builder, we move it to server or static rendering first. See Next.js development.
Last updated 15 November 2026