Back to field notes

Engineering

How to build an AI-ready storefront with Next.js in 2026

Agentic commerce is here. Here's the practical guide to building a Next.js storefront that converts AI buyers as well as humans, schema, rendering, testing.

How to build an AI-ready storefront with Next.js
Matt Dgn avatarMatt DgnCo-founder, Engineering4 min read

If your storefront is rendering only for humans, you’re already losing buyers you can’t see. AI agents, shopping assistants, comparison bots, wallet-side checkout helpers, are quietly visiting product pages, parsing the markup, and deciding what to surface to their user. If they can’t read your page, they skip it.

This is the practical playbook for building a Next.js storefront that converts both humans and AI buyers. No theory, just the patterns we ship.

1. What “AI-ready” actually means

An AI-ready storefront is a page that’s correct as a document, not just as a rendered surface. Two questions decide whether a buyer agent can act:

  1. Can it extract the SKU, price, availability and shipping window from your page without guessing?
  2. Can it reach the buy intent (cart, checkout, link to wallet) without running your JavaScript bundle?

If both answers are yes, you’re agent-readable. If either is no, you’re invisible to the agent layer of commerce.

2. The data layer, schema.org done right

Every product page should ship a schema.org/Product JSON-LD blob next to the rendered UI. The fields agents actually use:

FieldWhy it matters
name, sku, gtinDisambiguation across marketplaces
offers.priceFilterable, sortable
offers.availabilityLets agents skip out-of-stock variants
shippingDetails”Arrives by Friday” filters
hasMerchantReturnPolicyLowers perceived risk
aggregateRatingTie-break vs comparable SKUs
additionalProperty[]Spec-table queries (burn time, material, …)

The implementation in Next.js App Router is one server component reading from the same Product object that the UI is rendering from:

import { ProductSchema } from "@/lib/commerce/schema";

export default async function ProductPage({ params }) {
  const product = await getProduct(params.slug);
  return (
    <>
      <ProductHero product={product} />
      <ProductDetails product={product} />
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(ProductSchema(product)) }}
      />
    </>
  );
}

The pattern: one source of truth, two render paths. If a field is missing from the JSON-LD, it’s missing from the data model, not from the view layer.

Key points

  • Build the schema from the same object the UI reads
  • Never lie to agents, availability in JSON-LD must match the UI
  • Treat additionalProperty as your spec table, not a catch-all

3. Render fast for humans, parseable for agents

Next.js gives you the rendering primitives. Use them:

  • Server Components for the page shell, the agent reads server HTML, not the client bundle. Anything an agent needs (title, price, schema) must live in the RSC tree.
  • generateStaticParams + ISR, pre-render product pages so the agent hits a CDN-cached page, not a cold function.
  • <Link prefetch> for variant switches, agents that walk the variant graph need fast page transitions to evaluate every option.
  • Stable URLs per variant, a variant should have its own URL, not just a client-side state. Agents don’t run your state machine.

4. Test it like an agent would

Don’t wait for production to know if your page is agent-ready. Three quick checks during dev:

# 1. Curl the page as a non-JS client and grep for the JSON-LD blob
curl -s https://your-store.com/p/your-sku | grep -A 30 '<script type="application/ld+json"'

# 2. Validate the schema
npx @schema-org/validator path/to/jsonld.json

# 3. Run a headless agent that parses → adds to cart → checks shipping

The third one is the one teams skip. It’s also the one that catches the gap between “the page renders correctly” and “the agent can actually complete a purchase intent”. A weekly headless run in CI is the cheapest insurance you can buy against silent regressions.

Takeaway

AI-ready isn’t a product. It’s a discipline, treat the page as a queryable document, not just a rendered surface, and ship every product page with one data source feeding two render paths. The brands that internalize this in 2026 are the ones whose SKUs get recommended by agents next year.

If you want this pattern productized end-to-end, the Nomu storefront engine ships it by default. There’s a book a demo link on every page if you want to talk it through.

Matt Dgn avatar

Matt Dgn

Co-founder, Engineering

Software engineer and Nomu co-founder building the storefront engine, the agentic commerce protocol layer, and the Next.js stack that powers consumer brands on the platform. Writes about commerce architecture, AI-readable storefronts, and the engineering trade-offs that decide whether a brand ships or stalls.