Updating a Shopify theme without losing your customisations
The reason most customised themes are three years out of date. Here is the structure that keeps updates possible and the process for doing one.
8 min read · Themes & storefront ·
Shopify does not merge theme updates for you. When a theme author ships a new version, you get a fresh copy of the theme — not a patch applied to yours. If you've customised the original, adopting the update means reapplying your changes by hand, which is why so many customised stores are running a theme version from three years ago.
That's survivable. What isn't is discovering it when a security or compatibility fix arrives.
Why updates break customised themes
Because "customisation" usually means editing the theme author's files. Change main-product.liquid to add a specification table, and the new version's main-product.liquid doesn't contain your table — it contains the author's improvements. You now have to work out what they changed, what you changed, and combine them.
Multiply by thirty files and the update becomes a project nobody budgets for.
Structure changes so they survive
The whole discipline, in five rules:
- New functionality goes in new files. A specification table is
sections/product-specifications.liquid, not an edit to the main product section. New files are never touched by an update. - Your CSS is a separate stylesheet loaded after the theme's. Override; don't edit. Editing
base.cssguarantees conflict on every release. - Prefer schema settings over hard-coded changes. A setting is configuration; a hard-coded value is a fork.
- When you must edit an original file, mark it.
{% comment %} CUSTOM: adds trade pricing {% endcomment %}— something you can grep for later. - Keep a list of every original file you touched, in the repository, in a file called something obvious. That list is the entire merge checklist, and it takes ten seconds to maintain and hours to reconstruct.
Customising Dawn applies exactly this to Shopify's base theme.
The update process
Assuming the theme is in version control through the CLI:
- Read the changelog and decide whether you need the update at all. Not every release is worth the work.
- Download the new version into a scratch folder.
- Diff the new version against the original version you started from — not against your customised theme. This tells you what the author actually changed.
- Diff your theme against the same original. This tells you what you changed. If you kept the list from rule five, this is a confirmation rather than a discovery.
- Apply the author's changes to your theme, file by file, resolving conflicts only in the files where both sets of changes overlap.
- Push to an unpublished theme and test the templates you customised, on a phone.
- Publish, keeping the previous theme as a one-click rollback for a week.
Step three is why recording the starting version matters. Without it, you're diffing two unrelated trees and guessing.
When to update
Do update for security fixes, Shopify platform compatibility, accessibility fixes and meaningful performance improvements.
Don't update for cosmetic changes or features you won't use. Every merge carries risk, and "staying current" is not a business goal in itself.
Do update before a big project. Merging on top of six months of new work is worse than merging first.
When to stop updating
Sometimes the honest answer is that the theme has diverged so far that it's now your theme, not the author's. If you've replaced most of the templates, the JavaScript and the CSS, upstream releases have nothing left to give you.
At that point, declare the fork. Stop tracking upstream, take ownership properly, and budget for maintaining it — which includes the accessibility and compatibility work the author used to do for you. That's a real cost, and it's part of the case for a purpose-built custom theme over a heavily patched purchased one: at least a custom theme was designed to be maintained by whoever maintains it.
The version nobody recorded
The most common blocker is not knowing which version you started from. If that's you: check the theme metadata in settings_schema.json, check the theme name in the admin, and if neither helps, download the two nearest versions from the author and diff against both. Then write it down.
A customised theme that can't be updated isn't a theme you own. It's a theme you're stuck with, and the difference only becomes obvious when something urgent needs fixing upstream.
Is this the problem you’re looking at?
Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.
mario@clicksandcarts.coOr see what I do around Shopify: services, work beyond the theme, selected work.