Client-Side vs Server-Side Rendering for AI Crawlers
99Visibility Research · Updated October 21, 2026 · 6 min read
Short answer
Server-side rendering puts your content in the HTML the server sends. Client-side rendering builds it in the browser with JavaScript. Googlebot renders JavaScript, so it usually sees both. The ChatGPT and Claude crawlers fetch JavaScript files but do not execute them, according to Vercel's crawler study, so content that exists only after JavaScript runs can be missing for them. Put the facts that matter in the initial HTML.
Key takeaways
- Vercel found that ChatGPT and Claude crawlers download JavaScript files but do not execute them, so they cannot read client-side rendered content.
- Googlebot renders JavaScript, which means a page can look complete in Google and nearly empty to AI crawlers.
- The decisive check is a diff between the raw HTML and the rendered DOM for the pages that carry your prices, products and key claims.
- Server-side rendering removes a block. It makes your content exist for AI crawlers, but it does not guarantee retrieval or citation.
- Vercel sells server-side rendering hosting, and the finding has since been replicated independently, so the incentive is real and the result still holds.
What each approach sends to a crawler
The difference is where the page gets built.
- Server-side rendering (SSR) builds the HTML on the server. The crawler receives your headings, copy, prices and links in the first response.
- Client-side rendering (CSR) sends a thin HTML shell plus JavaScript. The browser runs the script, fetches data and then writes the content into the page.
- Static generation and prerendering build the HTML ahead of time. To a crawler, the result looks the same as SSR.
For a human with a browser, all three end up identical. For a crawler that does not run JavaScript, a client-side rendered page can be little more than an empty container. A server-side rendered page arrives with the text already in it.
Many modern frameworks mix the two. A React or Next.js site can server-render the layout and still load the pricing table, reviews or product specs on the client. That mixed case is where most sites lose content without noticing.
Why AI crawlers and Googlebot see different pages
Vercel analysed AI crawler traffic and reported that ChatGPT and Claude crawlers do fetch JavaScript files (11.50% of ChatGPT requests and 23.84% of Claude requests), but they don't execute them. Its conclusion was blunt: they can't read client-side rendered content. The study was published in December 2024 and updated in February 2025. You can read the details in our summary of Vercel's AI crawler study.
Independent testing in June 2026 found the same pattern across a wider set: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Meta-ExternalAgent and Bytespider did not render JavaScript. Googlebot and AppleBot are the exceptions. Both render pages.
That split creates a blind spot. Google documents how it renders JavaScript as part of crawling, so your rankings and Search Console can look healthy. Meanwhile, the crawler behind ChatGPT search (OAI-SearchBot, per OpenAI's crawler docs) may receive a page with no product names and no prices.
Two honest caveats
- Vercel sells SSR hosting, and its sample was one month of traffic on nextjs.org, a site skewed toward Next.js. Microsoft Copilot was excluded because it lacked a unique user agent. The independent replication is why this finding still stands.
- Crawler behaviour changes. Treat this as true as of October 2026 and recheck it when engines update their crawlers.
Client-side vs server-side rendering compared
| Client-side rendering | Server-side rendering or prerendering | |
|---|---|---|
| What the first HTML response holds | A shell and script tags | The page content as text |
| Googlebot (Google Search, AI Overviews, AI Mode) | Usually sees content after rendering | Sees content immediately |
| ChatGPT, Claude, Perplexity and Meta crawlers (as of October 2026) | Can miss anything written by JavaScript | See the content in the HTML |
| Content behind tabs, accordions or "load more" | Often missing if fetched on interaction | Present if it is in the initial HTML |
| Main risk | Silent gaps for AI crawlers while Google looks fine | Server cost and build complexity |
| Best fit | Logged-in apps, dashboards, user-specific views | Pricing, product, about, docs and comparison pages |
One nuance from Vercel: JSON or React Server Components data embedded in the initial HTML response may still be picked up. Data that loads later, after the page boots, will not be.
How to check your own pages
You do not need to guess. Compare what a non-rendering crawler gets with what a browser shows.
- List the pages that carry facts. Pricing, product and plan pages, about, locations, integrations and any page answering a buyer question.
- Fetch the raw HTML. Request the URL with JavaScript disabled, or view the page source rather than the inspected DOM. This approximates what most AI crawlers receive.
- Render the same URL. Load it in a headless browser and extract the visible text after scripts finish.
- Diff the two. Note every heading, price, product name, entity mention and claim that exists only in the rendered version.
- Check interaction content. Open tabs, accordions and infinite scroll. If their text loads by fetch on click, it is missing from the raw HTML too.
- Check your directives. A robots meta tag injected by JavaScript may not be seen by crawlers that skip scripts.
Our raw HTML vs rendered DOM check walks through each step, and the guide to finding facts hidden behind JavaScript covers the interaction cases. For a quick first look at a single URL, use the free JavaScript rendering check.
Rendering is only one gate. A page can be fully server-rendered and still blocked by a firewall or CDN that returns 403 to AI crawlers. 99Visibility's AI Crawler Checker requests a page as each AI crawler and shows which ones get turned away.
What fixing rendering does and does not do
Server-side rendering is an access fix. It decides whether your content exists in what the crawler stores. It does not decide whether an engine retrieves your page for a given question, or whether the model cites it.
The four stages make this clear:
- Parametric: what a model learned in training. Rendering changes nothing here this quarter.
- Access: whether a crawler can fetch and read the page. This is where SSR works.
- Retrieval: whether your page enters the model's context for a query. The engine controls this.
- Generation: which retrieved pages get used and cited. The model controls this.
A critical survey of 45 GEO studies (arXiv, July 2026) found no technique with a stable, cross-platform causal effect on discoverability. So expect SSR to remove a block, not to deliver a number. Our answer on whether SSR increases AI citations goes further.
One on-page point has positive support: a specific fact (a price, a number, a one-line definition) on a page that can be fetched gives an engine a sentence it can quote. That only works if the fact is in the HTML the crawler reads.
Which to use when
Use this as the decision rule.
- Server-render or prerender any page that states facts you want AI engines to get right: prices, plans, product names, specs, locations, founding details and comparison pages.
- Keep client-side rendering for logged-in areas, dashboards, carts and anything personalised. AI crawlers have no reason to read those.
- Use a hybrid when a framework makes full SSR costly. Server-render the core facts and let interactive widgets hydrate on the client.
- Don't prioritise SSR for Google alone. Googlebot renders, so Google surfaces are rarely the reason to switch. See whether AI Overviews need server-side rendering for the Google-specific view.
Start with the diff on your five most important pages. If key facts appear only after hydration, move them into the initial HTML first, then widen the rollout.
Frequently asked questions
Can ChatGPT read a website built with React?
It depends on how the React site renders. If the content is server-rendered or prerendered, the HTML already holds the text and ChatGPT's crawlers can read it. If the content only appears after JavaScript runs in the browser, Vercel's study found ChatGPT crawlers fetch the scripts but do not execute them. Check the raw HTML for your key facts to know which case you are in.
Does Googlebot need server-side rendering?
Generally no. Googlebot renders JavaScript, so client-side content is usually visible to Google Search, AI Overviews and AI Mode. Google states that to appear as a supporting link in AI Overviews or AI Mode, a page must be indexed and eligible to show with a snippet, with no additional technical requirements. SSR still helps, but the strongest case for it is non-Google AI crawlers.
Will adding schema markup fix a client-side rendering problem?
No. Schema does not put missing content into the HTML, and it is not a lever for AI answers. Google says structured data isn't required for generative AI search, and an Ahrefs matched-control study found AI Overview citations fell 4.6% after pages added schema. If your facts load through JavaScript, the fix is rendering them in the initial HTML.
Is the Vercel finding trustworthy given Vercel sells SSR hosting?
The incentive is real, and the sample was limited: one month of traffic on nextjs.org, with Microsoft Copilot excluded. The finding has since been replicated independently, with June 2026 testing showing the main ChatGPT, Claude, Perplexity and Meta crawlers did not render JavaScript. That replication is why the claim holds, not the vendor's word alone.
Does prerendering count as server-side rendering for AI crawlers?
For crawlers, yes. Prerendering and static generation build the HTML before the request, so the crawler receives the same text a server-rendered page would deliver. What matters is whether your key facts are in the first HTML response. Run the raw HTML versus rendered DOM diff on prerendered pages too, because dynamic sections can still load on the client.
Sources
- The rise of the AI crawler - Vercel
- Understand JavaScript SEO Basics
- AI Features and Your Website
- Overview of OpenAI Crawlers
- [2607.14035] Optimizing Visibility in Generative Engines: A Critical Survey of Generative Engine Optimization (2023-2026)
- We Tracked 1,885 Pages Adding Schema. AI Citations Barely Moved.
This page is AI-assisted. It was written from a verified evidence base and checked against our editorial policy. Engine behaviour changes often; facts are as of October 21, 2026.