Draft and revisions
File changes land first in the draft (with the author and time of each change). Commit the draft in Workspace → Changes to save an immutable revision — a numbered snapshot of all files. Revisions are never edited; rolling back means publishing an older deployment. You can see diffs between revisions or the draft in the same tab.Build
A build turns the project files into static HTML, CSS and JS. It is queued and runs in an isolated container:npm ci --ignore-scriptsand the manifest’s command — package install scripts are not executed,- network only to the npm registry (
registry.npmjs.org), no access to secrets or shop data, - 1 vCPU, 1 GiB RAM, a capped process count, no root, a hard time limit of 120 s,
- the build command in
itemshop.site.jsonmust benpm run <script>,vite buildornpx vite build.
queued → building → ready or failed. On failed you see the log (up to 1 MB) — the AI editor can read it and fix the error. Build limits depend on the plan: Free — 1 active build at a time and 10 per hour, Pro — 2 at a time and 30 per hour (409 SITE_BUILD_BUSY, 429 SITE_BUILD_RATE_LIMIT). Builds without a deployment older than 14 days are deleted with their log and output, and unreferenced files after 24 hours.
Build variables
Forvite-react projects the builder sets explicit ITEMSHOP_* variables — read them in vite.config.ts or your code (e.g. for SEO tags). static projects have no build step and don’t get them.
In the browser,
shopId and the API address still come from /itemshop.config.js — the ITEMSHOP_* variables exist only at build time.
What the builder adds
Preview and production
The
itemshop.site domain differs from the panel domain (itemshop.dev), so site code never has access to panel cookies. A build can have many previews. Production points to exactly one deployment. Custom domains work as before (TXT / Cloudflare verification), with no extra setup.
Publishing
Publish in the panel (oritemshop deploy --prod) points production at the chosen deployment. From an API key, MCP token, the CLI or the AI agent, production is subject to the publishing rules: with approval required (the default) the response is 403 WORKSPACE_PRODUCTION_REQUIRES_APPROVAL, so itemshop deploy --prod works only after you turn that option off or promote in the panel. A panel session can always publish. Players see the new version after a refresh (HTML documents are always revalidated, files under assets/ are cached indefinitely).
Publishing rules
In Workspace → Deployments you set how changes reach players:
You see the build log live in the same tab.
Rolling back
A rollback is re-publishing an older deployment: Workspace → Deployments → pick a deployment → Restore. Nothing is rebuilt, so the change takes seconds. The rolled-back deployment stays in the list, so you can return to it.Site security
- Only the static output is hosted — no site code runs on ItemShop servers, and the hosting server answers read requests only.
-
Every page carries a Content-Security-Policy header that includes:
-
Responses also carry
X-Content-Type-Options: nosniff,Referrer-Policyand COOP. There are no platform cookies on shop domains. - A blocked or inactive shop returns 404.
So your site must load scripts from its own origin and connect only to its own origin and the ItemShop API. A CDN library or an inline script will be blocked by the browser — add it to the project and build it with the site.
Through the API
The same flow is available through the API with a key (site:write):
Limits
Build time, sizes, AI.
Domains
A custom domain for your site.