Create a Release
In order to start pushing updates, you will need to create a release.
Creating a release builds and submits your app to Shorebird. Shorebird saves the compiled Dart code from your application in order to make updates smaller in size.
Create an Android release by running the following command:
shorebird release android
Example output:
If your application supports flavors or multiple release targets, you can
specify the flavor and target using the --flavor and --target options:
By default, shorebird release android builds an AppBundle (.aab). If you
would like to also generate an Android Package Kit (.apk), use the following
command:
To release with a different Flutter version, you can specify the version using
the --flutter-version flag.
Create an iOS release by running the following command:
shorebird release ios
Example output:
If your application supports flavors or multiple release targets, you can
specify the flavor and target using the --flavor and --target options:
To release with a different Flutter version, you can specify the version using
the --flutter-version flag.
Signing issues
Section titled “Signing issues”Depending on how you normally sign your iOS app, you may see an error at the end
of the build saying something like:
Runner.app requires a provisioning profile with ___ feature or that no signing
certificate was found. This can be addressed in a few ways:
Setting up automatic signing in Xcode
Section titled “Setting up automatic signing in Xcode”If you are releasing on your local machine (i.e., not in a CI environment), this option is easier than the following options, but does not always work well in CI environments.
In Xcode, open your project and navigate to the “Signing & Capabilities” tab. Ensure that “Automatically manage signing” is checked.
Create an ExportOptions.plist file.
Section titled “Create an ExportOptions.plist file.”You may need to provide an ExportOptions.plist file to the
shorebird release ios command. This file is used by Xcode to determine which
certificate and provisioning profile should be used to sign the .ipa. An example
of this file is:
To use this file, pass it to the shorebird release ios command:
Create a Linux release by running the following command:
shorebird release linux
Example output:
Create a macOS release by running the following command:
shorebird release macos
Example output:
If your application supports flavors or multiple release targets, you can
specify the flavor and target using the --flavor and --target options:
To release with a different Flutter version, you can specify the version using
the --flutter-version flag.
Create a Windows release by running the following command:
shorebird release windows
Example output:
If your application supports flavors or multiple release targets, you can
specify the flavor and target using the --flavor and --target options:
To release with a different Flutter version, you can specify the version using
the --flutter-version flag.
Options
Section titled “Options”| Option | Abbreviation | Description |
|---|---|---|
--platforms | -p | Comma-separated list of platforms to release simultaneously (e.g., android,ios). |
--flavor | The product flavor to use when building. | |
--target | -t | The main entrypoint file of the application. |
--flutter-version | The Flutter version to build with (e.g., 3.24.0). Defaults to the version bundled with Shorebird. | |
--build-name | Override the version name (e.g., 1.2.3). | |
--build-number | Override the version code / build number (e.g., 42). | |
--artifact | Android artifact type: aab (default) or apk. | |
--dry-run | -n | Build and validate the release but do not upload it. Ideal for CI validation. |
--obfuscate | Obfuscate Dart code. Must be used together with --split-debug-info. | |
--split-debug-info | Output debug symbol files to the specified directory when obfuscating. |
iOS-specific Options
Section titled “iOS-specific Options”| Option | Description |
|---|---|
--no-codesign | Skip code signing for the iOS build. |
--export-options-plist | Path to a custom ExportOptions.plist for the iOS archive export step. |
--export-method | Distribution method: app-store, ad-hoc, development, or enterprise. |
Releasing for Multiple Platforms Simultaneously
Section titled “Releasing for Multiple Platforms Simultaneously”If your app supports multiple platforms, you can build and publish releases for
them in a single command using the --platforms (or -p) option:
This will compile the binaries for the specified platforms and register them as a single version release in your Shorebird console. Note that to release for iOS or macOS, you must run this command on macOS hardware.
Manage Releases
Section titled “Manage Releases”In addition to using the Shorebird console,
you can manage your app’s releases directly from the command line using the
shorebird releases commands.
List Releases
Section titled “List Releases”Via the Shorebird CLI
Section titled “Via the Shorebird CLI”To list all releases associated with your app:
This will output a list of all releases, showing their version number, target platform, Flutter version, and active patch number.
Via the Console
Section titled “Via the Console”You can view all of your releases for your current app (as defined by your
shorebird.yaml) on the Shorebird console.

View Release Details
Section titled “View Release Details”To view detailed information for a specific release version:
This command displays metadata for the release, including which platforms are active and details of any patches created for it.
Get APKs from a Release (Android only)
Section titled “Get APKs from a Release (Android only)”If you created an Android release using an App Bundle (.aab) and want to
generate local APKs from it for testing or side-loading, you can download them
using:
This will download the release artifacts and extract the compatible APK files to your machine.
Delete Releases
Section titled “Delete Releases”You can delete a release for your app (as defined by your shorebird.yaml) on
the Shorebird console.
- Navigate to the application.
- Click on the release you wish to delete.
- Go to the “Settings” tab at the top of the page.
- In the “Danger Zone” there will be a “Delete” button.
In order to complete the delete request, you do need to confirm which binaries you would like to be deleted. You can easily delete all releases or pick by platform. The list of platforms shown is based on the binaries that are uploaded for that release.

Side-loading and MDM
Section titled “Side-loading and MDM”A common question we get asked is: Does Shorebird require publishing to the App Store or Play Store?
No. Shorebird works fine with side-loading and mobile device management (MDM) on Android. We haven’t had anyone try Shorebird with the iOS Developer Enterprise program, but we expect it to work just as well.
To build Shorebird for distribution via APK (e.g., side-loading), use the
--artifact flag with the shorebird release command. For example:
That will produce both .apk and .aab files. You can distribute either or both as needed.