dtc theme check, the Gateway’s POST /themes/{id}/check (the check_theme tool), and publish.
A theme that passes locally passes on the server, because it is the same code.
Every publish runs theme check first. Any error stops the publish with 422 CHECK_FAILED and the
full result; nothing is deployed.
Result
ok is true when there are no errors; warnings do not affect it. line, column and hint are
present when the rule can provide them. Pass only (a list of paths) to check just those files.
Rules
json-parse
Template, section group andconfig/settings_data.json files must be valid JSON.
Bad
Good
builder2-template
The document must be a valid Builder2 template: within the limits, every id inorder present in sections, and every section allowed where it is placed. Unknown
section types are reported too.
Bad — is not a registered type, and is not in sections
Good
import-resolves
Every relative or@/ import in your TSX files must resolve, either to a file in your theme or to a
file the platform’s store template ships. Bare package imports other than react are refused: an
agent cannot add npm dependencies.
Bad
Good
no-platform-override
A copy of a platform-owned file that differs from the platform version. It is a warning, not an error: the API refuses writes to platform paths (PLATFORM_OWNED), and publishing replaces these files with
the platform version, so a change in the copy never ships. Older themes often carry such copies from
when they were created. Put your code under theme/custom/ or another
merchant-owned path instead.
Bad
Good
no-placeholder-link
A link with nowhere to go must not be rendered.href="#" and href="" are errors.
Bad
Good
no-placeholder-text
Sample copy reaches real customers the moment a theme is published. Lorem ipsum, “Your Store”, “Coming soon” and “Product name” are errors, and so is copy written to the merchant about what to write — for example “Say what you sell, in one line”, “A sentence for the person who has never heard of you.” or “Describe your returns window here”. Some starting themes ship with it; replace it with your real text, or clear the setting so nothing renders. One exception is a warning: a header or footerstore_name saved as a placeholder (“Your store”),
or a footer legal line containing “your store”. The storefront replaces those with your store’s real
name when it renders, so they never reach customers. Clear the setting to make that explicit.
Bad
Good
no-empty-image
An<img> or <Image> with an empty or missing src renders as a broken image. Render nothing
instead.
Bad
Good
no-fake-social-proof
Hard-coded star ratings and review counts are a warning. Ratings and review counts must come from real review data, or not be shown.Bad
Good
tsc
TypeScript errors in the TSX files you changed. A warning while you work on a development theme, so you can iterate; an error on publish, so code that does not type-check never goes live.Bad
Good