Types of automations

Categories

Release cycle

App store tasks

Beta testing

Release hygiene

General

Create release-specific Slack channel(s)

Runway will automatically create new Slack channel(s) for the release, if you have release-specific channels configured (e.g. release-{version}) in settings.
Visit the Notification settings article for additional information on configuring release-specific channels.

Bump version in code

Runway detects where the app version is referenced in your code and bumps it according to your team's bump version strategy (configurable from settings for this automation):
  • Pre-kickoff, to current release version, on working branch: Runway will bump the version on your working branch to the current release version prior to kicking off your release.
  • Post-kickoff, to current release version, on release branch: Runway will bump the version on your release branch to the current release version once your current release has been kicked off.
  • Post-kickoff, to next version, on working branch: Runway will bump the version on your working branch to the next-up release version once your current release has been kicked off.
  • Post-submission, to next version, on working branch: Runway will bump the version on your working branch to the next-up release version as soon as your current release has been submitted for review.
  • Post-release, to next version, on working branch: Runway will bump the version on your working branch to the next-up release version as soon as your current version has been released to the app store.
You can configure an override list of version files in App Settings.
By default, Runway will detect your app version in code as long as it's found in one of the following files:
iOS:
  • .pbxproj
  • .xcconfig
  • .plist
  • .json
  • .yaml
Android:
  • .gradle
  • .json
  • .yaml
React Native / OTA:
  • package.json
The table below describes the format (in regex) Runway is expecting to find the version in depending on the file type.
File type
Regular expression
Description
Example
Default
(\d+\.\d+\.\d+)
Matches one or more digits separated by a . character
12.2.2
.pbxproj
MARKETING_VERSION = (\d+\.\d+\.\d+)
Matches the string MARKETING_VERSION = (case sensitive) followed by one or more digits separated by a . character
MARKETING_VERSION = 12.2.2
.xcconfig
MARKETING_VERSION = (\d+\.\d+\.\d+)
Matches the string MARKETING_VERSION = (case sensitive) followed by one or more digits separated by a . character
MARKETING_VERSION = 12.2.2
.plist
CFBundleShortVersionString<\/key>\s*<string>(\d+\.\d+\.\d+)<\/string>
Matches the CFBundleShortVersionString</key> string (case sensitive) followed by zero or more white space characters (spaces, tabs, line breaks), followed by the <string> string, followed by one or more digits separated by a . character, followed by the </string> string
CFBundleShortVersionString</key><string>2.2.2</string>
.yaml
version:\s+?(\d+\.\d+\.\d+)
Matches the version: string, followed by one or more white space characters (spaces, tabs, line breaks), followed by one or more digits separated by a . character
version: 12.2.2
.gradle
versionName.*?(\d+\.\d+\.\d+)|versionString.*?(\d+\.\d+\.\d+)
Matches the versionName string, followed by zero or more of any character (except line breaks), followed by one or more digits separated by a . character OR the string versionString, followed by zero or more of any character (except line breaks), followed by one or more digits separated by a . character
versionName 12.2.2
.json
​
\"version\":\s+?\"(\d+\.\d+\.\d+)\"
Matches the "version": string (case sensitive), followed by one or more white space characters (spaces, tabs, line breaks), followed by the one or more digits separated by a . character wrapped in quotation marks
"version": "12.2.2"

Kick off release on target date

Static branching teams

Runway will promote code from your working branch to your release branch on the scheduled date.
You may be required to approve and merge the resulting pull request depending on your VCS settings, and on whether you have the "Merge pull requests opened by Runway" automation enabled.

Release branching teams

Runway will create a release branch off of your working branch for the next release on the scheduled date.
This automation will always be inactive for hotfix releases in Runway.

Submit app for review on target date

Runway will submit your selected build for review on the scheduled target submit date if all previous steps are ready (green).
If automated submission fails, Runway will attempt to submit again every 5 minutes up to a maximum of 5 times. After that, you'll need to update to a future target submit date or release your update manually.
This automation will always be inactive for hotfix releases in Runway.

Release app on target date

iOS

Runway will release your app update (or start your phased release, if applicable) on the scheduled target release date if all previous steps are ready (green) and your app update has passed App Store review.
If automated release fails, Runway will attempt to release again every 5 minutes up to a maximum of 5 times. After that, you'll need to update to a future target release date, or release your update manually.
This automation will always be inactive for hotfix releases in Runway.

Release stable phased releases / staged rollouts to 100% of users

Runway will release your update to all users early if the session stability for the update stays within your defined delta relative to your average session stability, and your adoption threshold has been reached.
This automation requires a stability monitoring integration.
This automation is not available for OTA apps.

Halt unstable phased releases

Runway will pause your phased release / staged rollout if the session stability for the update decreases by a specified percentage relative to your average.
This automation requires a stability monitoring integration.
This automation is not available for OTA apps.

Merge back changes on release branches at the end of the release cycle

At the end of the release cycle, Runway will merge the release branch back into the working branch (and any existing open release branches) if it detects commits on the release branch that are not on the working branch.

Create new App Store Connect or Play Console versions when the release is ready to be prepared

iOS

Runway will create a new version of your app in App Store Connect once the next release is being prepared in Runway.

Android

Runway will create a draft production release in the Play Console once the next release is being prepared in Runway.

Apply default Export Compliance Information to new builds in App Store Connect

Runway will apply your default Export Compliance Information answers (as defined in App Settings) to new builds as they are uploaded to App Store Connect.

