Guide

Crawlable HTML vs empty SPA shells

If your marketing site ships a blank root and only fills in after JavaScript, many AI crawlers will see nothing worth citing.

What “empty shell” looks like

  • Root `#app` or `#root` with little or no text content
  • Meaningful copy only appears after hydration
  • Titles/meta may exist while the body is still hollow
  • View-source (or a simple HTTP GET) does not show your product story

Fixes that restore AI readability

  • Server-render or prerender marketing routes
  • Keep the app shell for authenticated dashboards (those can stay noindex)
  • Ensure H1, lede, and key facts exist in the initial HTML
  • Verify with curl or “view source,” not only a logged-in browser

How this shows up in BatSignal

The crawlability audit flags pages that look like empty SPA shells and folds that into content readiness. Pair the fix with solid metadata/JSON-LD once HTML is present.

FAQ

Do AI crawlers execute JavaScript like a browser?

Not reliably. Some systems may render JS, but you should not depend on it for critical marketing content. Prefer HTML that is present in the first response.

Is every React site a problem?

No. SSR, SSG, and prerendering (Next.js, Astro, Nuxt, etc.) can emit full HTML. The failure mode is a client-only shell with empty or placeholder body content.