Skip to main content

Choosing a theme that works well with Atlas

What Atlas needs from a theme, why a current theme matters, and what to check before you commit to one.

Written by Eddie Lavandera

Atlas works with any Shopify theme that supports app embeds and app blocks, which in practice means a reasonably current theme. Atlas does not publish a minimum version and does not block older themes, but the recommendation is this: use a current theme and you will avoid most of the problems this collection exists to solve.

In this article:


What Atlas needs from a theme

Three things.

App embed support, so the Atlas Page Builder and Atlas Cart Upsells embeds can be switched on in Theme settings.

App block support on the product template, so the Atlas Bundler block can be placed there.

Room in the template, since Shopify limits how many blocks a theme's templates can hold.

Any theme from the Shopify Theme Store released in recent years meets the first two. Free themes including Dawn work well.


Why current themes work better

Older themes predate app blocks and app embeds. Where they support them at all, support can be partial, which produces the intermittent problems that are hardest to diagnose: a bundle block that will not place, swatches that do not render, a cart drawer that opens inconsistently.

💡 If you are choosing a theme now, take a current one from the Shopify Theme Store. If you are on something several years old and hitting odd Atlas behaviour, the theme's age is a reasonable first suspect.


What to check before committing

Before you buy a theme or make one live, check these. Every one is easier to verify now than to diagnose later.

Check

How

App embeds are supported

Open the theme editor, go to Theme settings, then App embeds. The section should exist.

The product template accepts blocks

Open the product template and confirm Add block offers an Apps category.

The theme is not already at the block limit

If you cannot add a block at all, see the 300-block article below.

Swatches behave

If you rely on variant swatches, test one bundle before rolling out.

It works with your other apps

Themes that heavily customise the cart are the ones most likely to conflict.

ℹ️ Test on a duplicate theme rather than your live one. Duplicate the theme in Shopify, enable the Atlas extensions on the copy, publish a test page to it, and preview. Nothing your customers see changes until you publish the copy.


Themes with a lot already in them

Shopify limits a theme's JSON templates to 300 blocks. Themes that ship with many sections and blocks, or stores that have added a lot over time, can be close to that limit before Atlas adds anything.

When there is no room, publishing fails with a clear message:

Your theme has reached Shopify's 300-block limit. We can't add the blocks Atlas needs to publish this page. Switch to a compatible theme or contact support for help.

This is a Shopify limit, not an Atlas one. See "Your theme has reached Shopify's 300-block limit".


Custom and heavily modified themes

A theme built for you, or one modified substantially by a developer, can work perfectly well. Two things to confirm with whoever built it:

App blocks are supported on the product template. Some custom themes render the product page in a way that leaves nowhere for an app block to go.

The cart is not fully custom. A custom cart drawer or a checkout that bypasses the Shopify cart will conflict with Atlas Cart Upsells and will not receive Atlas discounts.

⚠️ If your checkout does not go through the Shopify cart, Atlas discounts will not apply, because they are applied by Shopify Functions during the cart and checkout. This affects bundle discounts and cart drawer discounts equally, and no setting changes it.


Atlas does not supply a theme

Atlas builds pages and publishes them into a theme you already have. As of February 25, 2026, Atlas no longer generates or imports themes.

If you need a theme, choose one from the Shopify Theme Store and let Atlas build pages into it. See What Atlas does not do.


Next steps

Did this answer your question?