AI crawlers like GPTBot, ClaudeBot, and PerplexityBot work like early Googlebot did, they fetch raw HTML and move on. If your site renders content via JavaScript on the client, AI search engines see an empty shell. Here is how to fix it.
Why JavaScript-First Sites Are an AI Search Blind Spot
Google spent years learning to render JavaScript, deploying a full headless Chrome pipeline to execute client-side code during indexation. AI crawlers have not made the same investment. In Vercel’s analysis of AI crawler traffic, the crawlers behind ChatGPT and Claude fetched JavaScript files but did not execute them. Content that only appears after React components hydrate or API calls return is never seen. Google’s Gemini is the exception because it uses Googlebot’s rendering infrastructure.
If your site is built with a client-side rendered (CSR) framework, a React SPA, an Angular app with no SSR, a Vue.js single-page application, AI crawlers see the same thing they would have seen years ago: an HTML shell with a <div id="root"></div> and a script tag. Your product descriptions, your service pages, your blog content, your FAQs, all invisible. Your site is not in the AI citation pool because AI cannot read it.
⚠️ The CSR Visibility Test
View your site’s page source (Ctrl+U / Cmd+U in browser) without JavaScript. Everything you see in that raw HTML is what AI crawlers index. If your main content, product descriptions, blog text, FAQs, service copy, does not appear in the raw HTML, AI crawlers cannot read it. This is your AI visibility gap.
The Three Rendering Approaches and Their AI Visibility
| Approach | How It Works | AI Crawlability | Best For |
|---|---|---|---|
| CSR (Client-Side Rendering) | HTML shell delivered; JS executes in browser; content renders client-side | Poor, JS not executed | Apps requiring real-time data, authenticated dashboards |
| SSR (Server-Side Rendering) | Full HTML rendered on server per request; sent to browser already complete | Good, full content in first byte | Content sites, ecommerce, marketing pages, blogs |
| SSG (Static Site Generation) | HTML generated at build time; static files served from CDN | Excellent, fastest crawl | Marketing sites, blogs, documentation |
| ISR (Incremental Static Regeneration) | Static pages regenerated on schedule or on-demand | Very Good, static-like delivery | Large ecommerce catalogs, news sites |
| Prerendering | JavaScript site pre-executed; static HTML snapshots served to crawlers | Good, depends on implementation | Existing CSR sites that can’t be rebuilt |
Fixing the Problem: Options by Situation
If you’re building new: Use Next.js or Nuxt with SSR/SSG
Next.js (React) and Nuxt (Vue) provide SSR and SSG out of the box. Every page route can be configured as: getStaticProps (SSG, best for content that doesn’t change per request), getServerSideProps (SSR, for personalized or frequently updated content), or ISR with revalidate (for large catalogs). The default Next.js configuration generates server-rendered HTML for every public route, making your content readable by AI crawlers from the first request (see the Next.js documentation). Compare agencies in our ranking of the top Next.js development companies.
If you have an existing React/Vue SPA: Add prerendering
Prerendering services (Prerender.io, Rendertron) intercept crawler requests, execute JavaScript in a headless browser, and serve the resulting static HTML to crawlers while continuing to serve the JavaScript bundle to real users. This is the fastest path to AI crawlability for existing CSR applications without a full rebuild. Google describes dynamic rendering as a workaround rather than a long-term solution, so treat prerendering as a bridge to SSR or SSG, and always serve crawlers the same content users see. Detect crawler user agents (GPTBot, ClaudeBot, Googlebot) and serve prerendered HTML to them; serve the normal SPA to regular users.
If you’re on WordPress: Verify your theme outputs clean HTML
Most WordPress themes generate server-rendered HTML by default, but page builders (Elementor, Divi, Beaver Builder) that rely on JavaScript for rendering can cause partial CSR issues. Test your WordPress pages with the page source view test. If content appears in raw HTML, you’re fine. If content requires JavaScript to render, your page builder is causing AI visibility gaps. Our WordPress development service can replace JavaScript-dependent builders with clean, server-rendered themes.
What AI Crawlers Actually Need to See
- All primary content text in the raw HTML response, product descriptions, FAQs, blog body copy, service descriptions
- Heading structure (H1, H2, H3) present in the HTML, not injected by JavaScript after load
- Meta title and description in <head>, not dynamically set by React Helmet or similar after JS execution
- Schema markup (Article, FAQPage, Product, Organization) in the HTML, not injected client-side
- Internal links in <a href> tags, not dynamically generated by JavaScript routing
- Alt text on images in the HTML src attributes, not set via JavaScript after image load
Checking Your AI Crawler Access
After fixing rendering, verify AI crawlers can actually access your site. Check your robots.txt, if you block OAI-SearchBot, Claude-SearchBot, or PerplexityBot (the search-focused crawlers), those AI search engines are explicitly excluded even if your rendering is correct. The next post in this series covers AI crawler robots.txt configuration in detail.
Server-Side Rendering & AI Search, FAQs
Technical questions about JavaScript rendering and AI search visibility.
Need a Technical GEO Audit for Your JavaScript Site?
A2Z Dev Center builds AEO and GEO content strategies for B2B and eCommerce brands through our web app development services, AI visibility audits, content optimization, technical GEO setup, and ongoing citation tracking.
Get Technical GEO Review →Talk to a subject-matter expert
Web development, SEO, or digital marketing — tell us about your project and we'll get back within one business day. No obligation.
- Free scope & strategy session
- A senior specialist, not a sales rep
- Your details stay confidential