Fixes · New themes and apps

App works on the live theme but not on the new one

The fix

App embeds are switched on theme by theme. A theme you add as new, or build in git, starts with them off, so anything an app runs as an embed is missing there until you turn it on.

Some apps also write their own files into the published theme, and only that one. List what the live theme runs, switch the same embeds on in the new theme and copy the app files across, before anyone previews or publishes it.

01Why a new theme starts without your apps

Apps reach a theme in two ways. Most now use a theme app extension: app blocks you place in sections, and app embeds that run on every page. Shopify’s docs: “By default, app embed blocks are deactivated after an app is installed”, and the merchant turns each one on in the theme editor, under Theme settings > App embeds (Shopify developers). An embed is added to the theme’s config/settings_data.json once it has been switched on, so each theme carries its own set.

“If you opt to install apps for your theme, and later change your published theme, then you’ll need to re-activate those apps in your new theme as they won’t be active by default.”

Other apps write snippets and assets into the theme’s code, and some keep doing it whenever their settings change. They write to the theme they’re connected to, usually the published one. On this unanswered Shopify Community thread (Dec 2023), a partner asks whether app code is “injected into (only) the published theme”.

App makers document the same thing for their own apps. SmartSize: “app embeds are theme-specific, so a new theme starts with SmartSize switched off” (Jul 2026). BSS B2B Lock’s troubleshooting page lists “A new theme ignores B2B Lock” as a symptom, and says every time you change or switch themes to re-enable its embed under Customize > App embeds.

It hides because a preview looks finished. Nobody looks at it signed in as a trade customer, or with the tracking tool open, or waiting for the loyalty widget. What’s missing shows up the day the theme goes live, or in the numbers of a split test between two themes that weren’t running the same apps.

02Copy what the live theme runs

For store owners

  1. List what the live theme runs

    Open the live theme in the editor and click the App embeds icon in the sidebar. Note every embed that’s on.

  2. Switch the same ones on in the new theme

    Same place in the new theme: toggle each one on, then Save. Decide on purpose about any you leave off. Two chat widgets will clash, and a pop-up on one theme only skews a split test.

  3. Ask each app that added code to your theme

    If an app’s setup, or its support team, added code to your theme, ask them to do the same on the new theme, or to say which files to copy.

  4. Preview as each kind of shopper

    Signed out, signed in, signed in with trade or wholesale access, and from each country you sell to. Check trade prices, hidden products, loyalty, reviews, chat and sign-up forms.

For developers: compare the two themes

Each embed sits under current.blocks in config/settings_data.json, with a type that names the app and the block, disabled, and its settings. Pull the file from both themes and compare. Shopify starts the file with a comment block, so strip it before parsing:

The embeds switched on in each themesh
shopify theme pull --theme <live-theme-id> --only config/settings_data.json --path live
shopify theme pull --theme <new-theme-id> --only config/settings_data.json --path new

for t in live new; do
  sed '/^\/\*/,/\*\//d' "$t/config/settings_data.json" \
    | jq -r '.current | if type == "object" then .blocks // {} else {} end
        | to_entries[]
        | select(.value.type | startswith("shopify://apps/"))
        | select(.value.disabled != true)
        | .value.type' \
    | sed 's#/[0-9a-f-]*$##' | sort > "$t-embeds.txt"
done

diff live-embeds.txt new-embeds.txt
  • To switch an embed on in the new theme, use the editor, or copy its whole block entry, settings included, into the new theme’s settings_data.json. Copying the entries as they were, keys and settings included, worked for us.
  • App blocks don’t carry over either. When one is added, “a reference to the app block is added to the template JSON file” (Shopify developers), so a reviews widget or size chart placed in a product template is part of that template. Add it in the new theme’s editor, or copy the block entry into the new template.
  • For files an app wrote into the theme, compare the two themes’ file lists. Apps usually prefix theirs: all ten of one app’s files started bss-. Pull them from the live theme with shopify theme pull --theme <live-theme-id> --only "snippets/bss-*" --only "assets/bss-*".
  • If the new theme deploys from git, commit the copied files to its branch, since that is what the theme follows.
  • A copy is a snapshot. An app that writes its rules into the published theme only will write later changes there too, so copy them again shortly before you publish.

03Preview as every kind of shopper

  1. Run the comparison again

    The diff should list only the embeds you chose to leave off.

  2. Preview as each kind of shopper

    Repeat the owner’s preview checks on the new theme, and compare each one with the live site.

  3. Watch the tracking

    Open the preview with the browser’s network tab and check that each tracking or email tool you rely on sends its requests, as it does on the live theme.

  4. After publishing, check again

    The same checks on the live store, on the day it goes live.

From our work

04Two new themes, two missing halves

We’ve met both halves of this on stores we look after.

Embeds, on a beauty brand’s new theme (10 Aug 2026). The new theme was about to take half the store’s visitors in a split test against the live one, and it had none of the live theme’s app embeds: the analytics data layer and server-side tracking, email and SMS sign-up, loyalty, order editing, a delivery app and the wishlist’s hearts on collection pages. Half the visitors would have been measured differently, and their email and SMS sign-ups would have been missed. We switched on eight embeds with the live theme’s settings. Three we left off on purpose: a live chat (the new theme used a different one, and two would collide), an A/B testing app (a test inside a theme split test spoils both) and a spin-to-win pop-up (on one side only it would skew bounce rate and sign-ups, so both sides or neither).

App files, on a homeware brand’s new theme (22 Oct 2026). The brand sells some sizes to trade customers only, and uses BSS B2B Lock to hide them from signed-out visitors. The new theme already had the app’s files, carried over in its code, and the trade-only sizes still showed to everyone on the preview. BSS had written its lock rules into the published theme only, the day before and again that morning, and the new theme’s copy of its rules file was empty. We copied the app’s ten files across from the live theme, and the preview now hides those sizes from signed-out visitors as the live site does.

The bigger picture

05A new theme is when every app’s setup comes due

A new theme is the moment every app’s setup comes due again. If you’re moving theme, or testing two against each other, list every app that touches the storefront and check each one on the new theme, as the shopper it serves, before launch rather than after.

That check is part of how we run a new build or a rebuild.

06Sources

Every step and claim above comes from one of these, or from the fix on the store it describes.

  1. Shopify developers: Configure theme app extensions (app embed blocks)
  2. Shopify Help Center: Extend your theme with apps
  3. SmartSize: I changed my theme and SmartSize disappeared (Jul 2026)
  4. BSS Commerce: B2B Lock, common problems and fixes
  5. Shopify Community: What happens to themes when you install an app? (Dec 2023)

Sources checked on .

Contact

Moving to a new theme?

Tell us which apps the live theme runs, and when the new one should go live.