Technical SEOAdvanced

Dynamic rendering

Dynamic rendering serves pre-rendered HTML to crawlers and client-side JavaScript to users. Google now calls it a workaround and not a long-term solution.

Dynamic rendering is a setup where the server detects crawlers by user agent and sends them a pre-rendered, static HTML version of a page, while normal visitors get the client-side rendered app. Google once suggested it for JavaScript-heavy sites, but its documentation now describes it as a workaround and recommends server-side rendering, static rendering or hydration instead.

How it was set up

A middleware layer checked each request's user agent against a list of known bots. Bot requests were routed to a headless browser service, such as Rendertron or a commercial prerender service, which loaded the page, waited for scripts, and returned the resulting HTML. Human visitors bypassed that path entirely.

Why it is discouraged now

Dynamic rendering adds infrastructure that has to be kept in sync with the real app. Cached snapshots go stale, the bot list needs maintenance, and rendering failures show up only for crawlers, so nobody notices them. Google's rendering has also improved, and modern frameworks make server rendering easier, which removes most of the original reasons to use it.

Google has said dynamic rendering is not cloaking as long as the content is the same for bots and users. The risk is drift: if the snapshot shows different content, it starts to look like cloaking.

If you still run it

Treat it as temporary while you move to server or static rendering. In the meantime, compare bot and user versions regularly, monitor snapshot freshness, and include AI crawler user agents if you want them to receive the rendered HTML.

  • Fetch key pages as Googlebot and as a browser and diff the content
  • Check cache expiry so prices and features are not out of date
  • Log prerender failures and alert on them

Example

Retiring a prerender service

Marrowgate, an HR software company, has served bots from a prerender cache since its Angular site launched. An audit finds snapshots up to months old showing retired pricing. The team moves the marketing pages to a framework with server rendering, removes the bot detection middleware, and verifies with URL Inspection that the live HTML matches what users see.

Common mistakes

Letting snapshots go stale

A cached bot version with old content is a quiet indexing problem and can look like cloaking. Set short expiry times and monitor them.

Choosing it for a new build

For a new site, pick server-side or static rendering from the start. Dynamic rendering solves a problem you do not need to create.

Questions

Not by Google's definition, provided bots and users get equivalent content. It becomes a problem when the versions differ in substance.

Know the terms. Now win the searches.

We find the searches your buyers make, then build, publish and improve the pages that win them.