Back to templates

Template details

Solito iOS Web Payments

Solito monorepo example enabling zero-commission Stripe web checkout inside an iOS app, with Apple Pay supported.

About this template

Solito iOS Web Payments is a Solito monorepo example that redirects iOS app users to a Stripe-powered web checkout, letting developers sell digital goods without Apple's commission. It was generated with npx create-solito-app@latest and deploys its Next.js API routes to Vercel.

What is Solito iOS Web Payments?

Solito iOS Web Payments is a boilerplate monorepo that pairs an Expo/React Native iOS app with a Next.js web app so purchases happen through Stripe checkout in the browser instead of in-app purchase. It takes a selectable Stripe product and price as configuration and outputs a cross-platform app plus Next.js API routes that start a checkout session and handle Stripe webhooks. As of April 30, 2025, the approach avoids Apple's commission while still supporting Apple Pay in the web flow.

Key Features

  • Cross-platform navigation — solito handles navigation shared between the native and web apps.
  • Next.js 15 API routes — the apps/web/api folder holds checkout routes and an Apple .well-known route for domain association.
  • Expo 53 + React Native — the native app in apps/native runs as a dev client built with npx expo run:ios.
  • Stripe payments — stripe powers checkout, configured with a publishable key, secret key, webhook secret, price ID, and product ID.
  • Firebase authentication — included for auth and easily swappable for another provider.
  • React Navigation 7 and React 19 — with React Compiler enabled; Solito compatibility docs cover React 19.
  • One-click API deploy — a Vercel Deploy button clones the repo and prompts for all required environment variables.

Who is it for?

  • iOS developers selling digital goods — start a Stripe checkout in Safari from the native app instead of complying with in-app purchase.
  • Cross-platform teams — share screens in packages/app between Expo and Next.js, organized by feature rather than a screens folder.
  • React Native developers new to Solito — use the starter layout (apps, packages/app, provider, navigation) as a reference monorepo.

Use cases

  • Subscription and one-off sales: configure Stripe keys and price IDs to sell a product through web checkout from an iOS app, with Apple Pay available on supported devices.
  • Auth-gated purchases: use the bundled Firebase setup to tie checkout sessions to signed-in users, swapping in another provider if preferred.
  • Fast API prototyping: deploy only the Next.js web app via the Vercel button to test checkout and webhook routes before building the native client.

How does it work?

Install with yarn, run the web app with yarn web, and build the native dev client with npx expo run:ios inside apps/native. Afterwards, yarn native starts Expo with the dev client. The Apple .well-known route in apps/web/api provides the domain association used for web payment flows.

FAQ

Does using web checkout on iOS still allow Apple Pay?

Yes. The README states that even though users are redirected to the web to finish a purchase, Apple Pay remains supported in the web checkout flow. As of April 30, 2025, Apple does not charge a commission on this web-based checkout.

Is authentication included?

The template ships with Firebase for authentication, but the README notes it can easily be swapped out for another provider. Config is passed through the NEXT_PUBLIC_FIREBASE_CONFIG_JSON and FIREBASE_SERVICE_ACCOUNT_JSON environment variables.

What environment variables are required?

The Vercel deploy button lists APPLE_TEAM_ID, FIREBASE_SERVICE_ACCOUNT_JSON, NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_BUNDLE_IDENTIFIER, NEXT_PUBLIC_FIREBASE_CONFIG_JSON, NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, STRIPE_PRICE_ID, STRIPE_PRODUCT_ID, STRIPE_SECRET_KEY, and STRIPE_WEBHOOK_SECRET.

Does it include the native app deployment?

The Vercel button deploys only the API routes, with the web app as the root directory. The iOS app is built locally as a dev client through Expo and is not deployed by that button.

Screenshot of Solito iOS Web Payments