Why does Shopify CLI say my app embed extension "doesn't exist" every time I deploy?

If shopify app deploy keeps saying your app embed or theme app extension "doesn't exist" even though it's sitting right there in your project, the cause is almost always a mismatch between your local setup and what's registered against the app, not a broken extension.

app-embedshopify-clitheme-app-extensiondeployment

What's going on

A developer keeps running shopify app deploy to push an app embed (theme app extension) live, and instead of creating a new version, the CLI reports that the extension doesn't exist, even though the extension folder is sitting right there in the project and worked before. Retrying the deploy doesn't help; it fails the same way every time, which is the telltale sign this isn't a flaky network error but a real disagreement between what's on disk and what Shopify's backend has registered for the app.

This shows up most often after some change to the project's identity or structure: switching git branches, cloning the repo fresh on a new machine, renaming an extension folder, copying an extension from a template or another app, or wiring up a CI/CD pipeline to deploy automatically. In every one of those cases, the thing that changed isn't the extension's actual code, it's the identifying information the CLI uses to match your local extension to a specific record inside a specific Shopify app. When that link breaks, deploy can't find a matching extension to update, so it reports it as missing rather than creating or updating it.

Why it happens

Modern Shopify CLI identifies each extension by a handle defined in its configuration plus a link to a specific app, tracked through the app's client ID and some local state that ties your project to that app registration. A deploy is essentially a check between that local identity and the extension list Shopify's Partner Dashboard has on record for the app you're currently authenticated against.

Doesn't exist almost always means one of those identifiers no longer lines up: you're linked to a different app than the one where the extension was created, the handle or folder was renamed without updating the registered extension, local state went stale after a branch switch or fresh clone, or the CLI version is enforcing a newer validation schema than the one the extension was originally written against. CI/CD pipelines are especially prone to this because their credentials and app context are configured separately from a developer's local machine, so the two environments can silently drift apart.

5 ways to fix it

1

Confirm you're deployed to the right app

Run shopify app info from your extension's root directory and compare the client ID and app name to what you expect to see in the Partner Dashboard. If your project's app configuration file points at a different app than the one where the extension was originally registered, every deploy will report the extension as missing, because the CLI is checking a different app's extension list. Relink the correct app with shopify app config link and redeploy.

2

Check that the extension's handle matches what's registered

Modern Shopify CLI tracks each extension by the handle value set in its configuration, not by folder name alone. If you renamed the extension folder, changed the handle, or copied the extension from another project without updating it, the CLI treats it as a new extension locally while the platform still expects the old one, producing a doesn't exist mismatch. Compare the handle against the extension listed in Partner Dashboard under your app's Extensions page and make sure they match exactly.

3

Clear local CLI state and relink the app

Shopify CLI keeps some local state tying your project to a specific app registration, and that state can fall out of sync after switching git branches, restoring an old commit, or checking out the project fresh on another machine. When that happens, the CLI can reference an extension that no longer resolves against the app you're currently linked to. Re-run the app link step so the CLI re-authenticates and re-resolves your extensions against the live app configuration, then try the deploy again.

4

Update the CLI and rebuild before deploying

Shopify periodically updates the schema and supported extension types that the CLI validates against, so an outdated CLI version can misread or reject a valid extension, surfacing as a false doesn't exist error. Update to the latest Shopify CLI release and run a build step first to confirm validation passes cleanly before attempting the deploy again.

5

For CI/CD deploys, verify the pipeline's app credentials match your local setup

Automated deploys commonly hit this error because the CI environment authenticates using different stored credentials or a different app context than your local machine does. Confirm that whatever token and client ID your pipeline uses point at the exact same app you've been testing locally, since a mismatch there reproduces the identical doesn't exist error on every automated run even when a manual deploy from your machine works fine.

Bottom line

This is a configuration and linking issue, not a bug in the extension itself or something a storefront-facing app can fix for you. It comes down to making sure your local project, the app it's linked to, and what Partner Dashboard has registered all agree. Work through the checks above in order, starting with the app link, before assuming it's a platform bug. If the error persists after all of them line up, Shopify support or the Shopify CLI issue tracker is the right next stop.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.