A reusable Expo SDK 57 mobile SaaS starter with Supabase Auth, Supabase database foundations, RevenueCat subscriptions, push notifications, remote config, feature flags, onboarding, analytics scaffolding, theming, localization, and developer diagnostics.
This repository is intended to be copied into a new product and customized from central configuration files rather than by editing infrastructure code throughout the app.
npm install
cp .env.example .env
npx expo start --dev-clientFill .env with the public mobile values from your own Supabase and RevenueCat projects. Do not commit .env.
Because this app uses native modules such as RevenueCat and Expo Notifications, use a development build. Expo Go is not the supported target for the full template.
Start with:
src/config/app-config.tsfor product name, legal URLs, support email, entitlement ID, usage limits, and feature flags.src/config/branding.tsfor brand colors and display identity..env.examplefor required public environment variable names.
Do not store service-role keys, RevenueCat secret REST API keys, webhook secrets, notification admin secrets, or other server secrets in the mobile app.
The canonical database migration source is:
supabase/migrations
Apply migrations to a linked Supabase project with:
npx supabase link --project-ref <project-ref>
npx supabase db pushDeploy Edge Functions from this repository after linking the project. See the setup docs for each function and secret.
RevenueCat remains the payment source of truth. Supabase public.subscriptions is a server-side mirror used by app queries, admin views, analytics, and limits.
Keep the entitlement configured in RevenueCat aligned with:
Saas Starter Template Pro
- Developer Health and diagnostics are kept for internal testing, but normal users must not see internal tooling.
src/features/example-featureis a removable example module.- RevenueCat Test Store behavior is development-only and uses accelerated renewals and expirations.
- Known Android dev-client navigation layout-shift behavior is documented in Known Issues.
npm run lint
npx tsc --noEmitRun npx expo-doctor before release builds or dependency upgrades.