🔀 How to untangle and manage build distribution — Webinar, May 9th — Register
🔀 How to untangle and manage build distribution — Webinar, May 9th — Register

Product Updates

Fixes by Runway

In case you missed it, last week we announced a big new feature: Fixes. It’s designed to help teams better manage their release diffs, offering a safer and more consistent way to get late-arriving changes into a release if needed. Fixes applies real guardrails that allow you to track, review, and approve any late additions, and automates away the busywork and context-switching required to actually get changes pulled in.

For some background on the launch and detail on how Fixes works, you can read more on the Runway blog!

Avoid accidentally shipping a release with untranslated strings – plus trigger and sync translations automatically – with Runway’s newest integration capability

If your app is available in more than a single language, you’re likely familiar with the extra work and headaches that the translation process can add to every release. You need to keep careful watch across all your localizable strings to ensure new copy is fully translated and that the translated strings made it safely into the release diff. The translation process adds (yet another) asynchronous element to release cycles, since translations are often sent out and finalized as other release prep continues in parallel. And there’s uncertainty around situations in which the team might be okay proceeding with certain strings untranslated, versus those where key untranslated strings are showstoppers.

Now, you can integrate your team’s translation and localization tooling in Runway, and we’ll help you avoid mistakes and save time when it comes time to prepare app copy for release.

Runway surfaces all the localizable strings in your project and computes readiness relative to each release, so you can see at a glance which strings are fully ready to go – uploaded, translated, pulled back into the codebase (and onto your release branch, where applicable) – and which are still pending. Extra context on pending strings helps your team identify what’s actually needed to get things wrapped up. Perhaps translations are actually complete but the translated strings have yet to be pulled down into the release, or perhaps certain late-arriving strings are still waiting for translation. To complete the picture and further help your team identify translation showstoppers, localizable string keys added or updated in the context of a given release are highlighted.

You can trigger a source file upload or export translations back to the codebase right from Runway when needed – or, save your team the steady drip of manual work and context-switching and let Runway automate the process of keeping translations synced and updated in your project. With the new “Sync localizable string translations” automation enabled, Runway watches your release diff for any new or updated strings and will automatically upload source files for translation when needed, then pull translations back down to your release when ready. If your team prefers to merge all translations into your working branch first, there’s another new automation that can watch your working branch for updated strings and automatically pull them over into the active release.

Currently available for Crowdin, with Localize, Lokalise, Smartling, and others to follow.

Keep your release pilot rotation in sync with another new integration type: scheduling

Most of you are probably already familiar with the release pilot rotation in Runway, which allows you to set up a list of team members that we’ll iterate through to automatically assign as pilots (aka captains, drivers, etc.) on each release. You can manage your rotation within Runway, reordering and swapping in one-off subs as needed, and pilots have a special role to play with targeted reminders and action items that make it easier for folks to rotate into the role.

But we know that teams often use specific tools for scheduling rotations more broadly within their org, like PagerDuty, Opsgenie, or even Google Calendar. In true Runway fashion, we want to ensure you get the best of both worlds by offering an integration point for these specialized tools that Runway can tie into and extend from. Now, you can now connect your scheduling tool of choice and Runway will manage your release pilot rotation accordingly, automatically assigning pilots to releases based on a given on-call schedule, swapping folks when coverage changes, and re-assigning pilots if a release rolls over into another team member’s shift. Reminders and alerts can be sent along the way so there are no surprises or gaps in coverage.

Currently available for PagerDuty, with Opsgenie, Google Calendar, and others to follow.

More reasons to stay out of App Store Connect & Play Console, with the ability to view and edit preview videos and additional metadata fields

‍At Runway, we’re always looking for more ways to keep your team out of App Store Connect and Play Console. They’re not the friendliest of platforms and are two of the worst offenders when it comes to context-switching. You should already be able to do most if not all of what you need to do in the stores release to release from within Runway, manually or automated. But we do field feedback from teams wanting the ability to update even more of their store presence in Runway, and so we’re continuing to add more store-related functionality to the platform. Our latest additions include handling for preview videos, allowing you to view, edit, and upload new videos for both Android and iOS. On the metadata front, you can now edit promotional text, subtitle, and app name alongside the other fields Runway already surfaces. As always, Runway’s user roles and scoped access can give your marketing and product folks an easy and safe way to interact with these items.

Eliminate QA busywork and context-switching by automatically creating new test runs per release

