Before automation, shipping an iOS update meant bumping the build number by hand, archiving in Xcode, exporting an IPA, and clicking through App Store Connect — easily an hour of pure busywork per release, more if a certificate had expired.
For bare React Native CLI projects I lean on Fastlane: a single lane handles code signing via
match, builds the archive, and uploads straight to TestFlight or App Store Connect. Screenshot
generation and metadata updates get their own lanes so a release is one command:
fastlane release.
For Expo-managed projects, EAS Build and EAS Submit cover the same ground without touching a Mac — builds run in the cloud and submit directly to the stores from CI.
The result across both setups: what used to be an hour-plus of manual, error-prone steps is now a single command and a coffee break.