Logo von nextlevels
DEEN
Request a project

Server-side rendering (SSR)

Last updated on

In short

Server-side rendering (SSR) refers to a rendering strategy in which a web server generates the complete HTML of a page before delivering it to the browser. The server executes the necessary code, fetches data from a database or API and sends the client a fully populated page.

That is the decisive difference from approaches that only assemble the content in the browser using JavaScript. Especially for search engine crawlers and AI bots that read HTML but execute no JavaScript or only limited JavaScript, SSR is often the prerequisite for the content being captured at all. SSR is therefore today less a purely developer question than a decision with direct consequences for visibility and revenue.

How server-side rendering works

With an SSR page, the request runs like this: the browser requests a URL. The server receives the request, executes the application logic, loads the required data and renders a complete HTML document from it. This document goes back to the browser, which can display it immediately — so the visible content is already there before any client-side script has loaded. In modern frameworks, this is usually followed by a second step called hydration: the JavaScript supplied "brings to life" the already rendered page, attaches event handlers and makes it interactive. The user therefore sees the content early, and full interactivity follows shortly afterwards.

In contrast to this is client-side rendering (CSR), which goes the opposite way. Here the server initially only sends an almost empty HTML skeleton with references to JavaScript files. Only in the browser is the code executed, data loaded and the actual content created. For a human user with a modern browser, this often works perfectly. For a crawler that reads the initial HTML and does not render JavaScript, however, the page remains practically empty. It is exactly this difference that decides whether a page is visible to machines or not.

What can happen during hydration

Hydration is the elegant idea behind modern SSR, but also its most common source of errors. If the HTML generated on the server does not exactly match what the client-side JavaScript expects, a so-called hydration mismatch occurs: the page "flickers", interactions only work after a delay, or console errors appear. Such mismatches typically arise from content that is rendered differently on server and client — such as timestamps, random values or browser-specific logic. Anyone who sets up SSR properly makes sure that both sides produce the same initial state.

Distinction: SSR, CSR and SSG

Besides SSR and CSR, there is a third widespread variant: static site generation (SSG). Here the HTML is not generated with every request but once at build time and then delivered as a static file. SSG is extremely fast and crawler-friendly but is only suitable for content that does not change constantly. SSR, on the other hand, renders afresh for each request and therefore suits dynamic, personalised or frequently updated pages. In practice, many modern applications mix these strategies — static pages via SSG, dynamic ones via SSR, highly interactive sections via CSR. A fourth variant, incremental static regeneration, combines the speed of SSG with the freshness of SSR by regenerating static pages in the background at intervals.

StrategyHTML is createdCrawler-friendlinessTypical use
SSRper request on the serverhighdynamic, current content
SSGonce at build timevery highrarely changed content (blog, docs)
CSRin the browser via JavaScriptlowhighly interactive web apps behind a log-in

Why SSR matters for SEO and AI visibility

The biggest practical lever of SSR lies in discoverability. Because the complete HTML is available immediately, search engine bots can capture the content directly without having to wait for script execution, data fetches or rendering delays. This increases the likelihood that pages will be crawled completely and indexed correctly. Googlebot can render JavaScript, but does so in a downstream, more resource-intensive step — which with pure CSR can lead to delays and incomplete indexing. For large sites with a tight crawl budget, this difference can decide whether new content lands in the index promptly or only weeks later.

With AI crawlers, the situation is even more acute. Bots such as GPTBot, ClaudeBot and PerplexityBot generally do not render JavaScript. They read the initial HTML — and nothing else. A pure client-side SPA that only loads its content via JavaScript appears to these bots as an empty page. Anyone who wants to be cited in AI answers can therefore hardly avoid server-rendered or statically generated content. That is one of the reasons why the rendering strategy is today not just a performance question but a visibility question. AI visibility literally begins with the first byte of HTML.

Advantages and disadvantages at a glance

  • Advantage — discoverability: crawlers and AI bots see the complete content immediately.
  • Advantage — perceived loading time: the user sees real content early instead of an empty skeleton.
  • Advantage — weak devices: rendering happens on the server, not on an old smartphone.
  • Advantage — social sharing: preview cards in social networks and messengers need meta tags in the initial HTML.
  • Disadvantage — server load: every request creates computing effort on the server instead of on the client.
  • Disadvantage — complexity: hydration, caching and state handling are more demanding than with pure CSR.
  • Disadvantage — time to first byte: because the server renders first, the first response can come slightly later than with a static file.

SSR in practice: frameworks and Shopware

In the JavaScript ecosystem, frameworks have become established that offer SSR and SSG from a single source. Next.js (based on React) and Nuxt (based on Vue) are the best-known representatives; both allow you to decide per page whether to render on the server, generate statically or work on the client side. Angular also comes with an SSR solution in Angular Universal, and SvelteKit follows the same approach. In e-commerce, the question is particularly relevant: Shopware delivers its storefront server-rendered by default — a structural advantage for SEO and AI visibility that should not be given away lightly. Anyone who rebuilds on a headless approach with their own front end must deliberately plan SSR or SSG back in, otherwise the storefront drops out for crawlers that do not render JavaScript.

A concrete example: a retailer replaces its server-rendered Shopware storefront with a self-built React SPA without SSR. In the browser everything looks perfect, and the conversion tests go well. Weeks later, it becomes apparent that organic traffic is collapsing and the brand is disappearing from AI answers — because the crawlers now only see an empty HTML skeleton. Only retrofitting server-side rendering restores visibility. Such cases are the reason why the rendering decision should be made early and deliberately and not be treated as a mere question of front-end taste.

When the effort is not worthwhile

SSR is not an end in itself. For a pure web application behind a log-in — a dashboard, an internal tool, a configurator — crawler visibility plays no role, because these pages are not supposed to be indexed anyway. Here CSR is often the simpler and cheaper choice, because the complexity of hydration and server-side state disappears. The rule of thumb: public, discoverable content benefits from SSR or SSG, closed application areas rarely do. Anyone who has both in one project can decide per route — that is exactly the strength of modern meta-frameworks.

Frequently asked questions about server-side rendering

What is the difference between SSR and CSR?
With SSR, the server generates the finished HTML before delivering it. With CSR, the server only sends an empty skeleton, and the content is only created in the browser via JavaScript. SSR is considerably friendlier to crawlers.

Do I absolutely need SSR for good SEO?
Not necessarily — SSG also serves the purpose, and Googlebot can render JavaScript. But for dynamic content and especially for AI crawlers that do not execute JavaScript, HTML delivered from the server or statically is the safest route.

What is hydration?
Hydration is the step in which the client-side JavaScript takes over the page already rendered on the server, attaches event handlers and makes it interactive — without rebuilding the visible content.

Is Shopware server-rendered?
Yes. The Shopware storefront is delivered server-rendered by default, which gives it an advantage in SEO and AI visibility.

What does SSR cost compared with CSR?
SSR creates a higher server load because every request is rendered. This often requires caching strategies and more infrastructure. In return, it relieves weak devices and improves discoverability.

Do AI crawlers see a CSR page at all?
Usually not completely. Bots such as GPTBot do not render JavaScript and, with pure CSR, only see the empty HTML skeleton. For AI visibility, HTML delivered from the server or statically is therefore practically mandatory.

Further reading: the Wikipedia overview of server-side rendering and the Next.js documentation on server-side rendering.

Next step

Can AI crawlers see your content at all?

Our free check tests whether AI assistants can read and cite your pages, and shows where JavaScript-only content leaves them blank.

Changelog

  1. · Created · Jan Schumann