I’ve been managing a Shopify store for a friend for a while. I work as a web developer, so most things works out fine. The store has a third party theme. To make development easier I have uploaded the theme to Github and connected it.
I’m really comfortable using merge & rebase, so it’s been going OK updating the theme.
But lately there’s been big changes to adapt to changes in Spotify.
So I’ve noticed a few things that I can’t really find a clear answer to that might it difficult.
1. When syncing new changes from Github, and changes has been made to settings_schema.json, it’s using the current version (not the new version I’m syncing) for validation. So if I have made changes in template files that matches the new settings_schema.json validation the sync will fail.
2. When I’m updating my theme, I first update a clean theme to the latest version, and then download then zip file. I then use rebase/merge to get he changes into my branch. My issue is that I have a hard time understanding which files are relevant or not. Since it download templates, generated css files, languages files, etc. Is the template files adapted to the theme I’m downloading , or always the same?
3. Can template files be affected by theme updates? If i change properties, validation, etc? What am I missing out on when updating my main branch theme manually compared to automatic update of the clean theme inside Shopify?
I would really appreciate if someone can shed some light on this.
Hi @SvenSvensson,
You’ve raised some great questions that come up often when managing themes with GitHub and custom branches. Let’s break it down step-by-step:
1. settings_schema.json Validation on Sync
When you sync via the GitHub integration, Shopify always validates the incoming changes against the active theme’s current settings_schema.json on the store.
-
If you push a template or section that relies on a new field you’ve added to your new schema, but the live theme hasn’t been updated yet, the validation fails.
-
The safest workflow is to update the settings_schema.json first, commit and push, wait for Shopify to accept that change, and only then push the templates/sections that reference those new settings.
-
Think of it as: Schema first → then dependent files.
2. Downloaded ZIP vs. GitHub-Synced Files
When you download a fresh ZIP of the theme from Shopify:
-
It contains all current template, section, language, and compiled CSS/JS files that exist in the live theme version at that moment.
-
Those template files are specific to that theme version — they’re not static boilerplates. If the theme developer released changes (e.g., new Liquid logic or schema fields), they’ll be reflected there.
-
The /assets folder often includes compiled or generated files (like CSS/JS) that you don’t necessarily need to version-control if your build pipeline regenerates them.
A good approach is to track only:
3. Template Files & Automatic Theme Updates
Yes — template files can be affected by theme updates. Theme developers sometimes modify Liquid logic, add new section IDs, or change block structures.
-
When you manually rebase, you’re essentially replicating that automatic update, but you must resolve conflicts carefully to avoid missing those new structural changes.
-
Automatic updates inside Shopify apply only to unmodified sections/templates. If you’ve customized them, Shopify skips those files — which is why your manual merge/rebase approach is often better for full control.
Best practice:
-
Always diff your /templates and /sections during each rebase to catch new theme developer changes.
-
If your theme vendor publishes a changelog, review it closely before merging.
Quick Summary of Recommended Workflow:
-
Pull the latest clean theme update.
-
Identify new/changed /sections, /templates, and /config/settings_schema.json.
-
Rebase those into your branch carefully.
-
Push settings_schema.json first, then dependent sections/templates.
-
Avoid tracking generated build files unless needed.
This process minimizes sync errors and keeps your GitHub workflow smooth.
Would you like me to include a suggested .gitignore example for your theme repo to avoid clutter from generated files?
I guess the user got removed due to posting ChatGPT answers. I would love to hear from human experience!