Runway’s regression testing integrations allow your team to connect the test case management tooling your QA folks might be using (TestRail, Xray) to surface live status of test runs alongside each release. This already helps streamline a critical part of the release process by opening up what is typically a black box and removing the need for constant checking-in back and forth between engineering, product, and QA as final build validation is worked on.

Our new ‘Create regression test runs’ automation goes a step further to save time that’s wasted manually managing regression testing processes. Before, for each new release, QA folks would need to manually create a new test run in your team’s test case management tool, copying over the necessary test plans, sticking to any particular naming conventions, etc. Now Runway can handle all of this for you, ensuring there’s a new test run created and ready to go by the time QA hops in to begin regression testing each and every release.

Stop the ad hoc madness – let Runway manage your iOS devices and provisioning profiles so you don’t have to lift a finger

If you’re part of an iOS team, chances are you’ve had to deal with the massive headache that is wrangling device registration and managing provisioning profiles. Or, maybe you have some heroes on your platform team who spend way too much of their time dealing with all of this busywork for you and the rest of your team. Whatever the case, you can now hand off all this hassle to Runway: we’ll keep your team’s devices updated in the Apple Developer portal as folks come and go, and automatically generate and re-generate relevant provisioning profiles along the way.

It all starts with a seamless flow that makes it dead simple to collect new device identifiers from your team – no more fumbling around for those long IDs that no one knows how to find. With just a couple of taps, you can install a web clip on new devices to automatically collect the device identifier and send it over to Runway (plus, if you’re using Build Distro, the web clip also gives the device instant access to your team’s build buckets).  

Runway will automatically register new devices in the Apple Developer portal and disable devices when folks leave your team, freeing you from needing to stay on top of that constant cleanup. Each and every time your list of registered devices changes, Runway takes care of updating the necessary provisioning profiles to ensure new builds are installable by all the right team members.

Spin up hotfixes even quicker – and with fewer manual steps to mess up – with automatic cherry-picks during release creation

When you identify a critical issue in production and need to get a hotfix going, time is of the essence. At the same time, the rush to get a fix in and out the door often leads to silly mistakes. So, we’ve added a new automation to Runway’s hotfix flow to both speed things up and make things less error-prone. In addition to existing options to automatically cut a branch from your last release tag and immediately bump version on that branch, you can now also select all the necessary fixes from your development branch, and Runway will cherry-pick them over into the hotfix – all in a single step.

An easier way to keep groups of team members organized by roles and up to date in Slack, with user groups mapping and automatic syncing

Slack user groups are a good way to get the right comms in front of the right teams and roles within your org, but they take work to manage and keep up to date. Now, Runway can take that work off your plate. When you enable Runway’s new ‘Sync Slack groups’ automation, you’ll specify a mapping of roles (e.g. engineers, PMs, QA, etc.) to the Slack user groups you might already use – or want to use – for those different folks on your team, and we’ll take it from there. First, Runway auto-creates any Slack groups that don’t yet exist, then continuously ensures all groups are kept up to date by automatically adding or removing users for each as folks join, change roles, or leave your team.

Once you have your roles-to-groups mapping defined, and even if you choose not to enable the syncing automation, Runway can use the mapping to @mention the appropriate groups whenever needed – for example, if you have assigned a checklist or approval item to a specific role, or if you add a role to a specific Runway notification. 

Get your wider team the context they need, without all the copy-pasting, using new auto-generated release summaries 

Every team has that post-release ritual where someone has to open up a bunch of browser tabs and chase other folks down for various pieces of release context, then copy-paste it all together and get that summary in front of a wider audience within the org. Of course, the Runway platform itself is one good substitute for this tedious exercise, giving everyone self-serve access to the complete picture release to release. But Runway now also helps you easily distribute release info outside the platform, to the constellation of interested folks who aren’t as close to the process or to mobile in general, by automatically generating release summaries and optionally sending those out via email after each release. You can customize these release summaries to suit your team’s needs, with a range of dynamic tokens that Runway will populate based on actual data from the release. 

More hands-free options for multi-destination distribution with automatic artifact uploads on Build Distro buckets

Oftentimes teams need to get artifacts to multiple different places as they advance through different stages of internal distribution. For example, you might start distributing feature builds through Build Distro, then advance to a wider audience via TestFlight or Play Console testing tracks. To help with this process, we’ve taken the artifact upload automation that already existed on the release management side and brought it over to Build Distro as well. You can enable the upload automation on a per-bucket basis and configure the specific destination where artifacts are sent onwards to. Automatic retries safeguard against intermittent errors during this often-flaky part of the process.

Get recurring builds out-of-the-box with timed triggers on Build Distro buckets

