Open Your Site. Right-Click. View Source.
Is your content there?
Or do you see an empty `<div id="root"></div>` and a bunch of JavaScript files?
If it is the latter, you have a rendering problem. And Google might not be seeing your content at all.
The JavaScript Rendering Gap
When you visit a page, your browser downloads the HTML, downloads the JavaScript, executes the JavaScript, and renders the final page. You see the finished product.
Googlebot does this too. But it has to queue your JavaScript for rendering. There is a delay — sometimes hours, sometimes days — between crawling and rendering.
During that gap, Google sees your empty HTML shell. No content. No links. Nothing to index. Google's SEO starter guide barely scratches the surface on this — it is a bigger problem than most people realize.
Client-Side Rendering Is the Worst Offender
Single-page applications (SPAs) built with React, Vue, or Angular that do everything client-side are the biggest risk. The initial HTML is essentially empty. All content is loaded via JavaScript.
Google can render JavaScript. But "can" and "reliably does" are different things.
The Solutions
Server-Side Rendering (SSR). Render the HTML on the server so the initial response contains real content. Next.js, Nuxt, and similar frameworks do this.
Static Site Generation (SSG). Pre-render pages at build time. Fastest option. Works great for content that does not change frequently.
Dynamic rendering. Serve pre-rendered HTML to bots and client-rendered HTML to users. Google has said this is acceptable, but it is a band-aid, not a cure. We go deeper in our dynamic rendering post.
Hybrid approach. SSR for important pages, client-side for interactive elements. This is what most modern frameworks support out of the box.
Test It
Use Google Search Console's URL Inspection tool. Click "Test Live URL." Compare the rendered HTML to what you expect. If content is missing, you have a rendering problem. Check our JavaScript framework comparison to see how different frameworks handle this.
Also check the "View Rendered Page" screenshot. Does it look like what users see?
Track JavaScript rendering checks alongside 112 other tasks at seocheckup.app. Free. No credit card. 30 seconds.