Skip to main content

JavaScript SEO for ecommerce: what Googlebot actually sees on your site

·4 mins

Googlebot can execute JavaScript. That fact gets repeated so often it’s led a lot of stores to assume JavaScript rendering is a solved problem — build the storefront in React, Vue, whatever framework, and Google will figure it out. In practice, “can” is doing a lot of work in that sentence, and the gap between “can render JavaScript” and “reliably renders every product page correctly, at scale, on schedule” is where a meaningful amount of ecommerce content quietly goes missing from Google’s index.

Why this specifically hits ecommerce harder than other sites #

Google’s JavaScript rendering happens in a second pass, separate from and slower than the initial crawl. The first pass indexes whatever HTML the server actually returns; the second, delayed pass renders the JavaScript and picks up anything that appears afterward. That second pass isn’t unlimited — Google allocates rendering resources based on a site’s overall crawl budget, and a large product catalog is exactly the kind of site where that budget gets stretched thin across thousands of pages.

The practical risk: a product’s price, availability, description, or even its core content only appearing after client-side JavaScript executes means that content might not be reliably picked up in time, or at all, on lower-priority pages deep in a large catalog.

Server-side rendering vs. client-side rendering vs. prerendering #

ApproachWhat Googlebot's first pass seesSEO risk
Client-side renderingNear-empty HTML shell, content injected by JS after loadHighest — content depends entirely on the delayed render pass
Server-side renderingFull HTML content, generated on the server per requestLowest — content is present immediately, no render pass needed
Prerendering / static generationPre-built full HTML, served as a static file or cached snapshotLow — same benefit as server-side rendering, often faster to serve

Server-side rendering (SSR) and prerendering both solve the same underlying problem: making sure the first HTML response Googlebot receives already contains the real content, rather than depending on a second, resource-constrained pass to fill it in.

How to check your own site right now #

Step 1

Use Search Console's URL Inspection tool on a handful of product and category pages, spanning different templates. It shows the actual rendered HTML Google's renderer produced — not what you see in a normal browser, but what Google saw.

Step 2

Compare it against the real page in a browser — is the price there? The full description? Reviews? Anything present visually but missing from the rendered HTML is a real gap, not a false alarm.

Step 3

Repeat this after any frontend framework upgrade, not just at launch — a rendering regression introduced by a dependency update is invisible to a normal QA pass, since the page still looks correct in an actual browser.

Fixing it without a full rebuild #

Full server-side rendering usually means real framework-level changes (Next.js, Nuxt, and similar frameworks support this natively; a plain client-side React app typically doesn’t without adopting one of them). Where a full SSR migration isn’t realistic in the near term, a prerendering service — generating and caching static HTML snapshots specifically for crawlers, while human visitors still get the full interactive JavaScript version — is a genuinely effective middle ground, and considerably less engineering effort than a framework migration.

The key implementation detail either way: whatever solution you use, verify it’s serving the same content to Googlebot that a real visitor sees. Serving search engines a different version of a page than visitors get is cloaking, a policy violation — the goal here is making the real content visible sooner, not showing a different page.

Why this matters most on exactly the pages that matter most #

The pages most likely to suffer from rendering delays are the deepest ones in a large catalog — precisely the long-tail product pages that collectively drive a large share of ecommerce organic revenue, even though no single one gets much individual traffic. A rendering problem that only affects your ten best-selling products is bad; one that silently affects the 8,000 products in the long tail is a much bigger, much less visible loss.


Checking rendered vs. visible content on real product pages is a standard early step in any ecommerce SEO audit — it’s one of the highest-leverage technical checks precisely because it’s invisible without specifically looking for it.

Related reading: Headless commerce and SEO · Ecommerce platform migration SEO · Ecommerce SEO services