If your site uses React, Vue, or Angular with client-side JavaScript rendering for core content, most AI crawlers see only an empty shell — the most common fatal infrastructure issue in GEO practice.
Plain-Language Analogy
You’ve beautifully decorated a showroom with perfectly arranged products. But the door has a special lock — only visitors with a specific key (JavaScript engine) can enter and see the contents.
Regular users’ browsers have this key, so everything works. But AI crawlers don’t — they stand at the door seeing only an empty room. Your showroom doesn’t exist to AI.
Why This Happens
Browsers execute a full pipeline: download HTML → execute JavaScript → render CSS → content appears. Most AI crawlers only complete step one: download HTML.
If your site uses modern frontend frameworks, the initial HTML source may contain only:
<div id="app"></div>
<script src="/js/app.js"></script>
Browsers execute app.js and dynamically generate page content. AI crawlers don’t execute JavaScript — they see an empty div. All your content, carefully optimized Answer Blocks, perfect H2 structure — invisible to AI.
Who’s Affected
Not affected: WordPress (server-side rendered by default), traditional PHP/Python/Java sites, static site generators (Hugo, Jekyll).
Affected: React (Create React App), Vue (default mode), Angular, any Single Page Application (SPA) where all content loads via JavaScript.
Quick Diagnosis (10 Seconds)
- Open Chrome → visit your page
- Press Ctrl+U (View Source) — NOT the F12 Elements panel
- Ctrl+F search for a keyword from your body text
- If you can’t find it — your content is invisible to AI crawlers
The Elements panel shows post-JavaScript DOM; Ctrl+U shows the raw HTML source — the latter is what AI crawlers see.
Solutions
SSR (Server-Side Rendering): React → Next.js, Vue → Nuxt.js. Server returns HTML with content already rendered.
SSG (Static Site Generation): Pre-render all pages to static HTML at build time. Supported by Next.js and Nuxt.js.
Prerendering services: Prerender.io detects crawlers and serves pre-rendered HTML; regular users still get client-side rendering.
Temporary fix: Hard-code critical content (title, first-paragraph Answer Block, Meta Description) directly in initial HTML, independent of JavaScript.
This Is the Highest-Priority GEO Issue
In Get AI to Speak for You: The Definitive Guide to GEO, Chapter 4, JavaScript rendering is flagged as “the most common fatal GEO problem.” Its priority exceeds all content optimization — because if AI crawlers can’t see your content, everything else (Answer Blocks, information density, semantic coverage) is irrelevant.
If you only have time for one thing, do this check first.
Further Reading
- Get AI to Speak for You: The Definitive Guide to GEO, Chapter 4, Sections 4.3 and 4.1
- Free GEOBOK tool: AI Crawlability Detection
