Theme check
The theme check runs on every save in the code editor and on every upload. Errors stop a save to the live theme and an upload; warnings are shown but don’t block.
Errors
Section titled “Errors”| Message | Fix |
|---|---|
| Liquid syntax error (with line) | Fix the tag or output at that line: an unclosed {% if %}, a missing {% endfor %}, a stray }}. |
invalid schema JSON |
The {% schema %} isn’t valid JSON: look for trailing commas and unquoted keys. |
invalid JSON |
A template, section group, config or locale file isn’t valid JSON. |
required file is missing |
Add layout/theme.liquid, templates/index.json and config/settings_schema.json. |
this file can't be part of a theme |
The folder or file type isn’t allowed; see Directory structure. |
a theme can have at most 2000 files |
Remove unused files. |
file is larger than 5 MB (text) / 20 MB (assets) |
Split the file, or compress the image or video. |
links aren't allowed in themes |
An upload contains a symbolic link: replace it with the file. |
section "x" uses unknown type "y" |
The template names a section file that doesn’t exist. |
order lists "x", which isn't in sections |
Every ID in order needs an entry in sections. |
block_order lists "x", which isn't in blocks |
The same for blocks. |
at most 256 sections / at most 50 blocks / at most N "x" blocks |
Too many sections or blocks for the template or the schema’s max_blocks and limit. |
blocks are nested too deeply |
Blocks can nest 8 levels. |
type "x" isn't allowed here |
The block type isn’t in the parent’s blocks list. |
unknown setting "x" |
A value in a template or settings_data has no setting with that ID. |
setting must be … |
A value doesn’t fit its setting: a number out of range, a select value that isn’t an option. |
current preset "x" doesn't exist |
settings_data.json names a preset it doesn’t define. |
| Unknown setting type | The schema uses a type that isn’t in Input setting types. |
Warnings
Section titled “Warnings”| Message | Fix |
|---|---|
include is deprecated: use render |
include isn’t supported; replace it with render and pass the variables the snippet needs. |
In previews
Section titled “In previews”Problems that only show at render time (an unknown filter, a missing snippet, a loop over something that isn’t a list) appear in the preview where they happen: Liquid error (snippets/card.liquid): …. On the live store they’re hidden as an HTML comment.
Was this page helpful?

