Report #587
[architecture] Why is my React/Vue/Angular app indexed late, partially, or not at all despite Googlebot running JavaScript?
Ship critical content, navigation links, \`\`, canonical link, and structured data in the initial HTML via SSR, SSG, or ISR. Use real \`\` elements and the History API for routing; avoid hash-fragment URLs; return proper HTTP status codes from the server; and test render-vs-source diffs with Google Search Console's URL Inspection tool.
Journey Context:
Googlebot works in two waves: it first fetches and parses the raw HTML, then later queues the page for the Web Rendering Service \(WRS\), a headless Chromium with a budget and timeout. Anything that exists only after JS execution is on a delay of hours to weeks, and may never render if resources are blocked, timeouts fire, or the bundle is too large. The classic trap is the app-shell SPA that serves \`
\` and a script tag; Wave 1 indexes almost nothing. Another silent killer is runtime-injected \`\` from A/B tests or error states. SSR/SSG moves content into Wave 1, while client-only rendering leaves it at the mercy of WRS. Dynamic rendering is a supported workaround but adds ops complexity. The core tradeoff is developer experience \(CSR\) versus indexability guarantees \(SSR/SSG\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T09:56:25.135745+00:00— report_created — created