Fix: Shopify Theme Not Saving
Your theme editor changes disappear or won't save at all. It's almost always a schema JSON error or a Liquid syntax issue — here's how to find it.
Last updated: October 2026
Open the browser console (F12 → Console tab) and try to save again. The exact error appears there — usually Invalid schema or a JSON parse error pointing to a specific line.
Fix the schema error and saving works immediately. This catches 70% of "theme won't save" cases.
The 5 real causes
Invalid JSON in a section schema
The {% schema %} block must be valid JSON. Comments aren't allowed. A single trailing comma breaks the entire theme editor's ability to save.
{% schema %}
{
"name": "Hero Banner",
"settings": [
{
"type": "text",
"id": "heading",
"label": "Heading",
} // ❌ trailing comma
]
}
{% endschema %}
/* ✅ Correct — no trailing comma, no comments */
{% schema %}
{
"name": "Hero Banner",
"settings": [
{
"type": "text",
"id": "heading",
"label": "Heading"
}
]
}
{% endschema %}
Pro tip: Copy the JSON portion (between the {% schema %} tags) into jsonlint.com. If it fails, that's your bug.
Editing the wrong theme
Shopify lets you have unlimited theme copies. If you have 3 themes installed and edit one but preview another, changes look like they aren't saving.
Check:
- Online Store → Themes
- Which theme has "Customize" open right now?
- Which theme is marked "Live"?
- If they're different, that's expected — publish the working theme to make changes live.
Shopify's normal flow: duplicate the live theme, customize the duplicate, then click "Publish" when ready. Changes on the duplicate don't appear on the live site until you publish.
Liquid syntax error blocking the save
A Liquid error in the section file can prevent the schema from parsing. Even if the JSON is valid, broken Liquid above it stops the section from loading — which prevents saving.
Common Liquid syntax errors:
{% comment %} ❌ Mismatched tags {% endcomment %}
{% if product.title %}
{{ product.title }
{% endif %} ← missing closing }}
{% for item in collection.products %}
{{ item.title }}
← missing {% endfor %}
Check: Open the file in a code editor with Liquid syntax highlighting. Mismatched tags are usually visible immediately.
Browser cache or session issue
Sometimes Shopify saves fine but your browser is showing a stale state. Rule this out first — it's fast.
Test:
- Save your changes
- Open Shopify admin in an incognito window
- Open the same theme editor there
- If your changes appear, it's a cache issue — hard refresh your normal window
# Hard refresh
Ctrl+Shift+R (Windows/Linux)
Cmd+Shift+R (macOS)
Theme conflict with Shopify's section limits
Shopify limits sections to 25 blocks and each section type has its own block limits. If you've exceeded them, new blocks won't save.
Check the section's JSON limits:
// In the section's schema
{
"name": "FAQ",
"max_blocks": 20, // ← if you have 20 blocks, you can't add more
"blocks": [ ... ]
}
If you've hit the limit, either increase max_blocks in the schema or use a different section.
The debugging workflow
- Open the browser console — the exact error is almost always there
- Validate section schemas — any JSON error stops all saves
- Check for Liquid syntax errors — mismatched tags break the section
- Confirm which theme is live — are you editing and previewing the same theme?
- Check block limits — has this section hit its max?
- Hard refresh — stale cache shows old state
- Restore from version history — if it worked recently, revert to a working version
🛡️ Recover a broken theme
Shopify keeps theme version history. If you broke something, you can roll back to a working state in seconds.
- Open the theme editor (Customize)
- Click the three-dot menu at the top-left
- Select Version history
- Pick a recent version with a description like "Publish" or "Save"
- Click Restore
Retention: Shopify keeps the last 20 versions of your theme. Save often with meaningful names ("Added hero section", "Fixed menu layout") so you can identify the right one.
🛡️ How to prevent this next time
- Validate JSON before saving. Every schema block, every time. It's the #1 cause of saving failures.
- Work on a duplicate theme. Never edit the live theme directly. Duplicate, customize, publish when ready.
- Save often with descriptions. Version history names help you find the last working state fast.
- Use Shopify CLI for local development. Version control, syntax checking, and live preview without the theme editor's limits.
- Keep a working backup. Export your theme as a ZIP weekly.
- Check the browser console before assuming broken. It tells you the exact error in 3 seconds.
❓ Frequently asked questions
Why isn't my Shopify theme saving changes?
Most common causes: a section schema JSON syntax error (invalid JSON stops the entire theme save), editing the wrong theme (Shopify lets you have multiple theme copies), a stale browser cache, or a Liquid syntax error blocking the save. Check the browser console for the exact error.
How do I know if my section schema is broken?
The theme editor usually shows a red error banner at the top of the section, or the section doesn't appear in the picker at all. Validate your schema JSON with a JSON validator — a single trailing comma or missing quote breaks the entire theme.
Does Shopify theme editor require valid JSON?
Yes. The {% schema %} block in section files must be valid JSON. Comments are not allowed inside schema blocks. A single JSON error prevents the theme editor from saving ANY changes.
What is the difference between the live theme and a duplicate theme?
The live theme is what customers see. A duplicate theme is a copy you edit safely. If you're editing a duplicate and changes aren't showing up on the live site, that's expected — publish the duplicate when ready.
How do I recover if I broke the theme?
Shopify keeps theme version history. In the theme editor, click the three-dot menu → Version history. You can restore any previous save within the retention window (usually 20 versions).