This guide explains how to deploy your React Native app directly to an iOS device for local testing and development.
- Mac with Xcode installed (latest version recommended)
- iOS device (iPhone/iPad)
- USB cable for device connection
- Apple Developer account (free or paid)
- Node.js and npm installed
Note - This step is optional. The ejected app is already in the ios folder.
If you're starting with an Expo managed app, you need to eject first:
cd app
npx expo prebuild --platform iosThis creates the native iOS project files in the ios/ directory.
This will install all dependencies, build and run local build of the project in emulator (without Expo Go)
npx expo run:iosYou may want to refresh packages, in this case run the following:
cd ios && rm -rf Pods/ && rm Podfile.lock
cd ..
npx expo run:ios- Connect your iOS device to your Mac via USB
- Unlock your device and tap "Trust This Computer" if prompted
- Enter your device passcode when requested
open ios/SoftwareOnePlayground.xcworkspaceIn Xcode:
- Select your project in the navigator (
SoftwareOne) - Select the target (
SoftwareOne) - Go to "Signing & Capabilities" tab
- Uncheck "Automatically manage signing" (if checked)
- Select your Team (Apple Developer account)
- Select appropriate Provisioning Profile
- Verify Bundle Identifier:
com.softwareone.marketplaceMobile
- In Xcode toolbar, click the scheme dropdown (next to stop button)
- Select "Edit Scheme..."
- In the left sidebar, select "Run"
- Change Build Configuration from "Debug" to "Release"
- Click "Close"
- In Xcode toolbar, click the device dropdown (next to the scheme)
- Select your connected device from the list
- Make sure it shows your device name, not "Any iOS Device" or "Simulator"
- Click the Play button (
▶️ ) in Xcode - Wait for the build to complete
- App will automatically install and launch on your device
On your device:
- Go to Settings → General → VPN & Device Management
- Under "Developer App" section, find your Apple ID
- Tap your Apple ID and select "Trust [Your Apple ID]"
- Confirm by tapping "Trust"
The app should launch automatically after deployment. If not, find it on your device home screen and tap to open.
- Standalone app - No need for Metro bundler or computer connection
- Optimized performance - JavaScript bundle is compiled and embedded
- Production-ready - Same configuration used for App Store builds
- Offline capable - Works without any development server
For creating distributable builds:
- Product → Archive in Xcode
- Wait for archive to complete
- Organizer window will open
- Select your archive and click "Distribute App"
- Choose distribution method (Ad Hoc, Enterprise, etc.)
- Verify you're signed into Xcode with your Apple ID
- Check your Apple Developer account has valid certificates
- Ensure Bundle Identifier matches your App ID
- Try: Product → Clean Build Folder
- Go to Apple Developer portal and create/download provisioning profiles
- In Xcode: Preferences → Accounts → Download Manual Profiles
- Select the correct profile in Signing & Capabilities
- Try a different USB cable
- Restart both Mac and iOS device
- Check device appears in Window → Devices and Simulators
- Ensure device is in Developer Mode (iOS 16+)
- Check device storage space
- Verify Bundle Identifier is unique
- Try deleting any existing app with same identifier
- Clean build folder and try again
- Close unnecessary applications
- Clean build folder: Product → Clean Build Folder
- Clear derived data:
rm -rf ~/Library/Developer/Xcode/DerivedData/
app/
├── ios/ # Native iOS project
│ ├── SoftwareOne.xcworkspace # Open this in Xcode
│ ├── SoftwareOne/ # iOS app source code
│ │ ├── Info.plist # App configuration
│ │ ├── AppDelegate.swift # App entry point
│ │ └── Images.xcassets/ # App icons & images
│ ├── Pods/ # CocoaPods dependencies
│ └── Podfile # iOS dependencies config
├── src/ # React Native source code
└── package.json # Node.js dependencies
- Always use Release configuration for device deployment
- Clean build folder if encountering issues
- Update provisioning profiles regularly
- Test on multiple devices with different iOS versions
- Monitor app size - Release builds are larger than Debug
- iOS 15.1+ (minimum deployment target)
- 64-bit processor (iPhone 5s and newer)
- Developer Mode enabled (iOS 16+)
- Sufficient storage space for app installation
- ⌘ + R - Build and Run
- ⌘ + ⇧ + K - Clean Build Folder
- ⌘ + B - Build Only
- ⌘ + . - Stop Build/Run
- ⌘ + ⇧ + O - Open Quickly
Note: This guide focuses on Release builds for standalone deployment. No Metro bundler or Expo required after successful build.