Open-source project
Shopify/dawn avatar
Shopify/dawn

dawn: the update guide tells you to pull a branch that may hold unreleased code

Shopify's first source available reference theme, with Online Store 2.0 features and performance built-in.

3,111 stars4,506 forksLiquidNOASSERTION

At a glance

What is it?
Shopify's reference theme, built to demonstrate what a theme should and should not do, with four principles stated more firmly than most design documents manage and a continuous integration setup that checks three kinds of page. The documentation is unusually direct about its own limits, including one warning that the default branch is not what merchants actually get.
Who is it for?
dawn is worth reading whether or not you build Shopify themes, because the four principles are a compact statement of where a storefront's logic belongs, and the enforcement is real rather than aspirational. Two things to know before you build on it directly.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 12 days ago.
What is it written in?
Mainly Liquid, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • Shopify/dawn3,111 ★ · +22
Star history
Repository2026-09-242026-11-14
Shopify/dawn3.1k3.1k

22 Stars in the last 51 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The two sections that contradict each other sit next to one another

One note says the default branch may contain code for features that have not been released yet, and that the stable version of the theme is the one in the theme store. The very next section explains how to keep a fork current, and it does so by pointing at that same branch. The procedure is four commands: list your remotes, add a remote pointing at this repository, fetch it, and pull its default branch into yours.

sh
git remote add upstream https://github.com/Shopify/dawn.git
git fetch upstream
git pull upstream main

So the documented way to track upstream is the one the preceding paragraph warns you not to treat as stable. Nothing in the instructions offers pinning to a tag instead, even though numbered releases exist and the newest is two months older than the last commit. The section does explain what the remote is for, which is keeping theme fixes flowing into a derived theme, and that is a real need; it just does not reconcile the two statements.

The repository is not the artefact merchants install

Three different statements describe the status of this code. The description calls it Shopify's first source available reference theme. The licence section carries a copyright line naming the company and points at a licence file for the terms. And the repository's own licence field is empty, recording no assertion rather than naming anything, so the terms a reader needs are in a file the readme points to rather than in the metadata tooling reads. The version story is similar. The newest numbered release is sixteen, cut in August, while the last commit is in October, and the note about unreleased features explains the gap: what people actually get is the copy published through the theme store, and this branch is ahead of it.

Two of the four principles exist to forbid things

The design principles read less like aspirations than like a list of refusals. One says HTML must be rendered on the platform's servers using the template language, that business logic and platform primitives such as translations and money formatting do not belong on the client, and that rendering parts of a page asynchronously is acceptable but should be done sparingly as a progressive enhancement. Another says the web does not require each page to render pixel-perfectly in every browser engine, and that semantic markup and progressive enhancement are what keep a theme functional regardless of browser. A third says functionality and design default to no until they meet the stated requirement, that code ships on quality, and that a theme should not support every feature the platform offers. The fourth is the positive one: target current browsers fully while keeping older ones working through progressive enhancement rather than compatibility shims.

A starting point you are told not to submit unchanged

The getting-started section recommends treating the theme as a base for new work, and then draws a line for anyone planning to publish. You may use it as a starting point for a theme destined for the theme store, but the submission has to be substantively different from this one so that it adds value for merchants, and there is a separate link explaining the permitted ways to use it. The theme store section then describes the commercial side: it is where merchants find themes, a theme partner can create themes and reach an international audience, and there is a requirements list to follow and a partner programme to apply to. So the repository is positioned twice at once, as the canonical example and as a base you are expected to depart from.

The performance gate covers three kinds of page

Continuous integration is described as a starting point rather than a finished setup, and two actions run in it. One runs a series of Lighthouse audits, and the pages named are the home page, product pages and collection pages, with the stated purpose of making sure newly added code does not degrade storefront performance over time. The other runs the theme linter on every commit. The coverage is the part to notice: the platform's theme layout also includes cart, search, blog, article, generic page, policy and customer-facing templates, and none of those is in the audit list. So the pages a merchant sees first are protected against a regression and the rest are not, which is a reasonable trade for a starting point and a gap a derived theme will have to close itself.

Validation is one linter command and two configuration files

The recommended way to check a theme is a dedicated linter, runnable from a terminal through the platform's command line tool:

bash
shopify theme check

It is also wired into the editor experience. The readme says the linter has been added to the theme's list of editor extensions, so that opening a cloned copy in a specific editor prompts you to install the corresponding extension, and it links both the linter's repository and its marketplace listing. Two configuration files sit at the repository root: one for the linter and one for a general-purpose source formatter. The formatter configuration is the odd one in a project whose primary language is a template language rather than the one that formatter targets, and it points at the theme's root rather than only at its scripted sections.

The directory layout is a contract with the platform

Seven directories make up the theme, and they are not arranged by the author's preference: assets, configuration, layout, locale files, sections, snippets and templates are the names the platform looks for, so this tree is dictated by the runtime rather than chosen. Alongside them sit the readme, a licence file, the linter and formatter configurations, a release notes file at the root, and a continuous integration directory. There is no package manifest, which follows from the template language having no build step. One reference in the readme does not resolve against that tree: the editor extensions list it points at, with a leading slash in the path, is inside a directory the top level does not contain. Nothing in the repository tests the templates themselves either, so the continuous integration workflow is the only automated check, and the readme offers it as something to build on rather than as a finished arrangement.

Editorial conclusion

dawn is worth reading whether or not you build Shopify themes, because the four principles are a compact statement of where a storefront's logic belongs, and the enforcement is real rather than aspirational. Two things to know before you build on it directly. The default branch is not the stable artefact, and the instructions for staying current pull that branch anyway, so a fork that follows the documented process can pick up code for features that have not shipped. And the performance gate covers home, product and collection pages only, which means the templates you add yourself are the ones nothing checks.

Frequently asked questions

Is Shopify Dawn a 2.0 theme?

Yes. The theme is described as having Online Store 2.0 features built in, and the whole approach is HTML first with JavaScript only as needed, with HTML rendered on the platform's own servers using the template language rather than assembled in the browser.

what is shopify dawn theme

Shopify's first source available reference theme, described as a reference for building Shopify themes and recommended as a starting point for new theme work. It is also the theme a store submission must be substantively different from, and the stable version is the one published in the theme store rather than the repository's default branch.

How do I keep a theme up to date with dawn?

By adding a second remote pointing at the theme's repository, verifying that both remotes exist, fetching from it and pulling its default branch into your own. The readme notes in the preceding section that this branch may include code for features that have not been released, and offers no tag-based alternative.

What does dawn check in continuous integration?

Two actions. One runs a series of Lighthouse audits on the home page, product pages and collection pages to catch performance regressions in newly added code. The other runs the theme linter on every commit. The workflow itself is offered as a starting point rather than a finished configuration.

How is dawn validated locally?

With the theme linter, runnable from a terminal through the platform's command line tool as a check command. The readme also says the linter is listed among the theme's editor extensions, so opening a cloned copy in that editor prompts you to install the matching extension. A linter configuration file is committed at the repository root.

Can I submit a dawn-based theme to the Shopify Theme Store?

You can use the theme as a starting point, but the submission has to be substantively different from it so that it adds value for merchants. Publishing commercially also means following the store's requirements list and applying to become a theme partner, since that is the route to reaching an audience of merchants.

Official sources

  1. Issues
  2. README
  3. Releases
  4. Shopify/dawn on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/shopify-dawn.svg)](https://hysenlabs.com/projects/shopify-dawn)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/shopify-dawn.svg)](https://hysenlabs.com/projects/shopify-dawn)

Was this useful?