[Best practises] How to keep Github Connected theme up to date?

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:

  • /sections

  • /snippets

  • /templates

  • /config

  • /locales

  • and the core assets you actually edit (not every compiled file).


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.


:white_check_mark: Quick Summary of Recommended Workflow:

  1. Pull the latest clean theme update.

  2. Identify new/changed /sections, /templates, and /config/settings_schema.json.

  3. Rebase those into your branch carefully.

  4. Push settings_schema.json first, then dependent sections/templates.

  5. 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!