Build the theme

The Nuxt layer chain a theme extends, the manifest it ships, how to override anything the base layer provides, local development, and the rendering strategies available.

A theme is a Nuxt 4 application plus a manifest. It is not a fork of a storefront and not a config file: it's a real app that extends a published base layer, inherits a working shop, and overrides whatever the customer's brand and process require.

That shape is what makes the work tractable. You don't own the catalog plumbing, the cart state machine, the checkout orchestration, or the account area — those arrive from the layer. You own the parts that are specific to this customer.

The four things a theme is

PartFileWhat it does
The manifesttheme.jsonTells the platform this is a theme, how to build it, what it needs, and which blocks editors can use.
The listingbilling.jsonMarketplace pricing and support contacts. Pricing only.
The iconicon.svgShown in Cockpit and the Marketplace.
The appa Nuxt 4 projectThe actual storefront — pages, components, blocks, server routes.

Details in Theme anatomy.

The one thing to internalise first

Every commerce and pages domain in the theme resolves through a service key, and in development every key defaults to mock. A freshly cloned theme runs a full shop — catalog, cart, checkout — with no API key, no tenant, and no environment variables. Production flips the keys to api.

If you read one page in this group before writing code, read Service modes.

Where to go next