Skip to main content
The Storefront API is safe to call directly from an Expo app. Published catalog reads are anonymous, cart access is scoped by a short-lived capability, and signed-in customer resources use a customer JWT. No API key or mobile BFF is required.

1. Create the app

2. Configure public values

Never put Crave admin, partner, or payment-provider secrets in an EXPO_PUBLIC_ variable.

3. Create the client

4. Load the merchant and create a cart

SecureStore keys accept only alphanumeric characters, ., -, and _; the example encodes every dynamic component before composing dot-delimited keys. The environment, merchant, and location scopes prevent credentials from crossing applications or deployment tiers. Store only the small cart session, merchant-scoped customer JWT, and receipt capability there—not cart contents or API caches. Clear the guest cart capability after claim, deletion, expiry, or terminal checkout handling; retain only the returned revision when a claimed cart remains customer-authenticated. Call customerTokenStore.clear() on logout. Store a deep-link receipt capability with receiptTokenStore.set(receiptId, token) only when resume support requires it, and remove it after terminal display or expiry. If the API returns CART_CONFLICT, fetch the latest cart before asking the customer to retry. Native requests normally send no browser Origin header, so they do not require CORS registration. If you also ship an Expo web build, register that exact browser origin with Crave; never use a wildcard workaround. marketplaceId is optional attribution for the app source, such as "mobile"; it is not a location ID. The route already scopes the cart to locationId. For a signed-in shopper who still has a guest-capability cart, set the named includeCustomerContext option to true on discount or payment-intent calls that need customer-aware validation or Stripe customer association. Omit it for guest checkout; a claimed cart uses the customer JWT automatically.

Next steps

Manage Cart

Learn the capability and revision lifecycle.

Checkout Flow

Integrate payment and authoritative order-result polling.

Slack Community

Ask questions and get help from the Crave team and community.

Email Support

Reach out to hello@craveup.com for direct support.