Shopify guides
Written from shipping real apps and themes to the Shopify App Store and Theme Store — and verified against Shopify's own documentation, because a lot of what circulates on these topics is out of date or simply wrong.
The guides
Built for Shopify: the real requirements
The actual thresholds — 50 paid installs, 5 reviews, p75 LCP 2.5s / CLS 0.1 / INP 200ms — and the widely repeated numbers that appear nowhere in the docs.
Fixing "Translation missing"
Why your app block echoes your own text inside an error string, the one-line Liquid fix, and why translatable schema defaults don't work in app blocks.
Managed Pricing: reading the merchant's plan
No webhook fires when a plan changes. The three read paths ranked, why gating on the plan name breaks, and the $0 dev-store trap.
Five metafield & metaobject traps
Separate scopes for entries and definitions, product search that returns zero rows with no error, and a scope change that leaves you on the old token.
Why these exist
Every guide here came out of something that cost us real time on a real build. We write them down for two reasons: so we do not solve the same problem twice, and because on several of these topics the pages currently ranking are factually wrong — quoting thresholds and requirements that appear nowhere in Shopify's documentation.
So each one follows the same rules:
- Verified against the source. Where Shopify publishes a number, we quote Shopify's number. Where we are reporting observed behaviour that Shopify has not documented, we say so explicitly rather than presenting it as official.
- Specific enough to act on. The exact scope name, the exact Liquid, the exact threshold — not "optimise your app's performance".
- Honest about what we do not know. Where a behaviour works today but is undocumented, that gets flagged, because building on it is a decision you should make with your eyes open.
What we are writing next
From the same source — problems we have already hit and solved:
| Guide | The thing that catches people |
|---|---|
| App block JavaScript budgets | The 10 KB limit is measured on the raw file, not the gzipped one — so a script that compresses to 4 KB still fails the deploy. |
| App Store listing specs | Screenshot dimensions are enforced exactly (1600×900 desktop, 900×1600 mobile) and alt text is mandatory at 64 characters. |
| Expiring offline tokens | Stored offline tokens now lapse in about a day, so any out-of-band script reading one from your database starts failing on its own schedule. |
| Shopify Markets & RTL | Getting Arabic onto indexable URLs with correct hreflang, instead of a language switcher search engines never execute. |
We build the things we write about
A Shopify theme in the Theme Store, a size-recommendation app built to the Built for Shopify bar, and custom storefronts for brands that need to grow.
Book a call →