Fixing JavaScript-Rendered Content

Last updated: June 24, 2026

Most AI crawlers fetch raw HTML and stop. They don't wait for React, Vue, or Angular to render. If your headline, answer, and main copy are injected by client-side JavaScript, the crawler sees an empty shell and you're invisible. This article explains the problem and the fix.

Why JS-rendered content breaks AI visibility

Crawlers like GPTBot and PerplexityBot have budget caps and timeout limits. They're fast, not thorough. They will not:

  • Wait several seconds for your JavaScript framework to hydrate

  • Execute a third-party script to pull hero copy from a CMS

  • Follow infinite scroll to load the rest of the page

If the content isn't in the raw HTML, it doesn't exist as far as the crawler is concerned.

Rendering strategies, ranked

Strategy

AI-friendly?

Notes

Static HTML

Best

Every byte is in the source (Gatsby, Astro, plain HTML)

Server-Side Rendering (SSR)

Best

Next.js, Nuxt, SvelteKit. HTML renders on the server

Static Site Generation (SSG)

Best

Pre-rendered at build time

Partial pre-rendering / ISR

Good

Next.js ISR, Vercel Edge, fresh and pre-rendered

Client-Side Rendering (CSR)

Bad

Pure SPA; only the shell is in source, crawlers see nothing

Dynamic Rendering (old)

Deprecated

Google stopped recommending it; skip

If you're on CSR, move to SSR or SSG. For most React apps this is a Next.js migration or adding server-side rendering to critical routes. For Vue, use Nuxt; for Angular, use Universal.

The "critical content in source" rule

You don't need to server-render the whole site. You need the critical content in the raw HTML:

  • The H1 and all H2/H3 headings (semantic HTLM hierarchy)

  • The BLUF (the first 40–80 words that answer the target prompt)

  • Main body copy (pros/cons, tables, data points)

  • Author block and "Last updated" date

  • All JSON-LD schema

  • Question-format headers

Interactive widgets, chat bubbles, and comment threads are fine to leave client-side. AI crawlers don't care about them.

Page speed as a crawl-budget signal

Slow pages get crawled less often. A Largest Contentful Paint (LCP) over 4 seconds on mobile is a warning. Core Web Vitals aren't a direct ranking factor for AI engines, but they proxy for crawl reliability. Keep LCP under 2.5 seconds on your top pages and that's enough.

Do this now

Run Page Audit V2 on your priority page. If your H1 and main copy aren't in the raw source, file a ticket to move the critical content to SSR or SSG.

Related Articles

  • What Is an SEO Gap?

  • Fixing Crawlability for AI Engines

  • Adding JSON-LD Schema for AI Visibility

  • Making Your Content Chunkable for RAG