Prerequisites
- macOS (required for iOS development)
- Xcode (from Mac App Store)
- Node.js v20+ (via nvm recommended)
Quick setup (automated)
Run the setup script:Manual setup
1
Install Xcode
Download and install Xcode from the Mac App Store.After installation:
- Open Xcode
- Go to Xcode → Settings → Components
- Install an iOS Simulator (e.g., iOS 17 or later)
2
Install Xcode Command Line Tools
3
Accept Xcode License
4
Install Homebrew
5
Install Watchman
Watchman improves Metro bundler performance:
6
Install CocoaPods
7
Configure UTF-8 Encoding
CocoaPods requires UTF-8 encoding. Add to your
~/.zshrc:8
Install Project Dependencies
9
Generate iOS Native Project
The
ios/ directory must be generated locally from app.config.js:The
--clean flag removes any existing ios/ folder before regenerating. All native configuration comes from app.config.js. EAS Build runs this automatically during CI.Running the app
Option 1: Using Expo (recommended)
Option 2: Using npm script
Option 3: Manual build
Development builds vs Expo Go
For full app functionality, use Development Build. For quick prototyping, Expo Go works but some features (auth tokens, push notifications) may not work correctly.
Useful commands
Troubleshooting
CocoaPods UTF-8 Error
CocoaPods UTF-8 Error
If you see
Unicode Normalization not appropriate for ASCII-8BIT:No Code Signing Certificates
No Code Signing Certificates
For simulator builds, add
CODE_SIGNING_ALLOWED=NO to xcodebuild commands. This is not needed for Expo Go.Simulator Not Found
Simulator Not Found
- Open Xcode
- Go to Xcode → Settings → Components
- Download an iOS Simulator
Pod Install Fails
Pod Install Fails
Metro Bundler Issues
Metro Bundler Issues
Clear Metro cache:Or reset Watchman: