In expo-cli@4
, expo upload:ios
no longer works. This document explains what the alternatives are and why it was removed.
- EAS Submit - this is the closest equivalent to
expo upload:ios
. By default it works best witheas build
, but you can also use it withexpo build:[ios|android]
. This option is currently available to EAS Priority Plan subscribers, but will be part of the free tier when EAS Submit graduates from feature preview. - Transporter.app - download this app to your macOS machine, open it, then run
expo build:ios
, download the resultingipa
file. Drag theipa
into Transporter.app to upload it to the App Store. - fastlane deliver - if you used
expo upload:ios
to automate submissions from CI, you can do this by installingfastlane
on your CI server, downloading your app by usingcurl
with the URL returned fromexpo url:ipa
, then runfastlane deliver
with the appropriate parameters.
The upload:ios
command was implemented as follows:
expo-cli
packaged a library calledtraveling-fastlane
- a standalone, cross-platform fastlane wrapper.fastlane
is a Ruby library, andtraveling-fastlane
depends ontraveling-ruby
to provide a self-contained cross-platform Ruby executable. The Ruby version intraveling-ruby
must be compatible with thefastlane
version.expo-cli
would download your app binary (usingexpo url:ipa
) and then call intotraveling-fastlane
to invokefastlane deliver
with the appropriate parameters.
Traveling Ruby hasn't been updated for a long time and isn't something we can depend on to stay up to date with fastlane's Ruby version requirements. Ruby <= 2.3 stopped being supported as of fastlane 2.147.0, and that was the latest version of Ruby that shipped with Traveling Ruby.
In addition to this dependency situation, there were some significant limitations with the fastlane
approach:
fastlane deliver
only works on macOS machines.- It can fail if the developer's Xcode version out of date.
So, we built a replacement - EAS Submit. This is a hosted service that works on macOS, Windows, Linux, and any other platform where Node.js & eas-cli will run.
Note: in 2021 there has been some movement in updating Traveling Ruby, but it does not yet show signs of being a sustainable project that we can depend on and because of the limitations mentioned above we prefer the EAS Submit solution.