Clicks & Carts

Customising Dawn: how far you can take Shopify's base theme

Dawn is the sane starting point for most custom builds. How to change it without losing the ability to take updates.

8 min read · Themes & storefront ·

Dawn is Shopify's reference theme, and for most custom builds it's the right place to start. Not because it's beautiful — it's deliberately plain — but because it's fast, accessible, actively maintained, and structured the way Shopify intends themes to be structured. You inherit a lot of solved problems.

What you get for free

  • Performance as a baseline. Minimal JavaScript, no framework, native browser features instead of libraries. That's a starting point most purchased themes can't match, and it matters — see the speed audit for what the alternative looks like.
  • Accessibility that's been thought about. Focus management, keyboard navigation, ARIA on the cart and menus, sensible contrast defaults.
  • A complete section architecture. Every template is JSON, sections are properly scoped, header and footer are section groups.
  • The awkward parts already built. Cart drawer, variant switching, predictive search, quantity rules, sold-out states.
  • Upstream improvements. Shopify keeps developing it, and if you've layered your changes carefully you can take those.

The three ways people customise it

Settings only. Colours, fonts, section arrangement. No code. Perfectly legitimate for a small store, and it's what Dawn is designed for.

Additive customisation. New sections and snippets in your own files, your own CSS, minimal edits to Dawn's originals. This is the sweet spot — you get a bespoke storefront and can still merge upstream changes.

Deep modification. Rewriting Dawn's core templates and JavaScript. Sometimes necessary, but be honest that at this point you've forked it: updates become manual work, and you own everything you touched.

How to layer changes so updates still apply

The discipline is simple and rarely followed:

  1. New sections go in new files. Never modify main-product.liquid when you could add product-specifications.liquid alongside it.
  2. Your CSS lives in your own stylesheet, loaded after Dawn's, overriding rather than editing. Editing base.css guarantees a conflict on every update.
  3. Prefer schema settings to hard-coded values, so variations are configuration rather than forks.
  4. When you must edit a Dawn file, comment the change with a marker you can grep for. {% comment %} CUSTOM: … {% endcomment %}. Future-you will need to find every one of them.
  5. Keep a list of every Dawn file you've touched. That list is your merge checklist.

Updating a theme without losing your changes covers the merge process itself.

What's worth replacing

Some parts of Dawn are placeholders more than opinions:

  • The product page layout. Dawn's is functional and generic. This is where a custom storefront earns its money — see product page anatomy.
  • The homepage sections. Dawn's are demonstrations. Build your own.
  • Collection filtering UI. Works, but rarely matches a real merchandising need — collection pages and filtering.
  • Typography and spacing. Dawn is intentionally neutral so it doesn't fight your brand.

What's not worth replacing

  • The cart JavaScript. It handles more states than you'll think of.
  • Predictive search.
  • The variant selection logic.
  • The accessibility work. Replacing it means redoing it, and most rewrites are worse.

If you find yourself reimplementing one of these, ask what specifically is wrong with the original. Often the answer is styling, which is a CSS problem.

When to stop and build custom

Dawn stops being the right base when you're overriding more than you're keeping. Concretely: if your changes touch most of Dawn's core files, if you've replaced the cart and the search and the product form, or if the structure genuinely fights the storefront you need — at that point the inheritance is costing you more than it gives, and a custom theme or starting from scratch is more honest.

That's a rarer situation than people building their first custom theme expect. Most stores that "need a from-scratch theme" need Dawn with twelve custom sections.

Dawn versions

Dawn changes, sometimes significantly. Record which version you started from in your repository — you'll need it to work out what changed upstream when you come to merge. It belongs in the theme metadata in `settings_schema.json` and in your README.

Starting from Dawn isn't a shortcut. It's inheriting several years of Shopify's own work on the parts of a theme nobody wants to build twice.

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.

[email protected]

Or see what I do around Shopify: services, work beyond the theme, selected work.

Keep reading

← All articles