ScaleRocket/Mobile

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 linkingscalerocket:// 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
TopicDescription
SetupInstall and run the app
AuthenticationAuth flows for mobile
Push NotificationsEnable push notifications
NavigationRouting and navigation
App StorePublish to the App Store
Play StorePublish to Google Play
OTA UpdatesShip updates without review

Prerequisites

Before you start, make sure you have:

  • Node.js 20+Download here
  • Expo accountSign up free
  • Supabase accountSign up free (if using Supabase version)
  • Convex accountSign 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.json
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
├── 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.json

Ready?

Head to Setup to get your mobile app running locally.

On this page