Select the latest build in App Store Connect or Play Console

iOS

Runway will select the latest available build for release in App Store Connect. Note that there may be a processing delay of a few minutes.

Android

Runway will select the latest available APK/AAB in the production track in the Play Console.
Runway will stop performing this automation when:
  • a different build is manually selected in App Store Connect / Play Console
  • a different build is manually selected in Runway's submission step
  • an RC build is manually selected as Active RC in Runway's Release candidate step, and that RC build has an associated app store build

Carry over TestFlight 'What to Test' notes or beta track Release Notes to new beta builds

iOS

Runway will automatically carry over the 'What to Test' notes of the previous TestFlight build to new builds.

Android

Runway will automatically carry over the Release Notes of the previous beta build to new builds.

Apply default 'What's New' text to new releases in App Store Connect

iOS

Runway will apply your default 'What's New' text (as defined in App Settings) to new versions created in App Store Connect. You can continue to modify the text before you submit your update for review.

Android

Runway will apply your default release notes (as defined in App Settings) to new versions created in the Play Console. You can continue to modify the text before you submit your update for review.

Promote new builds to testing track

Android

Runway will promote any newly uploaded APKs/AABs to your testing track and start the rollout.

Assign beta testing builds to default testing groups

iOS

Runway will assign any new builds uploaded to TestFlight to your default beta groups for testing. External testers will have access once the build has been reviewed.

Submit new builds for beta review

iOS

Runway will submit any new builds uploaded to TestFlight for beta review as soon as they finish processing.

Apply default review attachment to new app versions in App Store Connect

iOS

When submitting a new release for review, Runway will apply your default file attachment provided for reviewers (as defined in App Settings) to new versions created in App Store Connect.

Tag releases at the end of the release cycle

Runway will tag your production release commit at the end of each release cycle, and generate a summary of all work going out with the release. The summary will be added to a "Release" in your VCS integration, and will include a list of commits and their associated project management tickets.
Release in GitHub created by Runway
Your previous release must be tagged in order for Runway to accurately compute the summary of work for a release.
Runway may fail to tag your releases automatically in certain cases:
  • Your previous release was not tagged
  • The build that was released could not be associated with a Release Candidate (CI) build, and therefore could not be linked to a specific commit in your VCS
  • Commit info is missing from your build in CI
In these cases, you can manually tag your release in Runway by going to the Release step, choosing a commit to tag, and clicking Create Tag.

Attach build artifacts to VCS release record when tagging

When tagging your production release commit, Runway will attach all artifacts generated from your active production build workflow as assets on your release record.
This automation requires the Provide build artifact downloads automation to be enabled. Artifact downloads are currently only supported via GitHub Actions and Bitrise.

Add missing labels or fix versions to tickets

Runway will add appropriate labels and/or fix versions when they are missing from tickets that are associated with the release. These label and fix version patterns are defined in Integration settings > Feature affiliations for the app.
Missing labels or fix versions will be applied to a ticket if a piece of code work is in a given release (exists in that release’s diff) and that piece of code work references that ticket (in commit message, PR title, or former branch name)
The missing labels or fix versions are applied once code work enters the final release diff (i.e. exists on the release branch and is in the diff for the release).

Provide build artifact downloads and notify in Slack when available

Runway will download all artifacts generated from your CI build workflow, and provide direct download links to them from the Runway interface. Additionally, Runway will include artifact information in Slack build success notifications, including a link to find those downloads in Runway.
Artifact downloads are currently only supported via GitHub Actions and Bitrise.

Download dSYMs from App Store Connect and upload to stability monitoring

Runway will automatically download dSYM files for all builds in App Store Connect and then upload them to your stability monitoring platform. Not applicable if bitcode is disabled.
Currently available for teams with Sentry and Bugsnag integrations only; we hope to add Firebase support soon.

Merge pull requests opened by Runway

Runway may create pull requests to fulfill various tasks on demand (for example, bumping your version in code on a development branch). If this automation is enabled, Runway will attempt to merge these PRs without manual approval.

Prepare next version in Runway when current release is kicked off

Runway will create a new Runway release record for your next version when your current release is kicked off. This will assign a release pilot and provide a selectable upcoming release via the versions timeline in the App Overview screen.
Copy link
On this page
Categories
Release cycle
App store tasks
Beta testing
Release hygiene
General
Create release-specific Slack channel(s)
Bump version in code
Kick off release on target date
Static branching teams
Release branching teams
Submit app for review on target date
Release app on target date
iOS
Release stable phased releases / staged rollouts to 100% of users
Halt unstable phased releases
Merge back changes on release branches at the end of the release cycle
Create new App Store Connect or Play Console versions when the release is ready to be prepared
iOS
Android
Apply default Export Compliance Information to new builds in App Store Connect
Select the latest build in App Store Connect or Play Console
iOS
Android
Carry over TestFlight 'What to Test' notes or beta track Release Notes to new beta builds
iOS
Android
Apply default 'What's New' text to new releases in App Store Connect
iOS
Android
Promote new builds to testing track
Android
Assign beta testing builds to default testing groups
iOS
Submit new builds for beta review
iOS
Apply default review attachment to new app versions in App Store Connect
iOS
Tag releases at the end of the release cycle
Attach build artifacts to VCS release record when tagging
Add missing labels or fix versions to tickets
Provide build artifact downloads and notify in Slack when available
Download dSYMs from App Store Connect and upload to stability monitoring
Merge pull requests opened by Runway
Prepare next version in Runway when current release is kicked off