# Theme requirements

> What your theme needs for storefront widgets. App blocks need Online Store 2.0. The cart drawer and instant updates need Shopify's storefront cart events.

Source: https://backtrackhq.com/docs/get-started/theme-requirements/

Checkout rules don't depend on your theme. Storefront widgets and
upsell offers do, in three ways:

- **Online Store 2.0:** app blocks need it.
- **The app embed:** the cart drawer parts and one-line tags need it.
- **Shopify's storefront cart events:** the cart drawer parts, and
  updates the moment the cart changes, need a theme that sends them.

Every widget draws when the page loads, on any theme that can hold it.
That part needs no events.

## What each feature needs

| Feature | OS 2.0 | App embed | Cart events | Without them |
| --- | --- | --- | --- | --- |
| App blocks | Yes | No | No | No AndOr blocks under **Add block**. Use the app embed and one-line tags. |
| One-line tags | No | Yes | No | The tag stays empty. |
| Widgets when the page loads | Blocks only | No | No | Works. |
| Instant updates | No | No | Yes | Updates on the next page load. |
| Cart drawer parts | No | Yes | Yes | Nothing in the drawer. Shoppers see them on the cart page. |
| **Cart drawer** place on an offer | No | Yes | Yes | The offer shows on the cart page and product page only. |
| Upsell **Add** opens the drawer | No | No | Yes | The add works, then the page reloads. |

- **OS 2.0** is Online Store 2.0. **Cart events** are Shopify's
  storefront cart events.
- **Instant updates:** the goal bar, goal suggestions, the volume
  picker, the bundle card, and the Buy X get Y and gift banners follow
  the cart the moment it changes, with no reload.
- **Cart drawer parts:** the goal bar, the gift slot and the Buy X get Y
  claim row in the cart drawer.

> **Note:** An upsell add always works. On a theme without the events,
> it reloads the page instead of opening the drawer.

## Online Store 2.0

App blocks need an Online Store 2.0 theme. Every theme in the Shopify
Theme Store today is one. Older themes, like Debut and Brooklyn, are
called vintage themes.

On a vintage theme:

- **Add block** has no AndOr blocks.
- The app embed works. Turn it on as usual.
- A developer can paste [one-line tags](https://backtrackhq.com/docs/developers/one-line-tags/)
  and the [product card recipes](https://backtrackhq.com/docs/developers/product-card-recipes/)
  into theme code.

A 2.0 theme can still refuse a block in one place. A section takes app
blocks only when the theme allows it there. Most product and cart
sections do. Some custom sections do not. There, use a one-line tag.

**To check your theme:** open the theme editor on a product page,
click **Add block** and open **Apps**. If you see the AndOr blocks, your
theme takes app blocks.

## Shopify's storefront cart events

Shopify added standard storefront events in June 2026. A theme sends
`shopify:cart:view` when the cart drawer opens and
`shopify:cart:lines-update` when the cart changes. AndOr listens for
these two. Your theme has to send them. AndOr can't add them for you.

### Themes known to send them

- **Horizon 4.0 or later**, and the free themes built on it: Atelier,
  Dwell, Fabric, Heritage, Pitch, Ritual, Savor, Tinker and Vessel, at
  their latest version.
- **Dawn 15.5 or later**, and the free themes built on it: Colorblock,
  Crave, Craft, Origin, Publisher, Refresh, Ride, Sense, Spotlight,
  Studio, Taste and Trade, at their latest version.

Most paid themes don't send them yet. A theme can add them in any
update, so check after you update yours. Vintage themes never will.

For where blocks go and known quirks on each tested theme, see
[Themes](https://backtrackhq.com/docs/themes/overview/).

> **Caution:** The version is a hint, not a promise. A theme that a
> developer changed, for example with a custom cart drawer, can stop
> sending the events. Preview the cart drawer to be sure.

**To check your theme:** add a product to the cart and open the cart
drawer on your store. If your AndOr goal bar or gift slot shows there,
your theme sends the events. In AndOr, the **What's next** panel also
warns you. It shows when your live theme is a Horizon or Dawn version
too old for the cart drawer.

### When your theme doesn't send them

- The widgets on the page still draw when it loads.
- After a shopper changes the cart without a reload, the goal bar and
  the pickers show the old cart until the next page load.
- The cart drawer shows no AndOr parts. Add the **AndOr Order goal**
  and **AndOr Offer picker** blocks to the cart page, so shoppers see
  them there.

A developer can add the events to a custom theme. See
[Cart drawer](https://backtrackhq.com/docs/developers/custom-themes/#cart-drawer).

## Related

- [Install and turn on the app embed](https://backtrackhq.com/docs/get-started/install/)
- [Theme and app compatibility](https://backtrackhq.com/docs/resources/compatibility/)
- [Widgets not showing](https://backtrackhq.com/docs/help/widgets-not-showing/)
