01 The Rule
Critical content and navigation must be available in the initial HTML response (server-side rendered). JavaScript-rendered content is subject to a separate rendering queue with unpredictable delays. Never hide primary content behind client-side rendering.
02 Rationale
Google's rendering service operates on a separate, resource-constrained pipeline. Pages that require JavaScript rendering may wait days or weeks to be fully indexed. For large sites, relying on client-side rendering means most pages are indexed with incomplete content.
03 Implementation
- Server-side render (SSR) all primary content and navigation
- Use dynamic rendering as a fallback for complex JS applications
- Ensure internal links are crawlable HTML <a href> tags, not JS-triggered navigation
- Test rendering with Google Search Console's URL Inspection tool
- Avoid lazy-loading above-the-fold content
- Pre-render critical pages and serve static HTML to crawlers
04 Common Violations & Consequences
Violation
Primary content loaded via client-side API calls
Consequence
Content invisible until rendering completes — may take days or never happen
Violation
Navigation using JavaScript click handlers instead of <a href>
Consequence
Crawlers can't discover linked pages; internal link graph broken
Violation
Blocking rendering-critical JS in robots.txt
Consequence
Page rendered blank; content deindexed
05 The Fix
Implement server-side rendering for all primary content. Use progressive enhancement — content works without JavaScript, JS enhances interactivity. Verify rendered output matches SSR output using the URL Inspection tool.