Runway’s existing trigger workflow automation makes it easy to generate new builds as needed, whenever there are new changes to build, based on a given Build Distro bucket’s rules. But there are certain flavors of builds, typically those off of busy shared branches, which need a more measured approach. Think nightlies or other shared builds off of your team’s main development branch. A new option on the automatic trigger bucket automation allows you to change its behavior so that it runs on some recurring cadence you define – hourly, daily, every N hours – instead of on every diff.

More ways to tailor your team’s unique release workflows, with options to hide steps and configure by release type

Building on our functionality that lets you render certain release steps as non-blocking in the context of your overall release workflow in Runway, we’ve added more ways to further customize release steps. First, for non-blocking steps, you can now choose to hide those steps completely from release timelines if they’re not at all relevant for your team. And, you can configure non-blocking steps per release type, allowing you to adjust your team’s workflow for normal releases vs hotfixes.

Get Android uploads all the way to their initial destination, with optional track assignment for newly distributed builds

Many teams have already streamlined and shored-up their pipelines by handing the build upload step over to Runway: we take care of grabbing the right artifacts and ensuring they get uploaded, with automatic retries if needed. But on the Android side, with the way Play Console works, that just lands builds into “general storage”, with teams needing to move builds onwards to an initial track from there. Certain existing Runway automations help with track promotion later in the release cycle, but we can now also help with initial track release creation. A new option on Runway’s build upload automation lets you specify a default initial track for uploads, so we’ll make sure new builds make their way out of storage and onto that track.

‍

Release management

Keep users and roles from your directory provider synced to Runway – and even all the way to App Store Connect and Play Console

If your company is on the larger side, chances are you’re managing your organization’s teams, users and their permissions from a centralized directory like Okta, Microsoft Active Directory or similar. But up until now, for user and team management within Runway, admins have had to do things manually. Now, with directory sync support, Runway integrates with your company’s directory provider to take care of everything automatically for you: from assigning new users the correct roles and app membership, to updating users who change teams along the way, to deactivating users who leave your org.

Plus, you might remember that Runway also supports automatically syncing users and roles to App Store Connect and Play Console — so, combined with this new directory sync functionality, you can now automate user management all the way from your org’s centralized directory to the stores (something not available out-of-the-box from Apple or Google).

Get an even more complete and customizable picture of release health, with multi-integration support and new metric types

For many teams, getting a complete picture of release health means pulling from multiple different data sources, especially when it comes to things like performance monitoring and product analytics. To allow for this, you can now simultaneously connect as many of these kinds of observability and analytics tools as needed (Amplitude plus Datadog, say). Runway will pull signals from all of these sources into your Rollouts view and you’ll be able to configure health metrics attached to each and every one.

Additionally, we’ve added support for a number of new metric types: average, median, and 90th/95th/99th percentiles of property values are all now supported for most of our Observability & Analytics integrations, with even more metric types coming soon.  

Safeguard health and give your team peace of mind after-hours, with customizable blackout days and times for phased rollouts

Depending when you first kick off a phased rollout, it could be that a big step-change in user adoption will happen on a day – or at a time – when your team might not be quite as ready to quickly address any issues that arise. Now, you can avoid this by configuring blackout days and times during which Runway will temporarily pause your rollouts. For example, you can prevent rollouts incrementing over the weekend, or outside of normal business hours.

Highlighted quality of life improvements

  • Mark releases as “Skipped” in Runway, so you can easily advance past abandoned cycles while still retaining their history and position in your release timeline.
  • In addition to options to automatically apply a set of default ‘What’s new’ release notes or use your latest beta testing notes as release notes, you can now also carry over release notes from your previous completed release.
  • Quickly pull up the status of any release with our newly simplified release status Slack action: just type <code>/runway status [ios/android] [live/next/upcoming]<code> to get a snapshot of where things stand for any release.

Build Distro

Automatically group personal or team-specific builds, with user filters on build buckets 

One of the big goals with Build Distro is to make it dead easy to distribute and organize all the different build flavors your team cares about. Now, there’s an even more seamless way to handle personal and team-specific feature builds, with user filters on build buckets that automatically direct these sorts of early dev builds to the right place.

How it works is quite simple. If you’ve set up your bucket with a PR rule, only builds generated from PRs that were authored by the specified users will be pulled into the bucket. If you’ve set up your bucket with a branch rule (not pictured), only builds generated from commits that were authored by the specified users will be pulled into the bucket. Specify single users to create personalized buckets for WIP dev builds, or groups of users to create dedicated build buckets for different feature teams across your org.

