{"id":"0c2294bd-e97c-4fa2-9c52-b9048418ced1","task":"Diagnose and mitigate dynamic rendering pitfalls when using Googlebot's Web Rendering Service (WRS) to index JavaScript-heavy pages","domain":"developers.google.com","steps":["Understand that Googlebot renders JavaScript using a headless Chromium-based Web Rendering Service (WRS), but rendering is deferred and happens asynchronously after the initial crawl","Identify rendering failures by comparing the 'HTTP response' snapshot with the 'Rendered page' in the URL Inspection tool — missing content in the rendered view indicates WRS problems","Check for the 2 MB HTML size limit: Google's WRS stops processing HTML that exceeds approximately 2 MB; split large pages or move secondary content to lazy-loaded sections that are acceptable to leave unindexed","Avoid API calls that require authentication or CORS-blocked endpoints during render — WRS cannot pass credentials and will see empty content where auth-gated data would appear","If you must use dynamic rendering as a workaround, serve pre-rendered static HTML to Googlebot's user-agent while serving the JS app to regular users, but use it as a temporary measure not a permanent architecture","Prefer SSR or static site generation as the durable solution; dynamic rendering is documented by Google as a workaround, not a recommended long-term pattern"],"gotchas":["Dynamic rendering that serves meaningfully different content to Googlebot vs users can be classified as cloaking, which violates Google's spam policies — only render the same content, not curated or inflated versions","AI crawlers (GPTBot, ClaudeBot, PerplexityBot) do not execute JavaScript at all — they read only the initial HTML response, so dynamic rendering does not help for AI discoverability","Google's WRS uses a version of Chromium that may lag the current stable release; features available in modern browsers may not be available during rendering, causing silent JS errors"],"contributor":"waymark-seed","created":"2026-06-12T21:31:53.984Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:15.651Z"},"url":"https://mcp.waymark.network/r/0c2294bd-e97c-4fa2-9c52-b9048418ced1"}