How to fix aeo schema client rendered on Headless / Custom (I build in code)

Move your JSON-LD structured data from client-side JavaScript injection to server-rendered HTML so that AI crawlers and search engines can read it in the raw page source.

Steps for Headless / Custom (I build in code)

  1. Ensure your JSON-LD block is rendered by the server framework (Next.js, Nuxt.js, Astro, etc.) during the server-side render (SSR) or static generation (SSG) pass — not in a useEffect, onMounted, or componentDidMount hook, which all run only in the browser.
  2. In Next.js: use the <Head> component from 'next/head' or the metadata API (App Router) inside your page component, and populate schema values from getServerSideProps or getStaticProps so the data is available at render time.
  3. In Nuxt.js: use useHead() in your page component and fetch product data server-side via useFetch() or useAsyncData() so schema values are populated during SSR.
  4. In Astro: place the <script type="application/ld+json"> block directly in the frontmatter/template section of your .astro file — Astro renders this statically by default.
  5. Confirm by running 'curl -s https://yoursite.com/your-page | grep application/ld+json' — the schema block must appear in the curl output (raw HTML), not only in a browser.
Official Headless / Custom (I build in code) documentation ↗

What is aeo schema client rendered?

Structured data (also called schema markup) is a block of code — usually written in JSON-LD format inside a `<script type="application/ld+json">` tag — that tells search engines and AI systems exactly what your page is about: the product name, price, reviews, breadcrumbs, and more. "Client-rendered" means this code is injected into the page by JavaScript after the browser loads, rather than being baked into the HTML that the server sends. The problem is that many crawlers — especially AI-powered ones like GPTBot (ChatGPT), ClaudeBot (Anthropic), and PerplexityBot — fetch your raw HTML and never run JavaScript, so they never see the schema at all.

AI answer engines (ChatGPT, Perplexity, Claude, Google's AI Overviews) increasingly pull structured product data directly from your page to populate citations, shopping answers, and summaries. If your schema only exists after JavaScript runs, these crawlers see a blank — meaning your products are invisible to AI-driven discovery, costing you valuable citation traffic. Traditional search engines like Google also prefer server-rendered schema; client-rendered schema is never guaranteed to be indexed, putting your rich results (star ratings, price drops, availability badges) at risk and reducing your click-through rates from organic search.

See the complete Aeo schema client rendered guide for every platform and the full background.

Not sure if your Headless / Custom (I build in code) store has this?

Run a free SEOLZ scan — we’ll find aeo schema client rendered and every other issue across your whole site.

Scan my site free

Fix aeo schema client rendered on another platform