Shopify checks
BetaWe just launched Apps: hosted models, actions and pages, on the same bill as your inference.Read the Apps docs
Auditor/Shopify/Shopify checks

Shopify checks

What reviews check on a Shopify theme besides the code itself: the merchant content on the store a pull request would break, translation keys missing from the default locales, and, for theme vendors, Theme Store readiness. None of these calls a model, so they cost nothing.

Each runs on every review it applies to, alongside the rules pass and the deep review. Thorough reviews of a theme also run Theme Check, and the deep review knows how themes, theme blocks and theme app extensions behave from its built-in Shopify knowledge.

Merchant content on the store

For a Shopify theme repository with a store chosen on its Shopify tab, every review checks what the pull request removes against the content merchants keep on the store's published theme, the way the MCP server's content_usage and template_assignments tools do. It runs with any review layer, needs no model, and is not billed.

The pull requestWhat Auditor reads on the store
Removes or renames a section, or a theme block in blocks/Every template and section group that places it. The finding lists each place, such as Product page (templates/product.json).
Removes a block type from a section's schemaThe blocks of that type inside that section, wherever it is placed.
Removes or renames a setting id of a section, block or the theme settingsThe placements that set it, with the values they hold. One left at its default loses nothing and is not reported.
Removes the last preset of a sectionWhere the section is placed already. Those keep their content, but without a preset the section is no longer offered under Add section in the theme editor. Reported as Low, even when the store cannot be reached.
Removes or renames an alternate template, such as product.bundle.jsonThe products, collections, pages, blogs or articles assigned to it, which would fall back to the default template: “12 products use product.bundle”.
Adds Liquid that reads a metafield, such as product.metafields.custom.careThe store's metafield definitions. One with none is reported as Low.

Findings sit on the line where the setting or block was, and are High; one about a whole file the pull request deletes has no line left to sit on, so it is in the review's summary instead. The store is read only for what the pull request actually removes, and a pull request that removes nothing reads nothing. The check compares the whole pull request, base to head, on every review, and resolves its own earlier finding once the pull request keeps what it named or the store stops using it. If the store cannot be reached (an expired sign-in, a missing Theme Access password), the review goes on without it and the check run says why. A Theme Access password reaches themes only, so metafield definitions are checked only through the team's Shopify sign-in. A store with more than 5,000 definitions for one kind of resource has that kind left unchecked rather than risk reporting one that exists.

To turn the check off for a repository, switch off Check merchant content in reviews under Previews on its Shopify tab, or set theme_preview.content_check to false through the API.

Repositories that are not Shopify themes are never checked: with no store chosen, the check switched off, a theme built from other sources, or no layout/theme.liquid and config/settings_schema.json in the theme's folder, nothing is read and nothing changes in the review. The store is only ever read.

Translation keys

In a Shopify theme or a theme app extension, every review checks the translation keys the pull request adds: a {{ 'products.add' | t }} must be in locales/*.default.json (or the storefront shows “translation missing”), and a schema string like t:sections.hero.name in locales/*.default.schema.json (or the theme editor shows the raw key). Keys under shopify. are Shopify's own, and a section or block with its own schema locales is skipped. When a Thorough review runs Theme Check on a theme, its TranslationKeyExists and ValidSchemaTranslations report these instead, so they aren't posted twice. Needs no model and is not billed. A finding is resolved once the key is added.

Theme Store readiness

For theme vendors. Turn on Theme Store readiness in a repository's settings on the Auditor page (it is off by default) and each review checks the Shopify theme at the pull request's head against the Theme Store requirements a file can show. The check run lists each one as passing or failing for the whole theme; a file the pull request changes that fails one gets a finding.

CheckPasses when
Required filesThe layout, config/settings_data.json and settings_schema.json, templates/gift_card.liquid, and the JSON templates 404, article, blog, cart, collection, index, list-collections, page, page.contact, password, product and search exist.
App blocksThe main product section (the main section of templates/product.json) and sections/featured-product.liquid list { "type": "@app" } in their schema's blocks.
langlayout/theme.liquid's <html> has a lang attribute.
Section groupsThe layout renders the header and footer with {% sections %}.
No Sass or minified filesNo .scss or .scss.liquid files, and no .min.js/.min.css or stylesheet or script with lines over 2,000 characters (Low: third-party libraries are allowed).
Files not allowedNo config/markets.json or templates/robots.txt.liquid.
Custom LiquidA section has a liquid setting.
theme_info and faviconThe settings schema has theme_info and an image_picker setting with favicon in its id.

Requirements Theme Check already enforces, such as a label on every setting and no hardcoded routes, are left to static analysis. Ones that need judgement (alt text, form labels, visible focus, keyboard access, fonts through font_picker, product parts as blocks, no credits or app dependencies) are in the Theme Store readiness ruleset template. The checks need no model and are not billed.