Make it easier to generate any flavor of build hands-free, with customizable build triggers per bucket

Typically, teams are stuck between a rock and a hard place when it comes to getting the variety of build types they care about distributed: either trigger each different flavor manually all the time, or else set up and maintain a delicate web of conditional triggers in CI. With the addition of automatic workflow triggers on Build Distro buckets, you now get hands-free distribution for every different build flavor, with all the correct configurations taken care of for you out-of-the-box.

For example, consider a build bucket one of your feature teams has set up. It might have a PR rule configured that grabs builds associated with PRs against your main branch, authored by members of that team. Now, if you flip on the bucket’s build trigger automation, Runway will automatically generate new builds for that team whenever their members open or push to PRs against main (and then route those builds to the right place as usual).

Easily give testers full context with tester notes automatically generated from each build’s diff

Letting your testers know what’s new in a given build is a distribution best practice, but it’s also a tedious, manual step that quickly becomes error-prone and a drain on the team. Now, Runway can automatically generate and populate tester notes for you, based on the diff since the previous build of the same flavor. In addition to listing commit info, diff items link out to associated PRs and project management tickets, so your team gets the complete picture and things are easy to digest for technical and non-technical teammates alike.

Build Distro

Understand exactly what’s changed, with a combined diff of code & tickets alongside each new build

Our goal with Build Distro is to make it dead simple for anyone on your team to grab the right build at the right time. And in order to achieve that, we need to be sure folks have a complete, understandable snapshot of what each build contains. So, we’re taking the popular Feature Readiness view from Runway’s release workflow and applying it to each and every build you distribute via Build Distro.

When you click (or tap! — don’t forget, Build Distro plays nicely on your phone) into the build detail view, you’ll see a diff that contains a composite of code and tickets for a full picture of work that went into the build. In addition to seeing changes since the previous build of the same type, you can scroll further back in the diff with clear demarcation between older builds as you go — helpful for folks who haven’t grabbed this kind of build in a while and need to catch up.

work-items-diff

Make it painless to grab one-offs & feature builds, with automatic install links on PRs

When it’s hard to get incremental, on-the-fly builds into people’s hands, teams tend not to bother – and that has a negative impact on collaboration and app quality. Build Distro’s buckets system already takes a big step towards making these sorts of one-off and feature-based builds easier to distribute. Now, we’re tackling more of the “last mile” problem by ensuring direct access to downloadable builds is never more than a click, tap, or QR scan away.

For any Build Distro buckets you’ve configured to grab builds from pull requests, you can enable a new automation that will post comments on the appropriate PRs, including info on each new build and direct links and QR codes for seamless installation. Now, whether a teammate is in the weeds code-reviewing a PR or is just curious about its latest changes, they have that version of the app at their fingertips.

pr-install-comment

Release Management

Submit and release on green: more options for full automation, without sacrificing safety

Most of you are probably familiar with the existing automations that allow you to set target dates and have Runway automatically submit and/or release on schedule – provided preceding steps and approvals in your release workflow are good to go. Those safeguards are important, but it’s also a shame to lose hands-free mode if you’ve only missed your target deadline by a little bit and the last few pending items will be ready soon.

Now, you get the best of both worlds with a new option on Runway’s submission and release automations that allows it to “proceed on green”. With this option enabled by itself, you can have Runway automatically submit or release just as soon as all preceding steps are in a good (green) state. Or, if you couple this new option with target dates, Runway can submit/release automatically at the scheduled time or, if not all steps are ready, any time afterwards once all steps are green.

Screenshot 2023-06-26 at 13.53.50

Make sure important updates and time-sensitive blockers don’t go unnoticed, with targeted notifications

‍‍Slack can be a noisy place, making it easy for important notifications to get missed. To ensure no balls get dropped and give you full confidence that folks who need to be aware of a critical update or time-sensitive blocker are indeed aware, you can now add targeted mentions to each and every Runway notification on a per-notification basis. You can assign roles or specific users and they will be called out or @-mentioned using their Slack handles, respectively.

slack-mentions-1

Keep your development branch up-to-date at all times, with a new option for Runway’s backmerge automation

For teams who use the backmerge approach to pull late-arriving fixes applied to release branches back over onto their development branch, some amount of Git wrangling is always necessary. Runway already offered a way to automate that away, by automatically backmerging from release branch into dev (and any upcoming release branches) at the end of each release cycle. But some teams told us that with the pace of their development cycles and multiple releases stacked up, they needed a more continuous backmerge operation – and they were wasting lots of time managing that by hand.

