Skip to main content

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

·4 mins
Aggée Kimpiab, founder of Aggée Writes

Written by Aggée Kimpiab

8+ years of SEO experience. Started out machining steel on the factory floor before moving into SEO. Now works with manufacturers, ecommerce brands, and B2B companies on organic growth. Case studies: Lawton Tubes and MoverX.

Googlebot can execute JavaScript. That fact gets repeated so often that a lot of stores now assume JavaScript rendering is a solved problem. Build the storefront in React, Vue, or whatever framework, and Google will figure it out, right?

Not quite. In practice, “can” is doing a lot of work in that sentence. There’s a real gap between “can render JavaScript” and “reliably renders every product page correctly, at scale, on schedule.” That gap 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.

Here’s the practical risk. If a product’s price, availability, description, or core content only appears after client-side JavaScript executes, Google might not pick it up in time. On lower-priority pages deep in a large catalog, it might not get picked up at all.

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. They make sure the first HTML response Googlebot receives already contains the real content, instead of 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, because 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, not without adopting one of them.

If a full SSR migration isn’t realistic in the near term, there’s a middle ground: a prerendering service. It generates and caches static HTML snapshots specifically for crawlers, while human visitors still get the full interactive JavaScript version. Genuinely effective, and it takes considerably less engineering effort than a framework migration.

One implementation detail matters more than any other. 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, and that’s 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. These are 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 unless you go looking for it.

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