intesol.kr
Engineering · 2024.12.10 · 7 min read

React SPA sites are invisible to AI search

Plenty of company websites are built in React — and AI search engines cannot read them properly.

If your website is built as an SPA (single page application) in React, Vue or Angular, read this carefully. There is a strong chance AI search crawlers can barely read your site at all.

How AI crawlers read a site

Crawlers like GPTBot (ChatGPT), PerplexityBot and Claude-Web send an HTTP request to a URL and read the HTML that comes back. They do not execute JavaScript — or if they do, a time limit stops them waiting for an SPA to render.

What happens with a React SPA

When a crawler hits a site built as a React SPA, this is the HTML it receives.

HTML
<!DOCTYPE html>
<html>
  <head><title>My App</title></head>
  <body>
    <div id="root"></div>
    <script src="/static/js/main.abc123.js"></script>
  </body>
</html>

No content. Every line of text, every service description, case study and blog post lives inside the JavaScript bundle. The AI crawler never runs that bundle, so it never reads the content.

How many sites have this problem

About 60% of the company sites Intesol Korea has diagnosed were SPAs, invisible to AI crawlers. In IT and startups that share climbs to 80%. Even teams who say they care about SEO often miss it, because Googlebot does render JavaScript and hides the symptom.

The fix: three options
Option 1 — move to SSG (recommended)

Move to Astro, Next.js in SSG mode, or Gatsby, and generate every page as static HTML at build time. The most complete fix, and page load speed improves sharply too.

Option 2 — add SSR

Use getServerSideProps in Next.js, or Nuxt.js, to render HTML on the server. The right choice when you need live data.

Option 3 — a prerendering service

Services like Prerender.io serve pre-rendered HTML to bots only. Usable as a stopgap, but not a complete fix.

Are you safe if you use Next.js?

Next.js depends on configuration. In SSG mode with getStaticProps or generateStaticParams, you are fine. Lean on client-side data fetching (useEffect plus fetch) and you have exactly the same problem.

How to check right now

Open your site and disable JavaScript (Chrome: DevTools → Settings → Disable JavaScript). If the content disappears, AI crawlers are having the same experience.

BASH
curl -s https://yoursite.com | grep -o '<p[^>]*>[^<]*</p>' | head -5

An empty result means you have the SPA problem.

See it for yourself
Check for free whether AI can see your site
One URL, a 100-point AI visibility diagnostic, report within 24 hours.
Request a free diagnostic →
Contents
How AI crawlers read a site
What happens with a React SPA
How many sites have this problem
The fix: three options
Are you safe if you use Next.js?
How to check right now
Diagnostic for this topic
What does your domain score today?
We apply the twenty line items in this article and compare your citation status across four engines.
Get a free diagnostic →
Intesol Korea · written from measurements on our own domain.