Why is my app being rejected for "generating a theme" instead of being approved as an app?
Shopify draws a firm line between apps that extend an existing theme and apps that produce whole themes — and generated-theme submissions keep tripping the wrong review track.
What's going on
A merchant or developer builds (or uses a builder tool that produces) a full custom Shopify theme meant to be installed across multiple stores, submits the app for public App Store review, and gets bounced back with a rejection saying the submission counts as "theme distribution" rather than an app. The confusing part is that the code works fine on a live store — the rejection isn't about bugs, it's about which Shopify review pipeline the submission belongs in.
Shopify splits public distribution into two separate tracks with separate rulebooks: the App Store (for apps, including anything that adds functionality via Theme App Extensions — app blocks and app embed blocks merchants drop into their existing theme) and the Theme Store (for complete themes, which must meet Online Store 2.0 architecture requirements, originality standards, and performance/accessibility bars far stricter than typical app review). When an app's real output is a full theme — new templates, new theme.liquid, a whole design system generated per merchant — Shopify's reviewers classify that as theme distribution and route it out of App Store review, even if you never intended to submit it to the Theme Store.
This shows up most often with AI site generators, landing-page builders, and "instant storefront" tools that spit out a ready-made theme per merchant rather than adding a component to whatever theme the merchant already has installed. It also catches apps that overwrite core theme files (like theme.liquid) directly instead of using the supported app-blocks framework, since that pattern looks structurally identical to installing a new theme regardless of the app's stated purpose.
Why it happens
Shopify maintains two separate, non-overlapping review pipelines on purpose: App Store review (fast, broad, focused on functionality and security) and Theme Store review (slow, narrow, focused on design originality, code quality, and storefront performance since themes control the entire customer-facing experience). Letting apps bypass Theme Store review by shipping full themes through the App Store would undercut the quality bar the Theme Store exists to enforce, so Shopify's app requirements explicitly disallow apps whose core function is producing or installing complete themes.
The supported way for an app to touch a merchant's storefront design is Theme App Extensions (app blocks and app embed blocks) introduced with Online Store 2.0 — these let an app's UI live inside whatever theme the merchant already has, survive theme switches, and get reviewed under ordinary app requirements. Anything that instead replaces the merchant's theme wholesale, or generates a new one per install, structurally matches what the Theme Store is built to gate, which is why reviewers flag it as theme distribution rather than app functionality.
5 ways to fix it
Rebuild the feature as a Theme App Extension (app blocks/embeds) instead of shipping a full theme
If your app's real goal is to add a section, banner, upsell widget, or layout tweak to a merchant's store, Shopify's supported path is a Theme App Extension: app blocks and app embed blocks that merchants drag into their existing theme from the theme editor. This ships through normal App Store review with none of the Theme Store's originality and performance bars, it survives theme switches because it isn't tied to one theme's code, and merchants keep the theme they already picked. For most 'we generate a landing page/section for you' use cases this is a straight swap that resolves the rejection entirely.
If you genuinely need to distribute a full theme, submit it to the Theme Store, not the App Store
Shopify treats 'an app that produces or installs a complete theme for merchants to use' as theme distribution, which has its own review track (Theme Store requirements) separate from app review. That track requires Online Store 2.0 architecture (JSON templates, sections everywhere), no duplicated Shopify-native functionality, defined performance and accessibility bars, and a distinct, non-templated design per submission. Read the current Theme Store requirements doc closely and resubmit through that channel rather than trying to get a generated theme approved as an app.
Check whether you even need review at all
If the 'generated theme' is a one-off custom build for a single client or your own store, not something you're distributing to many merchants through the App Store or Theme Store, none of this review process applies to you. You (or the merchant) can upload and publish it directly via the Shopify admin's Themes page or the Shopify CLI as a custom/private theme with zero review. Rejections only bite when you're trying to distribute the same generated output to multiple stores through Shopify's public listings.
Get the specific rejection reason and address it point-by-point
App Store rejection emails usually cite the exact requirement clause that was triggered (commonly under the 'Themes' or 'Duplication' sections of Shopify's App Requirements). Pull that language, compare it against what your app actually installs, and fix the specific conflict (e.g., overwriting theme.liquid, injecting full section sets outside the app-blocks framework) rather than guessing. This is usually faster than a broad rebuild if only one part of your app crosses the line.
Appeal or ask for clarification through Partner support
If you believe the rejection mischaracterizes your app (for example, it modifies only a small, scoped part of an existing theme and shouldn't count as 'distributing a theme'), reply to the review email or open a case with Shopify Partner support asking for clarification on which requirement applies. Reviewers can and do reclassify borderline submissions once the actual scope of the change is clarified in writing.
Bottom line
This is fundamentally a classification problem, not a bug: Shopify draws a hard line between "apps that extend a merchant's existing theme" (reviewed under App Store requirements, built with Theme App Extensions/app blocks) and "themes" (reviewed separately under Theme Store requirements, with much stricter originality and performance bars). If your app auto-generates full theme code for merchants to install, expect it to be routed to the Theme Store track or rejected outright — the fix is almost always to either scope the feature down to app blocks or formally submit through the Theme Store, not to keep resubmitting the same generated theme as an app. No app purchase fixes a policy mismatch; this is a build-and-resubmit issue, and if you're stuck rearchitecting the extension a Shopify dev agency can usually save you a review cycle or two.
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.