Skip to main content
Once you’ve cloned the repo and run yarn install, you’re ready to launch! This guide covers iOS, Android, and Web.
Fast path: You can launch without API keys (mock mode is automatic), but we recommend running yarn setup early so you test against your real services.

Quick Commands

From the apps/app directory:
cd apps/app

yarn ios        # iOS Simulator
yarn android    # Android Emulator  
yarn web        # Web Browser (localhost:19006)
Or from the monorepo root:
yarn app:ios      # iOS
yarn app:android  # Android
yarn app:web      # Web
Your app will use real services if .env is configured; otherwise it falls back to mock mode. Add real API keys early for more accurate behavior.

Platform Details

Requirements:
  • Xcode installed (latest version recommended)
  • iOS Simulator available
cd apps/app
yarn ios
First run takes longer - Expo needs to build the native iOS project. Subsequent runs are much faster.Using a specific simulator:
# List available simulators
xcrun simctl list devices available

# Run on specific device
expo run:ios --simulator "iPhone 15 Pro"
Requirements:
  • Android Studio installed
  • Android Emulator configured (or physical device)
  • ANDROID_HOME environment variable set
cd apps/app
yarn android
First run takes longer - Expo needs to build the native Android project.Troubleshooting:
  • Make sure an emulator is running or a device is connected
  • Run adb devices to verify your device is recognized
Fully supported! Shipnative runs on web via Expo Web and react-native-web.
cd apps/app
yarn web
Opens at http://localhost:19006What works on web:
  • All UI components (Unistyles 3.0 supports web)
  • Authentication (Supabase works everywhere)
  • Payments (RevenueCat Web Billing)
  • Analytics (PostHog)
  • Dark mode
  • Responsive design
Production build:
yarn bundle:web

Mock Mode vs Real Services

When you run the app without API keys configured, mock mode activates automatically:
ServiceMock Behavior
AuthLogin/signup works with fake accounts
PaymentsPurchases succeed instantly, toggle Pro status in dev menu
AnalyticsEvents logged to console
ErrorsCaptured locally, not sent to Sentry
We recommend connecting real services early!While mocks are convenient for initial exploration, real services behave differently:
  • Email confirmation and OAuth require real Supabase
  • Payment flows need RevenueCat products configured
  • Analytics only capture real data with PostHog connected
Run yarn setup to configure services interactively.
How to check service status: Open the Developer Menu (Cmd+D on iOS, Cmd+M on Android) and check “Service Status”.
Learn more about mock services →

Developer Menu

Access the dev menu to debug and test:
PlatformHow to Open
iOS SimulatorCmd + D
Android EmulatorCmd + M (Mac) or Ctrl + M
Physical DeviceShake the device
WebBrowser DevTools
Useful options:
  • Component Showcase - see all UI components
  • Toggle dark/light mode
  • Switch between Free/Pro user
  • View service status (mock vs real)
  • Reload the app

Troubleshooting

Clear the cache and restart:
yarn app:start --clear
Or kill the process on port 8081:
lsof -ti:8081 | xargs kill -9
Clean and reinstall CocoaPods:
cd apps/app/ios
rm -rf Pods Podfile.lock
pod install
cd ..
yarn ios
Set your ANDROID_HOME environment variable:
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
Add this to your ~/.zshrc or ~/.bashrc.
  1. Open the dev menu
  2. Ensure “Fast Refresh” is enabled
  3. If still not working, restart Metro: yarn app:start --clear

Next Steps