Everything iOS-specific in this section was written from Apple's and Expo 6,418 's documentation, because compiling an iOS app needs Apple's toolchain, and Xcode 10 runs only on macOS. What each step needs, checked in September 2026:
| Task | Requirement | Without a Mac |
|---|---|---|
| Build locally | Xcode; Expo SDK 57 needs Xcode 26.4 or later | EAS Build 6,418 compiles in the cloud |
| Current Xcode | Xcode 27 needs macOS Tahoe 26.6 or later | None |
| iOS Simulator | Bundled with Xcode, macOS only | None |
| Run on your iPhone | Free Apple Account and Xcode | Expo Go 6,418 , or an EAS 6,418 development build |
| TestFlight 10 , App Store 10 | Apple Developer Program, 99 USD a year | EAS Submit 6,418 (Publishing) |
| Oldest iOS supported | Expo SDK 57: iOS 16.4 | Same |
Expo Go on an iPhone connects to Metro running on Windows or Linux, which is the quickest way to see your JavaScript on iOS, limited to the native modules Expo Go includes (Expo Go). For your own native code, a development build from EAS Build installs on a registered device. Apple is tightening two screws: from April 2027, App Store uploads must be built with the iOS 27 SDK, and macOS 27 runs only on Apple silicon, so an Intel Mac is no longer a long-term iOS build machine. On a Mac, the workflow mirrors this chapter's Android one:
npx expo prebuild --platform ios # writes ios/ and runs pod install (CocoaPods)
npx expo run:ios # builds with Xcode and starts the iOS Simulator
eas build --platform ios --profile development # from any OS, built in Expo's cloudBudget for a physical iPhone as well as the Simulator: the Simulator has no camera, no Face ID sensor (only a simulated match), and the speed of a Mac rather than a phone.