Shopify app development.
Including the parts that fail review.
Writing the feature is the easy half. The half that sinks timelines is the review bar — the storefront performance budget, the design gates a human reviewer checks by hand, the scopes that look granted and are not. We have been through it with our own app, so those are known costs here rather than discoveries.
What we build
- Embedded appsAdmin apps that live inside Shopify with App Bridge, session-token auth and Polaris web components — including the specific ones reviewers check for, like the app nav and the contextual save bar. An app that opens in its own tab reads as unfinished, and reviewers treat it that way.
- Theme app extensionsStorefront surfaces that render in Liquid with no external scripts. This is the architectural decision that makes the performance requirement free instead of a retrofit, and it is the one most teams skip.
- Private & custom appsNot everything belongs on the App Store. If it exists to run your operation — a fulfilment bridge, an ERP sync, a pricing engine — it should be a custom app, which skips review entirely.
- Rescue workApps stuck in review, apps failing the performance bar, apps whose scopes silently stopped working after a change. We publish what causes each of those; we also fix them.
We publish what we know, which is the fastest way to check us
Read the real Built for Shopify criteria — the pages currently ranking for that term quote thresholds that appear nowhere in Shopify's documentation. Then read the metafield and metaobject traps and Managed Pricing plan detection. If a guide tells you something you did not know, that is the standard of the work.
The bar we build to by default
These are Shopify's own Built for Shopify thresholds. Retrofitting them onto a finished app costs more than architecting for them, so we start here:
| Requirement | Threshold |
|---|---|
| Admin LCP (p75) | ≤ 2.5 seconds |
| Admin CLS (p75) | ≤ 0.1 |
| Admin INP (p75) | ≤ 200 milliseconds |
| Storefront impact | ≤ 10 Lighthouse points |
| App block JavaScript | 10 KB raw, not gzipped |
The last row catches almost everyone: the budget check reads the uncompressed file, so a 14 KB script that gzips to 4 KB still fails the deploy.
How an app engagement runs
- 1 · Decide the shapePublic App Store app, or a custom app for your store alone? This single decision changes the timeline by weeks, because only one of them goes through review.
- 2 · Scopes and data modelWhere the data lives — your own database, or app-owned metaobjects inside the merchant's store. The second option is what lets the storefront surface be pure Liquid.
- 3 · BuildEmbedded admin plus the theme app extension, with the design gates in from the first commit rather than bolted on before submission.
- 4 · SubmissionListing copy, screenshots at the exact required dimensions, the privacy surface, the demo store, and the screencast. Reviewers reject on listing problems as readily as on code.
- 5 · After approvalBilling detection wired and verified against a real paid subscription — not against a development store, where every plan shows as $0 and correct code looks broken.
Questions we get asked before signing
How long does App Store approval take?
The build is the predictable part; review is not. Plan for iterations — first submissions are commonly rejected on listing details and design gates rather than on functionality. Building to the criteria from the start is what keeps that to one round instead of four.
Can you take over an app someone else built?
Yes, and a fair amount of our app work is exactly that. The usual finding is architectural: a storefront surface built as an injected script rather than a theme app extension, which is what puts the performance requirement permanently out of reach.
Do we need Built for Shopify status?
Not to launch. It matters for distribution — in our own competitive research the badge visibly outranked review volume, with apps carrying around thirty reviews sitting above category incumbents with more than a thousand. The prerequisites include 50 installs from paid shops and 5 reviews, so it is a post-launch goal you should build toward, not a launch blocker.
What does Shopify take?
Shopify handles billing through the App Store and takes a revenue share. Managed Pricing means you write no Billing API code at all — but nothing notifies your app when a merchant changes plan, which is a real gap you have to engineer around.
Can you build just the theme app extension?
Yes. If you already have an app and the storefront half is what is failing your performance budget, that is a well-scoped piece of work on its own.
Bring us the app, or the idea for one
If it is already built and stuck, we will tell you what is blocking it. If it does not exist yet, we will tell you whether it should be a public app or a custom one — that answer alone is worth the call.
Book a call →More on Shopify
Custom theme development
Storefronts written in Liquid from an empty folder, not reskinned from Dawn.
Store speed & Core Web Vitals
Measured with real Chrome instrumentation, then fixed where the numbers point.
Everything we have written down
Doc-verified guides on the App Store bar, theme app extensions, billing and metaobjects.