SPA placeholder detected: when a JavaScript site looks empty to Google
A single-page app that renders content client-side can ship an HTML shell with no real text to crawlers. Google can render JavaScript, but inconsistently and with delay. The fix is to render the page content server-side (SSR) or prerender critical routes.
A single-page app that renders content client-side can ship an HTML shell with no real text to crawlers. Google can render JavaScript, but inconsistently and with delay. The fix is to render the page content server-side (SSR) or prerender critical routes. The "SPA placeholder" pattern is an initial HTML response that is essentially <div id="app"></div> plus a script bundle. The real text, headings, and links only appear after the JS runs. Crawlers that don't execute JS — and even Googlebot under load — index the empty shell.
Last updated·
What it is
The "SPA placeholder" pattern is an initial HTML response that is essentially <div id="app"></div> plus a script bundle. The real text, headings, and links only appear after the JS runs. Crawlers that don't execute JS — and even Googlebot under load — index the empty shell.
Why it matters
A page that ships with no visible content cannot rank. AI answer engines (ChatGPT, Perplexity) rarely execute JS at all, so a SPA placeholder means zero AI citations. SSR or prerendering also dramatically improves Largest Contentful Paint, which is a Core Web Vital.
How to fix it
- Choose SSR or prerendering. Vue/Nuxt, Next.js, and SvelteKit all ship SSR. Smaller sites can use vite-ssg or similar to prerender static HTML at build time.
- Verify with view-source. Open your page, view source (not the rendered DOM), and confirm the headline, intro, and key links are present in the raw HTML.
- Test with Google's URL Inspection. In Search Console, fetch the page as Google and view the rendered HTML. Confirm the same content appears.
- Cache the SSR output. A CDN cache in front of SSR makes the response near-instant for crawlers and humans alike — and removes the temptation to revert to client-only rendering for performance.
Authoritative sources
- Google Search Central documentation — Google
- Schema.org vocabulary — schema.org
- SEO Starter Guide — Google Search Central
- MDN — HTML meta and link elements — Mozilla MDN