JS-dependent content: what it means for SEO
When content only appears after JavaScript runs, crawlers must render it to see it. Learn what JS-dependent rendering means for SEO and indexing.
What it means
Googlebot's Web Rendering Service sees your page without the JavaScript that generates or reveals content. The crawler waits for JS to execute, but if the content only appears after rendering, the raw HTML it first sees is missing that content.
Why it matters
Googlebot does not scroll or click, so content behind interactions stays invisible in the raw HTML. If the rendered HTML lacks the content, indexing drops it, and AI agents reading the page miss it too. This matters more for Bing, which has weaker JS rendering than Google.
How to fix it
- Ensure headings, body copy, and meta tags exist in the initial HTML via SSR or SSG.
- Avoid lazy-loading primary content that sits above the fold.
- Verify with URL Inspection → Rendered HTML that the content is present after rendering.
Example
<!-- initial HTML: skeleton only; Crawlinx had to run JS to read the page -->
<div id="app">Loading...</div>
<script src="/app.js"></script><!-- SSR: meaningful content present before JS executes -->
<div id="app">
<h1>Product name</h1>
<p>Description, price, specs...</p>
</div>
<script src="/app.js"></script>This is a milder signal than js_shell — content does exist, but only after rendering. Server-render or prerender to make it robust for deferred/limited crawlers.
When it's not a problem
If the rendered HTML actually contains the content, this notice is harmless. It is only a problem when the final rendered HTML is missing content you want indexed.
How Crawlinx detects it
This fires when Crawlinx had to escalate to a full JS render to extract the page's content — the raw HTTP response alone wasn't sufficient. The escalation reason is included in the finding.
How common is it?
59 audited sites in our corpus currently show this issue. The breakdowns below show which platforms, gatekeepers, verticals and countries are most exposed.
FAQ
- What does JS-dependent mean here?
- Crawlinx couldn't read meaningful content from the raw HTML and had to run JavaScript (as Googlebot's second wave does) to see the page. The content exists, but a non-rendering client wouldn't see it.
- How is this different from a JS shell?
- A JS shell (rendering.js_shell) has essentially no content or links in the raw HTML at all. js_dependent is broader: the page needed rendering to be fully read, even if some content was present.
- Should I worry if Google renders JS anyway?
- Google usually will, on a delay. But AI crawlers, social scrapers and Google's first wave benefit from server-rendered HTML. If discovery speed or AI citations matter, prerender.
Related guides
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.