Introduction
ScaleRocket Mobile — the Expo + React Native boilerplate to build and publish iOS & Android apps in days, not months.
ScaleRocket Mobile
ScaleRocket Mobile is a production-ready mobile app boilerplate built with Expo and React Native. It gives you everything you need to build, test, and publish a native iOS & Android app — authentication, navigation, push notifications, deep linking, and more — so you can focus on building your product.
Available with Supabase or Convex backend.
What's Included
- Authentication — Email/password + Google OAuth + Apple Sign-In via Supabase or Convex
- File-based routing — Expo Router with tab and stack navigation
- Push notifications — Expo Notifications with permission handling and token management
- Secure storage — Tokens stored in
expo-secure-store(encrypted on device) - Biometric auth — Face ID and fingerprint via
expo-local-authentication - Deep linking —
scalerocket://URL scheme for OAuth callbacks and email links - Profile management — Editable user profile with avatar initials
- Subscription management — Plan display and Stripe billing portal integration
- Credits system — Usage-based billing with balance and allowance display
- EAS Build & Submit — Ready-to-use build profiles for development, preview, and production
- OTA Updates — Push JavaScript updates without store review via EAS Update
Quick Links
| Topic | Description |
|---|---|
| Setup | Install and run the app |
| Authentication | Auth flows for mobile |
| Push Notifications | Enable push notifications |
| Navigation | Routing and navigation |
| App Store | Publish to the App Store |
| Play Store | Publish to Google Play |
| OTA Updates | Ship updates without review |
Prerequisites
Before you start, make sure you have:
- Node.js 20+ — Download here
- Expo account — Sign up free
- Supabase account — Sign up free (if using Supabase version)
- Convex account — Sign up free (if using Convex version)
- Apple Developer account — $99/year (required for iOS App Store)
- Google Play Console — $25 one-time (required for Android Play Store)
- EAS CLI — Install with
npm install -g eas-cli
Project Structure
scalerocket-mobile/
├── app/ # Expo Router (file-based routing)
│ ├── _layout.tsx # Root layout: auth guard + Stack navigator
│ ├── (auth)/ # Auth screens (unauthenticated)
│ │ ├── _layout.tsx # Stack with no header
│ │ ├── login.tsx # Email/password + OAuth
│ │ ├── register.tsx # Account creation
│ │ └── forgot-password.tsx # Password reset
│ └── (tabs)/ # App screens (authenticated)
│ ├── _layout.tsx # Tab navigator: Home, Profile, Settings
│ ├── index.tsx # Home tab: credits, plan, actions
│ ├── profile.tsx # Edit name, avatar, sign out
│ └── settings.tsx # Password, subscription, delete account
├── lib/
│ ├── supabase.ts # Supabase client with SecureStore adapter
│ └── auth.ts # useSession hook + auth helpers
├── components/ # Reusable components
├── assets/ # App icons, splash screen
├── app.json # Expo config
├── eas.json # EAS Build profiles
└── package.jsonscalerocket-mobile/
├── app/ # Expo Router (file-based routing)
│ ├── _layout.tsx # Root layout: auth guard + Stack navigator
│ ├── (auth)/ # Auth screens (unauthenticated)
│ │ ├── _layout.tsx # Stack with no header
│ │ ├── login.tsx # Email/password + OAuth
│ │ ├── register.tsx # Account creation
│ │ └── forgot-password.tsx # Password reset
│ └── (tabs)/ # App screens (authenticated)
│ ├── _layout.tsx # Tab navigator: Home, Profile, Settings
│ ├── index.tsx # Home tab: credits, plan, actions
│ ├── profile.tsx # Edit name, avatar, sign out
│ └── settings.tsx # Password, subscription, delete account
├── convex/
│ ├── schema.ts # Database schema
│ ├── auth.ts # Auth configuration
│ └── functions/ # Serverless functions
├── lib/
│ └── auth.ts # useSession hook + auth helpers
├── components/ # Reusable components
├── assets/ # App icons, splash screen
├── app.json # Expo config
├── eas.json # EAS Build profiles
└── package.jsonReady?
Head to Setup to get your mobile app running locally.