Development Server
Start the Expo development server with the dev client:- Press
ito open iOS simulator - Press
ato open Android emulator - Scan the QR code with Expo Go app (development builds only)
The development server runs on the default Expo port. The app uses a custom dev client, so you’ll need to build it first (see below).
Running on iOS
Development Build
Run the app on iOS simulator or connected device:iOS Simulator Selection
To run on a specific simulator:iOS Device Configuration
The app is configured with:- Bundle Identifier:
bz.medusa.wallet - Supports iPad: Yes
- Orientation: Portrait only
- Required Capabilities: Camera, Face ID
Check
app.json for the complete iOS configuration:Running on Android
Development Build
Run the app on Android emulator or connected device:Start Android emulator
Launch an Android Virtual Device (AVD) from Android Studio, or connect a physical Android device with USB debugging enabled.
Android Device Configuration
The app is configured with:- Package Name:
bz.medusa.wallet - Version Code: 3
- Target SDK: Latest (via Expo)
- Permissions: Camera
- Status Bar: Light content on dark background
Android Emulator Tips
Check connected devices
Check connected devices
Reverse port for Metro bundler
Reverse port for Metro bundler
If the app can’t connect to Metro:
Clear app data
Clear app data
View logs
View logs
Platform Differences
When developing for both platforms, be aware of these differences:- iOS
- Android
Development Tools
React Query DevTools
The app includes React Query DevTools for debugging:Metro Bundler
The Metro bundler provides useful commands during development:Reload App
Press
r in the terminalOpen DevTools
Press
d in the terminalToggle Element Inspector
Press
i in the terminalClear Cache
Press
Shift + r in the terminalRemote Debugging
Debug JavaScript in Chrome DevTools:- Shake your device (or press
Cmd+Don iOS simulator /Cmd+Mon Android emulator) - Select “Debug” from the menu
- Chrome will open with DevTools
Code Quality
Ensure code quality before committing:Pre-commit Workflow
Recommended workflow before committing:Production Builds
EAS Configuration
The app uses EAS for production builds:Build Commands
- iOS
- Android
EAS builds run on Expo’s servers. You’ll need an Expo account to use EAS Build.
Testing
Running Tests
The app includes unit and integration tests:Test Structure
Writing Tests
Example test file:Troubleshooting
Metro bundler not starting
Metro bundler not starting
Clear the Metro cache:Or manually:
Build fails on iOS
Build fails on iOS
-
Clean the build folder:
-
Reinstall CocoaPods:
-
Rebuild:
Build fails on Android
Build fails on Android
-
Clean the Gradle cache:
-
Rebuild:
App crashes on launch
App crashes on launch
Check the logs:iOS:Android:
Hot reload not working
Hot reload not working
- Ensure you’re connected to the same network
- Restart Metro bundler
- Reload the app (
rin terminal)
Performance Optimization
Use FlashList
Replace
FlatList with @shopify/flash-list for better performanceOptimize Images
Use
expo-image for optimized image loadingMemoization
Use
React.memo() and useMemo() for expensive computationsCode Splitting
Lazy load components with
React.lazy() and SuspenseNext Steps
Architecture
Learn about the app architecture
Contributing
Contribute to Medusa Wallet