Skip to main content
For quick start, see Quickstart. This guide covers full production configuration.
You can skip all service configuration initially. The app runs in mock mode by default with simulated auth, database, and payments. Configure real services when you’re ready for production.

Requirements

For development: Nothing extra. Mock services work out of the box. For production:
  • Backend (Supabase or Convex) - required
  • Android release keystore - required
  • Bundle identifiers in app.json - required
  • RevenueCat, PostHog, Sentry - optional but recommended

Prerequisites

Install these tools before proceeding:
New to JavaScript/Node? We recommend Volta - it automatically manages Node versions so you don’t have to think about it. Just run the install command above and you’re set.
Node version matters. The project requires Node 20 specifically. Node 22+ causes build failures with some native dependencies. Run node -v to check your version before proceeding.

Step 1: Clone and Install

Step 2: Run Setup Wizard

The wizard configures:
  • App name and bundle identifier
  • Backend provider (Supabase or Convex)
  • Backend credentials
  • OAuth providers (Google, Apple)
  • RevenueCat API keys
  • PostHog analytics
  • Sentry error tracking
Options:

Backend Selection

The wizard prompts you to choose a backend: After you choose, the setup wizard automatically:
  • Removes the unused backend’s code (folders, hooks, services)
  • Updates .env.example to only show your chosen backend’s variables
  • Removes the unused backend’s packages from package.json
  • Runs yarn install to update the lockfile
This gives you a clean codebase with only the backend you selected. See Backend & Database for detailed comparison.

Service Configuration

Each service is optional. Skip any to use mock mode.
See individual feature guides for detailed setup:

Security Note

EXPO_PUBLIC_* variables are bundled into your app. Only use:
  • Supabase publishable key (protected by RLS)
  • Convex deployment URL (protected by function-level auth)
  • RevenueCat public keys
  • PostHog project API key
Never expose service_role keys or secrets in your app.

Step 3: Run Your App


Manual Configuration

If you prefer manual configuration:
Edit apps/app/.env:
Edit apps/app/app.json:

Mock Mode

Without credentials, services run in mock mode: See Mock Services for details.

Troubleshooting

Setup wizard fails?

  • Ensure Node.js 20+ and Yarn are installed
  • Delete partial .env: rm apps/app/.env
  • Try again: yarn setup

”Package not found in project” error?

If you see an error like:
This happens when yarn.lock is out of sync after renaming your app. Fix it:

iOS build fails with Swift errors?

If you see errors like missing argument for parameter 'logHandlers' in expo-widgets:
The postinstall script applies patches automatically. If issues persist, manually verify patches exist in /patches/ directory.

App won’t start?

Builds are slow?

yarn ios / yarn android compile native code (3-5 minutes). For daily development:
Only rebuild when native dependencies change.

API keys not working?

  • Keys must be in apps/app/.env
  • All keys need EXPO_PUBLIC_ prefix
  • Restart Metro after adding keys
See Troubleshooting for more.

Next Steps

Backend & Database

Configure your chosen backend

Authentication

Set up user auth

Payments

Set up RevenueCat

Deploy

Ship to app stores