For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/mobile/external-accounts.md (or send Accept: text/markdown).
Create mobile accounts
Expo, Apple, Google Play, and RevenueCat accounts — what each one is for and when to create it.
When you need these
The daily mobile setup needs none of them: Expo Go plus a running backend — EXPO_PUBLIC_API_URL in apps/mobile/.env.local — covers previewing screens and testing sign-in.
Create these accounts when you move past Expo Go: an Expo account powers EAS cloud builds, the store accounts enable submission, RevenueCat verifies native purchases, and Apple's program is also required for Sign in with Apple during store review. Two of them cost money: Apple Developer is $99 per year, Google Play is a one-time $25 registration; Expo and RevenueCat both have free tiers.
Expo + EAS
1. Open expo.dev → Sign up, create the account, and confirm the email.
2. In a terminal run npx eas-cli@latest login and enter the same credentials — eas is the command-line tool for Expo Application Services builds and submissions.
3. From the apps/mobile folder run npx eas-cli@latest init to link the codebase to an EAS project; it writes the project id into the app.json/app.config.ts configuration. The eas.json build profiles are already shipped.
Expected: npx eas-cli@latest whoami prints your account name and the project appears in your expo.dev dashboard.
npx eas-cli@latest login
cd apps/mobile
npx eas-cli@latest init
npx eas-cli@latest whoamiApple Developer Program
1. Open developer.apple.com → Account → enroll in the Apple Developer Program — $99 per year; an individual membership is fine.
2. Enrollment requires an Apple ID with two-factor authentication enabled and a legal name matching your payment method; approval can take a day or two.
3. This one account covers two requirements: submitting the iOS app to the App Store, and Sign in with Apple — App Review requires offering it whenever an iOS app ships third-party social login such as Google or GitHub. The kit wires it through AUTH_APPLE_ENABLED plus the APPLE_CLIENT_ID/APPLE_CLIENT_SECRET pair on the backend.
The same membership also covers macOS desktop signing — the desktop account guide explains that side.
Google Play Console
1. Open play.google.com/console, pay the one-time $25 registration, and create the developer account in your name or your company's.
2. Stop at the developer account for now — the app entry itself gets created inside Play Console during submission: the first upload of a new app always happens manually there, and eas submit takes over from the second release.
RevenueCat — only if the app sells content
Skip this section entirely if the mobile app does not sell digital content or subscriptions. If it does: 1. open revenuecat.com and create a free account, 2. create a project, 3. register the iOS app (connects to App Store Connect) and the Android app (Play package name plus service credentials) inside it.
4. Create the products and an entitlement matching your store products — the kit checks the configured entitlement (REVENUECAT_ENTITLEMENT_ID, REVENUECAT_ENTITLEMENT_KEY) server-side before granting access.
5. Copy each platform's public SDK key into apps/mobile/.env.local and enable the provider on both sides, as below. The SDK keys are public client values; REVENUECAT_SECRET_API_KEY and REVENUECAT_WEBHOOK_AUTHORIZATION are server-only and belong in the backend's environment — never in an EXPO_PUBLIC_ variable.
# apps/mobile/.env.local
EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY=your-public-ios-sdk-key
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY=your-public-android-sdk-key
# apps/web/.env.local — server side
MOBILE_PURCHASES_PROVIDER=revenuecat
REVENUECAT_SECRET_API_KEY=your-secret-api-key
REVENUECAT_WEBHOOK_AUTHORIZATION=your-webhook-auth-valueSign-in providers on mobile
Mobile sign-in reuses the same Google and GitHub OAuth apps you create for the web — the callbacks stay {APP_URL}/api/auth/callback/<provider> because Better Auth handles the server side, and the app returns through its EXPO_PUBLIC_APP_SCHEME deep-link scheme. No extra provider app is needed just because the client is native.
The exception is iOS store review: shipping Google or GitHub buttons on iOS requires offering Sign in with Apple too, which is why the Apple Developer account above doubles as a sign-in dependency.
Done means
Check each account before moving on: npx eas-cli@latest whoami prints your Expo account and the project shows in the dashboard; the Apple Developer membership reads Active; the Play Console account exists; the RevenueCat project lists both store apps with products and an entitlement, and its keys are in the right env files.
Then continue in order — connect the project, set up purchases if the app sells content, build for a device, submit:
If you want to continue setup, read EAS setup.