Documentation Index
Fetch the complete documentation index at: https://mintlify.com/satsigner/satsigner/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide covers building SatSigner for iOS devices and simulators. The build process uses Expo with React Native and requires Xcode, CocoaPods, and proper environment configuration.Prerequisites
Required Software
- macOS (latest version recommended)
- Node.js version 22.4.0 or higher
- Yarn package manager
- Xcode (latest stable version from Mac App Store)
- CocoaPods (will be installed via Xcode)
- Xcode Command Line Tools
Install Yarn
If you don’t have Yarn installed:Xcode Setup
Install Xcode
- Open the Mac App Store
- Search for “Xcode”
- Click Install (this may take 30-60 minutes)
- Open Xcode after installation to accept the license agreement
Install Command Line Tools
After installing Xcode:Configure Xcode
- Open Xcode
- Go to Xcode → Settings → Locations
- Ensure Command Line Tools is set to your Xcode version
- Go to Xcode → Settings → Accounts
- Add your Apple ID (required for device deployment)
CocoaPods Setup
CocoaPods manages iOS dependencies. It should be installed with Xcode, but verify:Expo Environment Setup
Follow the Expo documentation with these settings:- Select “Development build”
- Disable “Build with Expo Application Services (EAS)”
Installation
From the repository root:pod install command:
- Reads the
Podfileconfiguration - Downloads and links native iOS dependencies
- Generates
satsigner.xcworkspace
Podfile Configuration
The iOS build uses several key configurations fromapps/mobile/ios/Podfile:
Deployment Target
- Minimum iOS version: 13.4
- Configurable in
Podfile.properties.json
React Native Architecture
- Hermes Engine: Enabled by default (can be configured)
- New Architecture: Configurable via
newArchEnabledinPodfile.properties.json
Key Dependencies
- Expo modules via
use_expo_modules! - React Native pods via
use_react_native! - Native modules via
use_native_modules!
Building and Running
Standard Build
Build and run the app on a simulator:- Installs CocoaPods dependencies (if needed)
- Compiles the iOS project
- Installs the development build on default simulator
- Starts the Metro bundler
- Launches the app
Alternative: Expo CLI
Run on Specific Simulator
List available simulators:Run on Physical Device
- Connect your iOS device via USB
- Trust the computer on your device when prompted
- In Xcode, open
apps/mobile/ios/satsigner.xcworkspace - Select your device from the device dropdown
- Go to Signing & Capabilities tab
- Select your development team
- Run:
yarn ios --device
- Open
apps/mobile/ios/satsigner.xcworkspace - Select your device
- Click the Play button or press
⌘ + R
Build Configuration
Workspace Structure
- Podfile - CocoaPods dependency configuration
- Podfile.properties.json - Build properties (deployment target, JS engine)
- satsigner.xcworkspace - Main workspace (generated by CocoaPods)
- satsigner.xcodeproj - Xcode project file
Important Build Settings
Configured inPodfile:
Troubleshooting
Pod Install Fails
Clear CocoaPods cache and reinstall:Xcode Build Fails: “Command PhaseScriptExecution failed”
This usually indicates a Metro bundler issue:- Stop all Metro instances:
pkill -f metro - Clear Metro cache:
yarn start --reset-cache - Clean build folder in Xcode:
⌘ + Shift + K - Rebuild:
⌘ + B
Code Signing Error
Ensure you have a valid development team:- Open
satsigner.xcworkspacein Xcode - Select the project in the navigator
- Go to Signing & Capabilities
- Select a valid team from the dropdown
- If no team appears, add your Apple ID in Xcode Settings → Accounts
Simulator Not Found
Install additional simulators:- Open Xcode
- Go to Xcode → Settings → Platforms
- Click + to download simulator runtimes
- Install desired iOS versions
Build Error: “use_frameworks! linkage”
This occurs when frameworks configuration conflicts:- Open
Podfile - Check
use_frameworks!linkage setting - If using frameworks, note that Flipper won’t work
- Run
pod installafter changes
Metro Bundler Won’t Start
Manually start Metro in a separate terminal:Clean Build
If experiencing persistent issues, perform a full clean:“Module not found” Errors
Reinstall dependencies and pods:Hermes Engine Issues
If you need to disable Hermes:- Edit
apps/mobile/ios/Podfile.properties.json - Set
"expo.jsEngine": "jsc"(JavaScriptCore instead of Hermes) - Run
pod install - Clean and rebuild
Device Not Trusted
If deploying to physical device:- Go to device Settings → General → VPN & Device Management
- Find your developer certificate
- Tap Trust
Build Scripts
Available commands frompackage.json:
Advanced Configuration
Change Deployment Target
Editapps/mobile/ios/Podfile.properties.json:
pod install.
Enable New Architecture
Editapps/mobile/ios/Podfile.properties.json:
Custom Build Configurations
- Open
satsigner.xcworkspacein Xcode - Select project → Info tab
- Manage Configurations (Debug, Release, etc.)
- Duplicate and customize as needed
Performance Optimization
Release Build
For production/testing with optimizations:- Product → Scheme → Edit Scheme
- Change Build Configuration to “Release”
- Build and run
Reduce Build Time
Add toPodfile before target 'satsigner':
Next Steps
- Build for Android - Build for Android devices
- Storybook - Component development workflow
- Contributing - Contribution guidelines