SeAudit
All articles
Technical SEO·8 min·2026-06-20

JavaScript SEO: SSR, SSG, CSR — What Googlebot Actually Sees

Your Next.js rendering mode directly determines what Googlebot and AI bots index. SSR, SSG, or CSR: here's what you need to know to avoid being invisible.

Minimal tech illustration showing a server sending pre-rendered HTML to an indexing robot, comparing server-side vs client-side rendering, clean vector design on beige background

JavaScript SEO in 2026: SSR, SSG, CSR — What Googlebot and AI Bots Actually See

JavaScript rendering has become the number one blind spot in technical SEO. You ship a modern Next.js app, everything looks perfect in your browser, yet Googlebot sees an empty page. Even worse: the AI crawlers feeding ChatGPT, Perplexity, and Claude don't execute JS at all — your content is literally invisible to them.

In 2026, with the rise of AI Overviews and generative search engines, this invisibility has a direct cost on growth. No server rendering = no indexation = no AI citations. That's why your app's rendering mode is no longer just a technical choice — it's an SEO choice.


The 3 Rendering Modes: CSR, SSR, SSG

CSR — Client-Side Rendering

All rendering happens in the browser. The server sends a near-empty HTML shell with a JS bundle. Content only appears after JavaScript executes on the client side.

SEO problem: Googlebot must queue your page for rendering before seeing any content. AI bots don't execute JS at all.

SSR — Server-Side Rendering

HTML is generated on-the-fly server-side on every request. The bot receives a complete page immediately.

Advantage: fresh content, reliable indexation. Disadvantage: higher latency, heavier infrastructure.

SSG — Static Site Generation

HTML is pre-generated at build time. The bot receives a static file served from CDN.

Advantage: maximum speed, immediate indexation, perfect for AI bots. Disadvantage: content can go stale without revalidation.

Comparison Table

CriteriaCSRSSRSSG
Indexation speedSlow (render queue)FastImmediate
Core Web VitalsVariable (often poor)GoodExcellent
AI crawler supportVery lowGoodExcellent
Infrastructure complexityLowHighLow
Dynamic contentNativeNativeLimited (ISR)
SEO recommendationAvoidAcceptablePriority

How Googlebot Renders JavaScript

Google uses a system called WRS (Web Rendering Service). Here's what happens when Googlebot crawls a JS page:

  1. HTTP Fetch — Googlebot downloads the raw HTML of your page.
  2. Queue — If the raw HTML doesn't contain content, the page is placed in a JS rendering queue. This queue can introduce a delay of hours to several days.
  3. Chromium Rendering — Google executes the JavaScript in a headless Chromium engine to obtain the final DOM.
  4. Indexation — The rendered content is finally indexed.

The problem? That delay. On a CSR site, your content can take days to be indexed after publication. And if you update content frequently, it will almost always lag behind in the index.

How to test: in Google Search Console, go to URL Inspection → enter your URL → click "Test Live URL". You'll see the HTML version Google sees after rendering. If your content is missing, you have a CSR problem.

You can also simulate Googlebot with curl:

curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://yoursite.com/page

If the HTML response doesn't contain your main text, Googlebot doesn't see it either.


What AI Crawlers Actually See

This is where it gets critical for your GEO visibility.

GPTBot, ClaudeBot, PerplexityBot, Bingbot — in the vast majority of cases, these robots perform a simple HTTP fetch without executing JavaScript. They read the raw HTML the server returns. Full stop.

If you're using CSR (vanilla React, Vue without SSR, Nuxt/Next in client-only mode), here's what these bots retrieve:

<!DOCTYPE html>
<html>
  <head><title>My SaaS</title></head>
  <body>
    <div id="root"></div>
    <script src="/bundle.js"></script>
  </body>
</html>

Content = zero. Your feature pages, comparisons, blog articles — all invisible for AI training and generative responses.

Direct consequence: you won't appear in AI Overviews, Perplexity responses, or ChatGPT citations, even if you have outstanding content.


