Appearance
Cheatsheet
CLI
bash
shopify app init # new app (React Router template)
shopify app dev # local dev + tunnel (p = preview, g = GraphiQL)
shopify app generate extension # add an extension
shopify app deploy # release config + extensions as a new version
shopify app config use <name> # switch toml (staging/prod)
shopify app env show # print key/secret/scopesServer helpers (@shopify/shopify-app-react-router)
| Call | Where |
|---|---|
authenticate.admin(request) | Admin pages → { admin, session, billing } |
authenticate.webhook(request) | Webhook routes → { topic, shop, payload } |
authenticate.public.appProxy(request) | Storefront app proxy |
unauthenticated.admin(shop) | Background jobs (stored offline session) |
Key dates & numbers
| Fact | Value |
|---|---|
| Current stable API version | 2026-10 (next: 2027-01) |
| Version cadence / support | Quarterly / ≥ 12 months |
| GraphQL-only for new public apps | Since 2025-04-01 |
| Expiring offline tokens | Required for public apps created ≥ 2026-04-01; all public apps by 2027-01-01 |
| Expiring token lifetimes | Access 1 h, refresh 90 days (rotates) |
| BFS Web Vitals (p75) | LCP ≤ 2.5 s · CLS ≤ 0.1 · INP ≤ 200 ms |
Mandatory webhooks
customers/data_request · customers/redact · shop/redact · plus handle app/uninstalled
Billing mutations
appSubscriptionCreate · appUsageRecordCreate · appPurchaseOneTimeCreate · appSubscriptionCancel