JavaScript Rendering and AI Crawlers
Why JavaScript-heavy sites are invisible to AI crawlers and what rendering strategies (SSR, SSG, ISR) make your content accessible.
The JavaScript problem
Modern web development loves JavaScript frameworks — React, Next.js, Vue, Nuxt, Angular, Svelte. They create fast, interactive user experiences. But they've also created a massive blind spot: most AI crawlers cannot execute JavaScript.
When GPTBot, ClaudeBot, or PerplexityBot request your page, they get the raw HTML response from your server. If that HTML is just a skeleton with a <script> tag, the crawler sees an empty page. Your brilliant content might as well not exist.
Rendering strategies explained
| Strategy | How it works | AI visible? |
|---|---|---|
| CSR (Client-Side Rendering) | Browser downloads empty HTML + JS bundle, JS builds the DOM | ❌ No |
| SSR (Server-Side Rendering) | Server runs JS and sends fully-rendered HTML on each request | ✅ Yes |
| SSG (Static Site Generation) | HTML is pre-built at deploy time, served as static files | ✅ Yes |
| ISR (Incremental Static Regeneration) | Like SSG but pages regenerate after a set interval | ✅ Yes |
| Hybrid | Some pages SSR/SSG, others CSR — depends on route | ⚠️ Varies |
How to tell what your site uses
- View Page Source (not Inspect Element) —
Ctrl+UorCmd+Option+U. If you see your actual content in the HTML, you're server-rendered. If you see an empty<div>and script tags, you're client-rendered. - Disable JavaScript in your browser's DevTools and reload. If the page goes blank, it's CSR.
- Use GenReady — our report fetches your page exactly like an AI crawler would and shows you what's visible vs. what's hidden.
Common framework defaults
- Create React App — CSR only (❌ invisible to AI)
- Next.js — SSR/SSG by default (✅ but check each route)
- Gatsby — SSG (✅ visible)
- Nuxt — SSR by default (✅ visible)
- Angular (standard) — CSR only (❌ invisible)
- Angular Universal — SSR (✅ visible)
- SvelteKit — SSR by default (✅ visible)
- WordPress — Server-rendered PHP (✅ visible, but heavy JS themes can break it)
💡 The fastest fix
If you're on a CSR framework like Create React App, the fastest path to AI visibility is migrating to Next.js or Nuxt with SSR enabled. If that's not feasible, consider a pre-rendering service that generates static HTML snapshots for crawlers.
