The discipline of making JavaScript-rendered pages crawlable and indexable. The number-one technical risk for SPA-based ecommerce stores.
JavaScript SEO in plain English
Search engines have to execute JavaScript to see content that's added to the page after initial HTML loads. Google does this via a headless Chromium renderer, but it's not free β rendering costs Google resources, so JS-heavy pages get rendered later, sometimes days after the initial crawl, and sometimes not at all if the JS errors out.
The two patterns that work: server-side rendering (SSR) returns the full HTML on the first request, and static generation pre-renders pages at build time. Both deliver crawlable HTML to Googlebot's first fetch. The pattern that fails: client-side rendering (CSR) where the initial HTML is essentially an empty <div id="root"></div> and all content is built by JS after page load. Single-page apps built with React, Vue, or Angular default to CSR and need explicit SSR setup to be SEO-friendly.
Specific things to watch on JS-rendered ecommerce stores: product data that loads via fetch() after page render (Googlebot may not wait long enough), prices that update via API call after initial load (the first-render version is what gets indexed), reviews that load on scroll (won't be triggered by a crawler), navigation menus that only render after JS executes (breaks crawl path to deep pages), and any structured data injected dynamically (often gets missed entirely).
Diagnostic flow: use Google Search Console's URL Inspection tool and check the rendered HTML and screenshot. If your content is missing from rendered HTML, Google can't see it. Validate with Chrome DevTools' "Disable JavaScript" toggle β view your page that way and you'll see exactly what crawlers see on first fetch.
Why javascript seo matters for ecommerce
Most modern ecommerce platforms (Shopify, BigCommerce, WooCommerce) render server-side by default. But custom-built storefronts, headless commerce setups using Next.js, and any front-end that wraps a CMS in a SPA need explicit SSR. Every dollar spent on engineering a beautiful interactive storefront is wasted if Googlebot sees a blank shell. The single most common reason a $5M-revenue store is invisible to Google is bad JS SEO. Confirm your render strategy in the first month of any new store, and re-confirm after any major frontend rewrite.