Next.js: The Key Options for SEO

Next.js is the go-to React framework today. Here are the parameters that directly impact your rendering and SEO.

App Router vs Pages Router

  • Pages Router: SSG by default with getStaticProps, SSR with getServerSideProps. Predictable behavior.
  • App Router: Server Components by default (excellent for SEO). But watch out for unnecessary 'use client' directives that push things back to CSR.

The Critical Parameters

generateStaticParams: generates dynamic pages as static at build time. Essential for your /blog/[slug] routes.

revalidate: in ISR (Incremental Static Regeneration), revalidates your page every N seconds. A good compromise between freshness and performance.

dynamic = 'force-static': forces static rendering even for dynamic routes. Use it when your content doesn't depend on the user session.

dynamic = 'force-dynamic': forces SSR on every request. Necessary for pages with real-time user data, but less optimal for SEO.

Partial Pre-Rendering (PPR): available since Next.js 14+, PPR lets you pre-render the static shell and inject dynamic parts afterward. Excellent compromise for mixed pages.


Diagnosing a Rendering Problem

Here's the 4-step protocol.

1. Curl with bot user-agent

curl -A "Googlebot" https://yoursite.com/my-page | grep -i "my key content"

If the command returns nothing, your content isn't in the server HTML.

2. URL Inspection in GSC

Google Search Console → URL Inspection → "Test Live URL". Compare the rendered HTML with what you see in your browser.

3. Check the Cache header

curl -I https://yoursite.com/my-page

A x-vercel-cache: HIT or cf-cache-status: HIT header indicates the CDN is serving pre-rendered HTML. Good sign.

4. Screaming Frog with JS disabled

In Screaming Frog → Configuration → Spider → Rendering → select "None (HTML Only)". Crawl your site. If the word count on pages drops drastically, you have CSR content.

Get your /100 score on seaudit.fr for an automated audit of your rendering and GEO performance.


Checklist: 8 Points to Verify

  • SSR or SSG enabled — verify that your critical pages (home, blog, features) are not in pure CSR.
  • Raw HTML contains the content — run a curl without JS and read the result.
  • generateStaticParams on all dynamic routes — every [slug] must be pre-generated.
  • No unnecessary 'use client' — every Server Component by default in App Router is an SEO win.
  • ISR configured on pages that changerevalidate: 3600 for hourly refresh.
  • Core Web Vitals in the green — CDN-served SSG is almost always faster. Check LCP < 2.5s.
  • GPTBot and ClaudeBot not blocked in robots.txt — if you want AI citations, let these bots through.
  • URL Inspection GSC test after every major deploy — confirm content is indexable.

See an example rendering report to understand what the audit detects.


CTA

If you want to know exactly what Googlebot and AI bots see on your site, get your /100 score in 2 minutes. The audit detects pages in pure CSR, analyzes your HTML rendering, checks your Next.js configuration, and measures your visibility in AI search engines.

Want the full report with prioritized recommendations? Download the PDF report.


Key Takeaways

CSR = invisible to AI bots. If you use React without SSR, your pages don't exist for ChatGPT, Perplexity, or AI Overviews.

SSG is the best default SEO choice. Static HTML on CDN = immediate indexation + excellent Core Web Vitals + native AI support.

Next.js App Router is good for SEO — as long as you don't overuse client components. Server Components render server-side by default, which is exactly what you want.

Google's WRS introduces a delay. Even Googlebot takes time to render JS. With SSG, that delay disappears.

Diagnose before you optimize. A simple curl -A "Googlebot" tells you in 5 seconds if you have a problem. Run that test now.


All SEO and GEO articles on seaudit.fr

Stay visible in AI and on Google — 1 quick-win a week.

Every week, 1 tactical SEO + GEO article + 1 quick-win to apply on your site this week. No fluff, no aggressive cross-sell.

No spam. Unsubscribe in 1 click. GDPR ✓