Skip to content

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/scopes

Server helpers (@shopify/shopify-app-react-router) ​

CallWhere
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 ​

FactValue
Current stable API version2026-10 (next: 2027-01)
Version cadence / supportQuarterly / ≥ 12 months
GraphQL-only for new public appsSince 2025-04-01
Expiring offline tokensRequired for public apps created ≥ 2026-04-01; all public apps by 2027-01-01
Expiring token lifetimesAccess 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