Content that requires JavaScript
If content only exists after JavaScript runs, crawlers and most AI fetchers never see it. How this scanner detects it without a browser of its own.
What it is
This compares the DOM node count and text length in the HTML a server actually sent against the DOM Google's Lighthouse run produces after rendering the page. When the rendered page has several times more nodes than the raw HTML did, and the raw HTML had very little text to begin with, that's the signature of a client-rendered shell rather than a page with real content.
It skips rather than fails when no Lighthouse run is available, since there's nothing to compare the raw HTML against.
Why it matters
Search crawlers, link-preview generators and most AI fetchers read the HTML a server sends — they don't run the JavaScript that would otherwise fill in a client-rendered page. A site that looks complete in a browser can be functionally empty to every one of those systems, which never see anything past an empty <div id="root">.
The fix is architectural — server-render or statically pre-render the route's initial HTML — rather than a tweak: it's a decision made when a rendering approach is chosen, which is why this check exists to catch it early rather than after a whole site is built one way.
How to fix it
with a reference doc// Use a Server Component, getServerSideProps, or generateStaticParams
// so the route's HTML is rendered on the server, not left empty for
// client JS to fill in.Related checks
3This is one of the 75 checks the scanner runs. See what we check for the full list, every severity weight, and how the score is computed from them.