dtc theme check, the local dev MCP’s
validate_theme, 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 theme file must not shadow a platform-owned path. Put your code undertheme/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.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