---
title: "Shopify Dawn Theme Customization: A Practical Guide"
description: "Dawn is Shopify's free reference theme, maintained by Shopify and free to use on any store. Most changes belong in the theme editor, small ones in custom CSS, and only the leftovers in code. Work on a duplicate, preview it, publish it, and keep edits few, because every code edit is something you must carry through future theme updates."
author: "Ecompanda"
date: 2026-03-07
updated: 2026-10-17
category: "Shopify development"
readingTime: "11 min read"
canonical: https://www.ecompanda.co/blog/shopify-dawn-theme-customization-the-complete-guide
source: https://www.ecompanda.co
---

# Shopify Dawn Theme Customization: A Practical Guide

_By Ecompanda. Published March 7, 2026, updated October 17, 2026._

Dawn is Shopify's free reference theme, maintained by Shopify and free to use on any store. Most changes belong in the theme editor, small ones in custom CSS, and only the leftovers in code. Work on a duplicate, preview it, publish it, and keep edits few, because every code edit is something you must carry through future theme updates.

Dawn is Shopify's free reference theme, and you can customize most of it without writing code. Use the theme editor first, the custom CSS boxes second, and your own code last. Do all of it on a duplicate of your live theme, so a mistake never reaches customers and a rollback is a single click.

This guide is for store owners who have just picked Dawn and for developers who inherit a Dawn store. We rewrote it and checked it on 17 October 2026. Dawn changes a few times a year, so the dates matter.

## What Dawn is in October 2026

Dawn is a free theme made by Shopify. Its README calls it Shopify's first source available reference theme, with an HTML-first, JavaScript-only-as-needed approach.

### Who maintains it, and what "source available" means

