Skip to content

ProductMetadataOptions

Defined in: @storesynk/next/dist/seo.d.ts:20

SEO for a product page as a Next Metadata object - the generateMetadata half of Astro’s (the JSON-LD half is , rendered in the page body per Next’s documented pattern). Uses the same module-cached fetches as , so pairing them costs no extra requests.

export async function generateMetadata({ params }): Promise { const { handle } = await params; return productMetadata(decodeURIComponent(handle), { siteName: ‘Acme’ }); }

Fidelity note: og:title/description/image/url render as property=“og:” via Metadata’s openGraph; og:type=product and og:price: have no typed slot, so they go through other and render as name=“og:*” - the JSON-LD carries the structured price/availability data rich results actually consume.

optional description?: string

Defined in: @storesynk/next/dist/seo.d.ts:31

Override the meta description (default: the product’s plain-text description).


optional fresh?: boolean

Defined in: @storesynk/next/dist/seo.d.ts:27

Bypass the persistent cache and fetch live (deduped per request) - for draft/preview reads that must reflect Shopify right now. The default cached path is webhook-invalidated (createStoresynkWebhookHandler), so most routes never need this.


optional locale?: I18nState | null

Defined in: @storesynk/next/dist/seo.d.ts:22

Per-request buyer market (from getRequestLocale()); null-safe.


optional siteName?: string

Defined in: @storesynk/next/dist/seo.d.ts:35

Appended to the default title as ” - siteName”.


optional title?: string

Defined in: @storesynk/next/dist/seo.d.ts:29

Override the document title (default: product title, with siteName appended).


optional url?: string

Defined in: @storesynk/next/dist/seo.d.ts:33

Canonical URL for og:url (generateMetadata can’t infer the request URL - pass it if you have it).