Three of the ten products ArcLayer has built are iOS apps: Kindlo, Slipora and Warranta. Scoreva is a mobile app as well. Building for iOS usually means a Mac running Xcode. Slipora, Warranta and Scoreva are Expo apps whose builds go through EAS in the cloud, so the work can happen on a Windows machine. Kindlo is native Swift, and its builds run on GitHub’s macOS runners instead.
How the pieces fit
Expo is a framework and toolchain for React Native apps. EAS Build, part of Expo Application Services, runs the native iOS build on macOS machines in Expo's cloud and returns a signed app. EAS Submit uploads that build to App Store Connect, where it can go out to testers through TestFlight.
The build profile
Build settings live in eas.json at the root of the project. A minimal setup has one profile for internal testing and one for the store:
{
"cli": { "version": ">= 12.0.0" },
"build": {
"preview": {
"distribution": "internal"
},
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {}
}
}From code to TestFlight
# install the CLI and sign in to your Expo account
npm install -g eas-cli
eas login
# build the iOS app in the cloud
eas build --platform ios --profile production
# upload the finished build to App Store Connect
eas submit --platform ios --latestOn the first build, EAS asks for your Apple account and can create the signing certificate and provisioning profile for you. Keep App Store Connect API keys out of the repository. EAS can hold them as credentials on its side.
What still needs a real phone
A cloud build proves the app compiles and signs. Whether the camera opens quickly, or a receipt scans under shop lighting, only shows up on a device. Install the TestFlight build on a physical iPhone and test the flows that depend on hardware before release.