GEO-007·Issue 01·Technical Foundation·7 / 132

Can AI Render Your Store?

Most AI crawlers do not run JavaScript, so a client-rendered storefront can reach the model as an empty shell. Three no-code tests and a field-first fix.

5 min readGEOTechnical Foundationcross-border

Issue focusThe Entry Point Shift: How AI Search Rewires Global E-commerce Traffic

On a Monday morning, a cross-border team selling countertop ice makers into the US asks a chat assistant which machine fits a small apartment for under $300. The answer names their model, then adds: price and warranty details were not available on the product page. The operator opens the PDP; the price sits in the hero and the warranty is one tab down. The engineer hits View Source and finds <div id="root"></div> and a script bundle. Customer and crawler are on the same URL and not the same page.

Client-side rendering never looks broken to a human, yet it hands crawlers an empty shell, so rendering is less a performance question than whether your product exists to the model.

Two pages, one URL

A browser builds your storefront in stages: HTML, JavaScript, API calls, DOM. Most crawlers stop after stage one.

As of January 2026, public crawler docs describe user agents, purpose, and robots.txt rules; they rarely promise JavaScript execution. Google is the exception in kind, not degree. Googlebot renders, but as a queued second pass with its own budget, and Google’s JavaScript SEO guidance still warns against depending on it for primary content. Google-Extended is a use control, not a second crawler; the fetch is still Googlebot.

So “Google can render” does not generalize. The four entry points pull data differently, as the map of AI search entry points shows, but each starts with the same HTML.

Failure pointWhat the crawler gets
Homepage and PDPs shipped as a single-page appA root div and a script tag
Price, stock, shipping, warranty injected by APIEverything except those fields
Specs or reviews behind a tab or scrollOnly what loaded before the click
Region or currency chosen by browser detectionA redirect, or the default market’s copy
WAF tuned for human browsersA 403 or challenge page, not a shell

The question is not whether your stack can render, but whether price, stock, shipping, and returns exist in the first HTML response. Fields that appear only after hydration are missing for most AI crawlers.

Three tests that need no code

Run these in order of cost; an afternoon covers ten URLs.

TestHowWhat to look forHow to read it
View sourceOn a PDP, Ctrl+U (not Inspect), then search price, SKU, warrantyWhether those strings exist in the sourceIf absent, they are absent; the rendered DOM cannot testify
JavaScript offDisable it in DevTools, reload a category, a PDP, and a policy pageBody copy, specs, shipping, returnsNav and footer alone means a white page; a broken cart is fine, missing copy is not
Raw responsecurl -sL <url> -o page.html; check robots.txt at the same timeBytes, body length, status, fieldsNormal bytes with a tiny body means an app shell; a 403 means the edge, not the framework

View source is the only source of truth: what is in it is what a crawler can take. JavaScript-off persuades the operator; the raw response gives engineering a date. If the edge is the problem, start with the AI crawler allowlist.

Choose rendering by field, not by framework

The criterion is not what your team knows; it is which fields must appear in the first HTML response.

ApproachFitsCostVerdict
Client-side onlyLogged-in tools, adminFields invisible to AIKeep it off public pages
Static (SSG/ISR)Small catalogs, minute-level lagBuild plumbingPolicy, category, and guide pages first
Server renderingLarge catalogs, regional pricing, tight stockTTFB, cache costCore PDPs only
Dynamic renderingLegacy stacks, as a bridgeDOM drift, UA misfiresSet a sunset date
Static shell with inlined fieldsEvery storefront, as a floorDefault vs live conflictThe realistic compromise; do this first

This is technical foundation work, and it is four steps with an owner and a test:

  • Pick ten URLs: two category pages, five PDPs, three policy pages. Owner: growth. Pass: top categories and post-purchase questions covered.
  • Build a field sheet: name, price, stock, specs, shipping, returns, warranty; one column per URL. Owner: growth plus front end. Pass: every cell checked against source.
  • Change the pipeline in that order: static first, then server rendering or inlined fields, dynamic rendering as fallback. Owner: engineering. Pass: a no-JS snapshot shows all four fields.
  • Install a regression: a no-JS fetch in CI or a weekly crawl that alerts on a missing field. Owner: engineering plus growth. Pass: a script, not a memory.

Markup is not a substitute for copy: a price missing from both is one gap in what a product looks like inside an AI answer.

Example: a PDP with no price in the HTML

Example (hypothetical; illustrates the pattern, not any real site’s traffic). A home-appliance DTC store runs its PDPs on a JavaScript framework. With JavaScript off, the page holds the store name, navigation, and a copyright line; price, stock, and warranty live in an API response.

The fix is three moves, not a rewrite. The server outputs the title, key specs, and an 80–120 word summary. Price, stock status, and a last-updated timestamp are inlined as text or JSON-LD. The client hydrates and overwrites with live values. Accept the change only when the fields survive with JavaScript off. If they still do not appear, suspect CDN cache, geo redirects, and bot rules, in that order.

Where this breaks

Marketplace sellers should stop here. Platforms render their own templates; your levers are listings and feeds, and SSR spends effort on a page you do not control.

Private pages should stay private. Quotes, dealer portals, and logged-in tools need access control, not server rendering, which publishes what you meant to gate.

Hosted platforms that already emit server HTML need a test, not a project. Most themes pass; suspect cache, edge protection, or a geo redirect first.

A page with no extractable conclusion gains little. Rendering only delivers boilerplate faster, so write the answer unit first.

Rendering is not citation. A crawler that can read you still has to recognize your brand and find third-party evidence, which is why brand entity existence comes before a rewrite. Measure the same prompt set before and after, or you cannot tell what moved the answer.

This month, pick one action, open ten URLs, view source on each, and search for price, stock status, shipping, and returns. Log every miss with page type and owner, then hand it to engineering. That sheet beats a strategy document because it records only facts.