Shopify makes and maintains Dawn: the Theme Store lists Shopify as its designer, and the public repository at [github.com/Shopify/dawn](https://github.com/Shopify/dawn) lives in Shopify's own GitHub organization. The README also welcomes pull requests.

Read the licence before you copy code out of it. The [LICENSE.md](https://github.com/Shopify/dawn/blob/main/LICENSE.md) allows use, modification and distribution, but only to develop themes that integrate with Shopify software or services, and to distribute those themes through the Theme Store. That is why it is called source available, not open source. For a store owner this changes nothing. For anyone building a product on top of Dawn, it matters.

![The Dawn repository file list on GitHub, showing folders for assets, config, layout, locales, sections, snippets and templates, 17 October 2026](https://cdn.sanity.io/images/9g0lkkr3/production/abe61d665bcae02df957b175b5e9798c9b0f54f2-904x574.jpg?w=1400&auto=format)
_The Shopify/dawn repository file list, github.com, 17 October 2026_

### Versions: what the repository and the Theme Store say

On 17 October 2026 the two public sources showed different versions.

| Source | Version | Date |
| --- | --- | --- |
| GitHub release and settings_schema.json on main | 16.0.0 | 10 August 2026 |
| Theme Store listing | 16.1.0 | 9 October 2026 |

The README explains it: `main` may hold code for features not yet released, and the stable version is the one in the Theme Store. We found no 16.1.0 tag in the repository. Treat the Theme Store as the version merchants receive.

![The Dawn page on the Shopify Theme Store showing version 16.1.0, dated 9 October 2026, designed by Shopify](https://cdn.sanity.io/images/9g0lkkr3/production/900174a4aeb62817c7de0a976d829bc255bdf4ed-1140x140.png?w=1400&auto=format)
_The version section of the Dawn listing, themes.shopify.com, 17 October 2026_

A short history of the recent releases, from the [GitHub releases page](https://github.com/Shopify/dawn/releases):

- **15.5.0 (19 June 2026):** standard storefront events, so apps, agents and AI tools can interact with the cart without a page reload, plus a product disclosures section and block.
- **16.0.0 (10 August 2026):** the header account icon opens Shopify's customer account popover, and the legacy customer account templates are removed. Stores on legacy customer accounts must upgrade before publishing this version.
- **16.1.0 (9 October 2026, Theme Store):** product disclosures show only to buyers in the jurisdictions they apply to.

## How a Dawn theme is organised

Shopify's [theme architecture page](https://shopify.dev/docs/storefronts/themes/architecture) describes the standard layout, and Dawn follows it.

![The top of the Shopify developer documentation page called Theme architecture](https://cdn.sanity.io/images/9g0lkkr3/production/86f5284a8b8627a0cbda0b4a51f6957541f6a912-1280x620.jpg?w=1400&auto=format)
_The Theme architecture page, shopify.dev, 17 October 2026_

| Folder | What it holds | Typical reason to touch it |
| --- | --- | --- |
| layout | theme.liquid, the wrapper around every page | Load a custom stylesheet or script |
| templates | JSON files listing which sections each page uses | Rarely by hand; the editor writes them |
| sections | The building blocks of each page | Change how a section renders, or add one |
| snippets | Small reusable pieces, such as product cards and price | Change a card or a badge |
| assets | CSS, JavaScript and images | Add custom.css |
| config | Theme settings and their saved values | Avoid editing settings_data.json by hand |
| locales | Translations of every visible string | Change wording, add a language |

Two details matter. A JSON template can render up to 25 sections, each with up to 50 blocks ([JSON templates](https://shopify.dev/docs/storefronts/themes/architecture/templates/json-templates)). And Dawn's repository has no `blocks` folder: its blocks are defined inside each section file. Our [guide to sections and blocks](https://www.ecompanda.co/blog/shopify-sections-and-blocks-explained-the-complete-guide) covers the model.

## What you can change in the theme editor

The editor is the right tool for most requests. What you change there is stored as data, in `config/settings_data.json` and the template files.

![The public Dawn demo storefront home page with an announcement bar, header, and a split hero image](https://cdn.sanity.io/images/9g0lkkr3/production/e5379e4daaa546711f22a04a038dc7d5ae31e169-1280x760.jpg?w=1400&auto=format)
_The Dawn demo storefront home page, theme-dawn-demo.myshopify.com, 17 October 2026_

### Theme settings

Dawn's `settings_schema.json` defines these groups, which appear in the editor under Theme settings:

- Logo, colors, typography, layout and animations
- Buttons, variant pills, inputs, badges, popups and drawers
- Product, collection and blog cards, content containers and media
- Brand information, social media, search, currency format, cart and customer accounts

Colors work through color schemes. Dawn writes each scheme into CSS custom properties such as `--color-background`, `--color-foreground` and `--color-button`, and every section picks a scheme. So the cleanest way to rebrand Dawn is to edit the schemes once, not to override colors in CSS.

### Section and block settings

Each section has its own settings, such as alignment, padding and color scheme, and you can add, remove, hide and reorder sections on every template. All of this is copied into updated theme versions ([updating themes](https://help.shopify.com/en/manual/online-store/themes/managing-themes/updating-themes)).

Shopify's help page says [Sidekick](https://www.ecompanda.co/blog/shopify-sidekick) can adjust colors, fonts and layout settings from inside the editor.

### The two code-shaped boxes inside the editor

Dawn gives you two places for code without opening a file:

- **Custom CSS.** Theme settings has a Custom CSS box for the whole theme, and each section has its own at the bottom of its panel. Shopify's [custom CSS page](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/edit-code/add-css) lists the limits: 1,500 characters for theme-wide rules, 500 for a single section, no `@import`, and no `content` property. It is also not applied on the checkout page.
- **Custom Liquid.** Dawn has a Custom Liquid section, and its product page has a Custom Liquid block. Both accept Liquid and HTML.

![A ladder with four rungs: theme and section settings, custom CSS and Liquid boxes, your own CSS file and small Liquid edits, and new sections or a fork, each with a note on how it behaves in updates](https://cdn.sanity.io/images/9g0lkkr3/production/a059861477bdb85bacf05ba91da12ee67f30c695-1600x1013.png?w=1400&auto=format)
_Where to make a change, from safest to riskiest, Ecompanda diagram, 17 October 2026_

## A safe workflow: duplicate, preview, publish, roll back

Shopify's help pages advise making a backup copy before you customize a theme, so you can discard changes and start again. Make that a rule.

![Four steps, duplicate, change, preview and publish, with a note that rolling back is a second publish of the theme you replaced](https://cdn.sanity.io/images/9g0lkkr3/production/ae6cb4c07ab441124eb75e8a8d53b49735b49a04-1600x827.png?w=1400&auto=format)
_The duplicate, change, preview, publish loop, Ecompanda diagram, 17 October 2026_

1. **Duplicate.** In Online Store, open the actions menu on the live theme and choose Duplicate. The copy is named Copy of plus the theme name ([duplicating themes](https://help.shopify.com/en/manual/online-store/themes/managing-themes/duplicating-themes)). A store can hold 20 themes, so delete an old one if you are at the limit. Deleting is permanent, so download it first if you might want it.
2. **Change the copy.** Use the editor or the code editor. In the code editor, each file has a Timeline view that restores one earlier version of that file. It does not restore a whole theme, and history is finite ([editing theme code](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/edit-code/edit-theme-code)).
3. **Preview.** Check phone and desktop, then run the real paths: add to cart, change a variant, search, a contact form, each installed app, and the route to checkout.
4. **Publish.** Only one theme is live at a time. When you publish, the previous theme moves to Draft themes, and none of your changes are lost ([publishing themes](https://help.shopify.com/en/manual/online-store/themes/managing-themes/publishing-themes)).
5. **Roll back if needed.** Publish the previous theme again.

### For developers: Shopify CLI and Git

If you work in code, use [Shopify CLI](https://shopify.dev/docs/storefronts/themes/tools/cli) instead of the browser editor. A development theme is a temporary, hidden copy that reloads CSS and section changes as you save, and it does not count towards the 20-theme limit.

```bash
# Pull a copy of the theme you want to work from
shopify theme pull --store your-store.myshopify.com

# Preview your local changes against real store data
shopify theme dev --store your-store.myshopify.com

# Lint before you push
shopify theme check

# Upload as a new unpublished theme, never over the live one
shopify theme push --unpublished
```

Pair that with the [Shopify GitHub integration](https://shopify.dev/docs/storefronts/themes/tools/github), which commits edits made in the admin back to a connected branch. That page notes this cannot be turned off, so plan for merchants' editor changes to arrive as commits.

## CSS changes worth making

Most Dawn stores need a small stylesheet. Settings already cover radius, shadows, spacing and colors, so write CSS only for what settings cannot do. For the wider subject, see our [CSS guide](https://www.ecompanda.co/blog/how-to-add-custom-css-to-shopify-the-complete-guide) and [theme customization best practices](https://www.ecompanda.co/blog/best-practices-for-shopify-theme-customization).

For anything over a few lines, use a file. Create `assets/custom.css`, then load it just before `</body>` in `layout/theme.liquid`. Dawn loads several component stylesheets from inside its sections, below the `<head>`, so a link in the head can lose a tie on specificity:

```liquid
{{ 'custom.css' | asset_url | stylesheet_tag }}
```

First, long product titles break the rhythm of a grid. This keeps cards level:

```css
/* assets/custom.css */
.card__heading {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
```

We tested this on the public Dawn demo store with a deliberately long title. A title that ran to four lines was cut to two, and Dawn's link overlay still covered the full height of the card, so the whole card stayed clickable. Test your own grid the same way, and mind the order: our check added the rule after Dawn's own CSS, which is where the `</body>` placement puts it.

Second, a style for a small badge, reusing Dawn's own tokens so it follows the color scheme and the corner radius you chose in the editor:

```css
.ec-save {
  display: inline-block;
  padding: 0.2rem 0.8rem;
  border-radius: var(--badge-corner-radius);
  background: rgb(var(--color-badge-background));
  color: rgb(var(--color-badge-foreground));
  border: 1px solid rgba(var(--color-badge-border), 0.1);
  font-size: 1.2rem;
}
```

Two habits keep CSS from breaking later. Reuse Dawn's variables (`--color-*`, `--badge-corner-radius`, `--page-width`) instead of hard-coding values, and prefer a setting to an override, because CSS that fights a setting is the first thing to break. Dawn scales the root font size to 62.5% in `theme.liquid`, so `1rem` is about 10px at default settings. Before adding fonts or scripts, read our [theme performance guide](https://www.ecompanda.co/blog/shopify-theme-performance-optimization-the-complete-guide).

## Liquid and section changes worth making

Our [Liquid guide](https://www.ecompanda.co/blog/shopify-liquid-templating-guide-master-shopifys-template) covers the language. In Dawn, three kinds of change are common and reasonable.

### A conditional note, with no file edit at all

Add a Custom Liquid block to the product page in the editor and paste:

```liquid
{%- if product.tags contains 'made-to-order' -%}
  <p>Made to order. Please allow extra time before dispatch.</p>
{%- endif -%}
```

Tag a product `made-to-order` and the note appears. It is stored with the page template, so it travels with theme updates. For richer product data, such as care notes, use [metafields](https://www.ecompanda.co/blog/shopify-metafields-complete-guide-unlock-custom-data) instead of tags.

### A savings badge on product cards

This one edits `snippets/card-product.liquid`, so it is a code change. Place it inside the card's information area, near the price. It works out the percentage from the first available variant:

```liquid
{%- assign variant = card_product.selected_or_first_available_variant -%}
{%- if variant.compare_at_price > variant.price -%}
  {%- assign pct = variant.compare_at_price | minus: variant.price | times: 100.0 | divided_by: variant.compare_at_price | round -%}
  <span class="ec-save">Save {{ pct }}%</span>
{%- endif -%}
```

Check products with several variants, because a product can have different compare-at prices per variant. If your store sells in more than one language, move the "Save" text into the `locales` files and output it with the `t` filter, as Dawn does for its own strings.

### Wording and the footer credit

Many "code" requests are really translation edits. Dawn keeps visible text in `locales/en.default.json`, so wording changes are safer there than in a section file. The footer credit comes from a `powered_by_link` output in `sections/footer.liquid`; we cover it in [removing "Powered by Shopify"](https://www.ecompanda.co/blog/remove-powered-by-shopify).

Run `shopify theme check` after any Liquid edit, to catch slips before a customer does.

### Adding a new section

Dawn already has banners, image with text, multicolumn, featured collection, collapsible content and a video section. Combine those first, because a page built from existing sections needs no code. When none will do, add a new file in `sections/`. This minimal strip has a color scheme, padding and up to four message blocks:

```liquid
{%- style -%}
  .ec-strip-{{ section.id }} { padding-block: {{ section.settings.padding }}px; }
{%- endstyle -%}

<div class="color-{{ section.settings.color_scheme }} gradient ec-strip-{{ section.id }}">
  <div class="page-width">
    {%- for block in section.blocks -%}
      <p {{ block.shopify_attributes }}>{{ block.settings.text }}</p>
    {%- endfor -%}
  </div>
</div>

{% schema %}
{
  "name": "Message strip",
  "tag": "section",
  "settings": [
    { "type": "color_scheme", "id": "color_scheme", "label": "Color scheme", "default": "scheme-1" },
    { "type": "range", "id": "padding", "min": 0, "max": 60, "step": 4, "unit": "px", "label": "Vertical padding", "default": 16 }
  ],
  "blocks": [
    {
      "type": "message",
      "name": "Message",
      "limit": 4,
      "settings": [
        { "type": "inline_richtext", "id": "text", "label": "Text", "default": "Your message here" }
      ]
    }
  ],
  "presets": [ { "name": "Message strip", "blocks": [ { "type": "message" } ] } ]
}
{% endschema %}
```

The `block.shopify_attributes` output lets the editor select a block when you click it, and the `presets` entry puts the section in the editor's Add section list. This file is yours, so Shopify's updates will not touch it, and will not fix it either.

One limit specific to Dawn: its blocks belong to individual sections. Shopify's newer "theme blocks" live in a `blocks` folder, can be reused across sections and can nest ([quick start](https://shopify.dev/docs/storefronts/themes/architecture/blocks/theme-blocks/quick-start?framework=liquid)). Dawn's repository has no such folder today.

## How updates reach a customized Dawn

When Shopify releases a new version of a Theme Store theme, you see a notice by the version number in Online Store and choose Add to draft themes ([updating themes](https://help.shopify.com/en/manual/online-store/themes/managing-themes/updating-themes)). Here is what happens next:

- The new version arrives as a draft named Updated copy of, followed by your theme's name. Your live theme is untouched.
- Editor customizations are copied across: theme settings, section layout and settings, new templates, app embeds.
- Code edits are included only if they do not conflict. The theme card then says either that code edits were included or that they could not be.
- If they could not, you must re-apply them by hand. Shopify's help also warns that code changes incompatible with an update are dropped in the new copy ([editing theme code](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/edit-code/edit-theme-code)).

So the working rule is simple. **Every code edit is a debt.** Keep a list of them, with the file name and the reason, in a note or a commit message. Before you publish an updated copy, compare it with the old one, check that your CSS selectors still exist, and test the cart and product page again.

Two Dawn-specific warnings. If your store still uses legacy customer accounts, Dawn 16.0.0 and later removes those templates, so upgrade your accounts first. And automated updates exist too, but Shopify says they are for bug and security fixes and do not change look, content or settings.

Developers who keep Dawn in their own repository can follow the README's method: add Shopify's repository as a remote called `upstream`, then fetch and pull. Expect conflicts in any file you edited, and merge a tagged release, because `main` can run ahead of the Theme Store.

## When Dawn is the wrong base

Dawn is a good default, not always the best choice. Its README says functionality and design default to "no" until a feature earns its place. Consider another base when:

- **You need deeply nested layouts.** Shopify's Horizon family, listed as free on the Theme Store (version 4.3.0 on 9 October 2026), advertises nested theme blocks on its Theme Store page. We did not open Shopify's launch announcement, so check its page before comparing.
- **Your design is far from Dawn's.** If most sections need rewriting, you are building a custom theme with extra steps. Read about [custom theme development](https://www.ecompanda.co/blog/shopify-custom-theme-development) before you start.
- **You need features Dawn leaves out** and each one means more code to carry through updates.
- **You are still comparing.** Our guides on [free themes](https://www.ecompanda.co/blog/free-themes-for-shopify) and [choosing a theme](https://www.ecompanda.co/blog/how-to-choose-a-shopify-theme-the-definitive-guide) help.

If your store is "Dawn plus 20 code edits," you have already forked it. Treat that as a decision with its own maintenance plan.

## Frequently asked questions

### Is Dawn really free, and who owns it?

Yes. Dawn is listed as free on the Shopify Theme Store and is made and maintained by Shopify. The source is public on GitHub under a licence that limits reuse to developing themes for Shopify, so it is source available, not open source.

### Will my customizations survive a Dawn update?

Editor changes carry over to the updated copy. Code edits carry over only when they do not conflict with the new version, and Shopify tells you which case you are in on the theme card. Always keep a list of your code edits and review the updated draft before publishing.

### Can I edit Dawn without knowing code?

Yes, for most things. The theme editor covers colors, fonts, buttons, cards, layout, and the order and content of every section. Shopify's help pages recommend code edits only when an app or the editor cannot do the job, and advise duplicating the theme first.

### How do I undo a change that went live?

Publish the previous theme again. When a new theme goes live, the old one moves to Draft themes with nothing lost. For a single file edited in the code editor, the Timeline view can restore an earlier version of that one file, but not a whole theme, and history is limited.

### Should I fork Dawn from GitHub or use the Theme Store copy?

For a merchant store, use the Theme Store copy: it receives Shopify's updates through Add to draft themes. Fork from GitHub when a developer team wants Git history, code review and a build process. The `main` branch may be ahead of the Theme Store, so base work on a tagged release.

## Where we can help

We build and maintain Shopify themes, including Dawn stores that have grown past what the editor can do. If you want a careful audit of your code edits, a safe update to the latest version, or a decision on whether to stay on Dawn, see our [services](https://www.ecompanda.co/services) or [get in touch](https://www.ecompanda.co/contact).

## Related

- [Shopify metafields and metaobjects, explained](https://www.ecompanda.co/blog/shopify-metafields-complete-guide-unlock-custom-data)
- [Shopify Liquid: a practical guide for theme editors](https://www.ecompanda.co/blog/shopify-liquid-templating-guide-master-shopifys-template)
- [Shopify Online Store 2.0: what it is and what changed](https://www.ecompanda.co/blog/shopify-online-store-2-0-features-everything-you-need-to-know)

---

Canonical HTML version: https://www.ecompanda.co/blog/shopify-dawn-theme-customization-the-complete-guide
