Skip to main content
A React theme is a folder. Each section is one React component plus one schema.json. The platform gives every section its settings and blocks as props.
Real example: Pulse in templates/themes/pulse/. Copy it if you want a head start.

The folder

src/platform/ is not yours. The platform writes it at build time. Any copy you upload is ignored.

Steps

1

Write theme.json

theme.json
engine, id, name and version are required. runtime defaults to react.
2

Write index.html

It must load /src/platform/entry.tsx. Without it, the upload is blocked.
index.html
3

Add a section

The settings the seller sees:
src/sections/spacer/schema.json
The design. It gets settings as props:
src/sections/spacer/index.tsx
This is the real Spacer from Nova.
4

Put it on the home page

templates/index.json
type is the folder name under src/sections/.
5

Zip and upload

Zip the folder and upload it in the theme hub. One top folder inside the ZIP is fine. See Upload rules.
6

Edit and publish

The theme opens in Visual and Code. Press Publish to put it live.

What a section gets

Product, cart and store data come from @/platform. See the list below.

Platform API

Import everything from @/platform. You never write API calls yourself.
Plain data-jm-* attributes work in React too. See Commerce attributes.

Packages

You can import only the packages our own themes use, like react. Any other package blocks the upload. Install scripts (postinstall and others) are blocked too.

Next

Upload rules

What gets kept, and every error.

Section schema

Every setting type.