Overview
The Incidents mobile app is built with Expo and React Native. This guide covers deploying the app to both iOS and Android platforms.Prerequisites
Before deploying, ensure you have:- Node.js 18+ installed
- Expo CLI installed globally
- Expo account (create at expo.dev)
- Apple Developer account (for iOS)
- Google Play Console account (for Android)
Installation
Configure environment variables
Create a See Environment Variables for details.
.env file in the mobile directory with your Supabase credentials:Development Build
Test the app locally before deploying:The dev server provides a QR code to test on physical devices using Expo Go app.
Building for Production
Using EAS Build
Expo Application Services (EAS) is the recommended way to build production apps.Build for iOS
You’ll need to provide your Apple Developer credentials and configure signing certificates.
App Configuration
The app is configured inapp.json with the following key settings:
mobile/app.json
Key Configuration Options
- name: Display name shown on device home screen
- slug: URL-safe identifier for your app
- version: App version number (increment for updates)
- scheme: Deep linking URL scheme (
fluxomobile://) - newArchEnabled: Uses React Native’s new architecture
Submitting to App Stores
iOS App Store
Create app in App Store Connect
Visit App Store Connect and create a new app.
Google Play Store
Create app in Play Console
Visit Google Play Console and create a new app.
Over-the-Air Updates
EAS Update allows you to push updates without going through app store review:Environment-Specific Builds
Create different builds for staging and production:eas.json
Troubleshooting
Build Failures
If builds fail, check:- All dependencies are compatible with Expo SDK version
- Native modules are properly configured in
app.jsonplugins - iOS build properties use static frameworks
Environment Variables Not Working
Ensure environment variables:- Start with
EXPO_PUBLIC_prefix for client-side access - Are set in
eas.jsonfor production builds - Are not cached (restart dev server)
Deep Linking Issues
Verify thescheme in app.json matches your deep link configuration:
Next Steps
Environment Variables
Configure environment-specific settings
Supabase Setup
Set up your backend database