Releasing to the Apple App Store
This guide walks through releasing a code push app to the Apple App Store and applying a patch to that release.
The app we will be releasing in this guide is Shorebird Clock, our demo code push app. (source)
To follow along with this guide, you will need the following:
- An existing Shorebird app. If you don’t have one, you can create one by following the code push quickstart guide.
- Access to hardware running macOS. This is required to build iOS apps.
- A valid Apple Developer account. This is required to release iOS apps.
- An app in App Store Connect. See the official documentation for more information about how to create one.
- An iOS Distribution certificate. You can create one at https://developer.apple.com/account/resources/certificates/add.
- An iOS App Store provisioning profile. See the official documentation for instructions on how to create one.
To build an iOS app for distribution, we need to specify a development team in Xcode. Open ios/Runner.xcworkspace
in Xcode and select the Runner
target:
Navigate to your app on the Shorebird console
to see the current set of releases. For our app, we see that the latest release
version is 1.0.3+1
, so the version of our next release will be 1.0.4+1
.
Because the App Store does not include the build number (the +1
part of 1.0.4+1
) in app versions, this will show up in the App Store as 1.0.4
. Follow the instructions in the official documentation to create a new version in App Store Connect.
Update the version in pubspec.yaml
to 1.0.4+1
:
Create a Shorebird release by running the shorebird release ios
command:
Open the .xcarchive in Xcode and use the “Distribute App” flow:
As of Xcode 15, you will make the following choices:
- “Custom” as the distribution method.
- “App Store Connect” as the distribution method.
- “Upload” as the destination.
- A few distribution options that are up to you. Importantly, Manage Version and Build Number must be unchecked for Shorebird to work. Because Shorebird targets patches at specific release versions, changing the version or build number will prevent your app from receiving patches.
- Automatically manage signing or manually manage signing. This is up to you. If you choose to manually manage signing, you will need to select the appropriate development team, provisioning profile, and signing certificate for your app.
- Confirm the upload.
Xcode will upload your archive, and if no issues are found, will show a message telling you that the upload was successful:
After a short delay (usually a minute or two), you will see the build listed as “Processing” in App Store Connect:
Once the app has finished processing, we can add it to our release:
When we attempt to submit the app for review, App Store Connect will list the issues we need to resolve before we can submit the app:
Once the release has been approved, you will be able to download it from the App Store.
Patches can be pushed to fix bugs in the App Store
release without requiring a new submission to the App Store.
For the purposes of this guide, we will change the default clock face to generative
in lib/main.dart
:
To make this patch available to your users, run shorebird patch ios
.