LEARN
Do Not Put Key Content Behind Client-Side Rendering

IN ONE SENTENCE
A crawler reads the HTML you return; content and structured data injected by scripts do not exist for crawlers that do not execute JavaScript.
A crawler reads the HTML the server returns. If key content only appears after the browser runs scripts, a crawler that does not run scripts receives nothing. The same applies to structured data injected by front-end code.
OUR POSITION
There is no trade-off here: body copy and structured data both belong in server-rendered HTML. Front-end framework defaults frequently fail this, so verify rather than assume.
The two most common failures
Body copy rendered client-side: the page looks right in a browser while `curl` returns only a shell.
Structured data injected by script: it exists only in the post-execution DOM, with no corresponding tag in the returned HTML. This one hides well — browser-based structured data testing tools execute scripts and see it, while crawlers do not.
A one-line self-check
Request the page without executing scripts and look for two things in the response: a verbatim sentence from the body copy, and `application/ld+json`. Both have to be present to pass.
On multilingual, multi-domain sites, check each domain — the same code can behave differently per deployment.
How this differs from 'rewriting for AI'
Putting content in server-rendered HTML is basic accessibility, not AI-specific rewriting.
Google's guidance lists AI-specific rewrites and AI-oriented chunking as unnecessary, but crawlable HTML is a different matter — it is the precondition for any retrieval at all.
Sources
- [1]Optimizing your website for generative AI features on Google Search.Google Search Central.2026-05-15
Updated 2026-08-10