Manage your themes
Activate, preview, and roll back themes in Managing themes.
Already have a theme packaged as a .zip — exported from a developer, copied from another store, or built locally? You can import it straight into your theme library. The platform creates a brand-new theme, unpacks the archive into its draft, and hands you back a report of anything it skipped.
Open Online store → Themes, then Add theme → Upload zip file (there’s also a quick Upload zip button in the Theme library header). Both open the Import theme from .zip dialog.
A theme archive is just the standard theme folder structure zipped up. The importer reads files from these top-level folders:
assets/ — CSS, JavaScript, images, fonts, and other static filesblocks/ — reusable theme blocksconfig/ — settings_schema.json and settings datalayout/ — theme.liquid and any alternate layoutslocales/ — translation JSON filessections/ — section Liquid and JSONsnippets/ — reusable Liquid snippetstemplates/ — page templates (index.json, product.json, and so on)Anything outside these folders, or with an extension the folder doesn’t allow, counts as an unsupported file (see below). The archive can wrap everything in a single top-level folder (for example my-theme/templates/index.json) — the importer detects that wrapper and strips it automatically, so both flat and wrapped zips work.
Open Online store → Themes and choose Add theme → Upload zip file.
Enter a Theme name (required) and an optional Description. The name is how the theme shows up in your library — there’s no rename later, so pick it now. If the name clashes with an existing theme it’s still allowed; names don’t have to be unique.
Under Theme .zip file, pick your archive. The field accepts .zip only. Once selected, the dialog shows the file name and size so you can confirm you grabbed the right one.
Decide on the two options (covered below), then press Import theme. The button shows Importing… while the archive uploads and unpacks.
On a clean import the new theme is created as Unpublished, its draft is populated from the archive, and you’re taken straight into the editor. If anything was skipped, you stay on a summary screen first — see The skipped-files report.
The new theme always lands as an Unpublished library theme with a fresh working draft. Importing never touches your live storefront — publishing it is a separate, deliberate step. See Managing themes for how to activate it once you’re happy.
Two checkboxes in the dialog control how strict the import is.
On by default. With this checked, the importer refuses any archive that couldn’t actually go live, so you don’t end up with a broken theme in your library. To pass, the archive must contain:
layout/, including layout/theme.liquidconfig/settings_schema.jsontemplates/index.jsonlocales/*.default.json)If one of these is missing, the import fails with a message explaining what’s absent, and no theme is created. Uncheck this only when you’re deliberately importing a partial theme — for example a starter you intend to finish in the editor before publishing.
Off by default. This decides what happens when the archive contains a file the importer doesn’t recognise — something in an unknown folder, or a file type a folder doesn’t allow.
Some entries are always dropped quietly, whether or not “ignore unsupported files” is on — they’re never errors and never appear in the skipped list:
__MACOSX/ folders, .DS_Store, Thumbs.db, and desktop.iniThe importer also enforces a few safety rules and will reject the whole archive if it sees:
Sections/Hero.liquid and sections/hero.liquid).., control characters, or backslash tricksArchives are capped to keep imports fast and safe:
| Limit | Maximum |
|---|---|
Compressed .zip size | 50 MB |
| Uncompressed total | 120 MB |
| Supported theme files | 1,500 |
| Single code file (Liquid/CSS/JS/JSON) | 256 KB |
| Single asset (image/font/etc.) | 20 MB |
If an archive exceeds any of these, the import fails with a message naming the limit it hit. Trim large assets or split the theme before retrying.
When you import with Ignore unsupported files on and the archive did contain unsupported entries, the dialog switches to an Import complete summary instead of dropping you in the editor. It shows:
Review the list to make sure nothing important was left out. Then press Open editor to start working on the imported theme, or Close to return to the Themes page (the theme is already saved either way). A clean import with nothing skipped won’t show this screen — it goes straight to the editor.
templates/, sections/, …) and not, say, a parent directory full of unrelated files.Manage your themes
Activate, preview, and roll back themes in Managing themes.
Edit theme code
Open the imported theme’s Liquid, CSS, and JSON in Edit theme code.
Visual editor
Adjust sections, blocks, and settings in Using the visual editor.
Theme architecture
How the folder structure fits together in Theme architecture.
Related: Themes & the visual editor · Files · Staff accounts