Now, Runway can offer automated continuous backmerges. Choose the corresponding option in the backmerge automation settings and Runway will perform immediate backmerges as each item of late-arriving work lands on your active release branch.

Get a complete overview of any active or completed release without leaving Slack

To save you even more context-switching and give even more of your team easy access to Runway’s single source of truth, we added a new Slack action you can use for a quick overview of any upcoming, live, or past release. Just call /runway status from any Slack channel, passing in the app and version you’re interested in, and Runway will post a message containing target dates, release step statuses, phased rollout progress and health metrics.

status-slack-action

Even more options for getting your team’s unique stack fully integrated in Runway

We’re continuing to integrate Runway with all the different tools mobile teams tell us they’re using. Here are the noteworthy recent additions to our lineup of integrations:

  • Google Analytics (observability & analytics)
  • Azure Repos (version control)
  • Embrace (stability monitoring)
  • Microsoft Teams (notifications – in beta)

Introducing Build Distro by Runway: making it dead simple to get the right builds into the right teammates’ hands

We’re very excited to announce the launch of Build Distro, a better tool for mobile build distribution that makes it dead simple to get the right builds into the right teammates’ hands! 📲 🚀

Build Distro allows you to clearly define and group the different types of builds your team distributes — from one-offs and work-in-progress dev builds, to staging builds, to release candidates. You can avoid the usual jumbled pile of builds that folks have to carefully sift through, and give technical and non-technical team members alike an easier way to grab builds, with streamlined installation via QR or Slack link. With hassle-free distribution, your team can check out builds earlier and more often, improving collaboration and app quality.

Continue reading below for all the highlights, and check out the Build Distro docs to get started!

📲Get the right builds into the right people’s hands

Build Distro introduces the idea of build buckets to allow you to clearly define and group different flavors of builds. Instead of having all distributed builds landing in that jumbled pile, you can now separate different kinds of builds using definitions based on branch, CI workflow, or some combination of both — or using more freeform, ad hoc buckets. Not only are build flavors logically separated into buckets, but you can set up targeted notifications and scope access per bucket to ensure the right people are aware of and able to seamlessly install new builds relevant to them.

✨ Share one-offs & early test builds more easily

With branch-based and ad hoc, personal build buckets, Runway makes it much easier to share work-in-progress builds. You can create dedicated buckets for test builds and nightlies on your main development branch or any feature branches, and everyone on your team can also have their own personal buckets to drop updates into as they work. Product managers, QA, designers, and other engineers and stakeholders can now easily grab any WIP builds, earlier and more often during the development cycle, helping your mobile org improve quality and shift left.

🔒 Make it impossible to ship the wrong build to prod

One of the worst failure modes around build distribution has to do with test or staging builds getting accidentally shipped to production. It may be rare, but when it happens, it can be devastating. Confusion around distributed build flavors is often to blame, and Runway’s build buckets remove this risk. Clearly delineate prod and pre-prod builds, and scope access accordingly.

📥 Install builds with less hassle, and more context

Even once someone has tracked down a build they want to check out, actually getting it onto their device comes with its own hassles. Runway makes installation foolproof and seamless: with each build, you can install directly by scanning a QR code or sending yourself a link in Slack. Plus, alongside each build you can see full context on the build flavor and exactly what work it contains — no more guesswork, pinging build numbers back and forth and hoping you’re grabbing the right version of the app.

⚙️Integrate with your existing tools for zero extra overhead

Getting up and running is simple: connect your existing CI and… that’s it. Once you’re connected, Runway will get you started with a few default shared buckets for development and RC builds, and anyone on your team can easily create scoped personal buckets. To define a new shared bucket, simply select a branch and a workflow (from among any defined in your CI, automatically pulled in by Runway) and builds will start populating the bucket with no further intervention.

🤝 Standalone or tightly integrated with the rest of Runway

Exactly how you leverage Build Distro is up to your team. You can spin up Build Distro by itself and use it as a standalone tool. Or, for a tightly integrated experience across the entire dev and release cycle, Build Distro plugs seamlessly into Runway’s end-to-end release management platform as a beta integration, allowing you to manage everything to do with pre-prod builds and testers alongside the rest of the release context.

With Build Distro, the Runway platform is unlocking yet another aspect of a more collaborative and streamlined mobile development experience for teams — not just for engineers, but for each and every role and stakeholder involved. We would love to hear your thoughts, and invite you to reach out for a personalized, guided tour!

And stay tuned for more: our roadmap includes Build Distro iterations that will tackle things like provisioning and signing, triggers and other bucket-level automations, and even more ways to create and share one-off dev builds.