October 13, 2021

Progressive delivery: accelerate app releases while minimizing bugs

As users hunger for new versions and fresh features of their favorite apps, software developers are under increasing pressure to release updated apps in shorter and shorter time spans. However, when developers code faster, they’re naturally apt to make more errors, which can ruin the user experience and harm a brand’s digital reputation as customers share negative reviews. No matter how much time developers have for each release, it’s impossible to launch an error-free app, since some bugs are inevitable. So how do enterprises speed up app releases while protecting application quality?

Progressive delivery is a method of software development that allows organizations to release updated apps rapidly while maintaining quality and minimizing the chance of bugs wreaking havoc on the stability of the app. Traditional app delivery makes it impossible for developers to execute faster app releases without resulting in more coding errors, but progressive delivery is designed specifically to support this new paradigm. 

Phased rollouts, feature flagging and experimentation

There are three key features of progressive delivery. The primary one is:

  • Phased rollouts: Applications are first released to only a select segment of users — often the most advanced and active users whose activity will provide the best feedback — before being released to broader audiences. This allows engineers to optimize the app while catching and fixing bugs before they impact the entire user base. The phased rollout approach is essentially the defining aspect of progressive app delivery, enabling developers to release smaller and more frequent app updates, so users can get new features quicker without exposing most of them to bugs. 

The second two features of progressive delivery fall under the umbrella of phased rollouts:

  • Feature flagging: Feature flags are used to turn certain features on or off for a subset of users, reducing risk by managing the rollout of a new feature to a limited audience to monitor its impact. For example, perhaps only one percent of users see a new feature on the first day. Then, if all goes well, ten percent see the feature the next day, and so on.
  • Experimentation: Testing how different features perform when an app is in production. This can be simple A/B testing, or it can contain multiple variants so the variant which has the best impact can be selected. An example is experimenting with different styles of a sign-up button to see the effect on conversions and then using the most successful style in a general rollout.

Progressive delivery vs. traditional delivery

By embracing phased rollouts, feature flagging and experimentation, progressive delivery supports faster releases and better app quality. When it comes to speed, with the traditional approach, most app updates are broad in scope and can include several significant new features. As a result, these updates take longer and materialize less frequently — perhaps once every 2-3 months. With progressive delivery, each app update is narrower in focus and includes fewer significant new features. This means that updates come quicker and can be pushed to users every few days. Rather than having to wait months for a new version of an application, users can get a fresh feature every few weeks.

Progressive delivery also ensures better app quality and stability. In traditional app delivery, testing and quality assurance are done during the pre-production phase. The assumption is that any serious coding errors will be caught before that new version is released to the general public. But as noted above, it’s impossible to detect all bugs before an app is released, as some bugs will only become visible once they start affecting real users. When a new release is made available to everyone at the same time, these errors can impact the entire customer base. Engineers then have to scramble to identify and correct those bugs, but the damage to the user experience has already been done. 

Progressive delivery fundamentally extends the processes of testing, finding errors and fixing bugs to the production phase without subjecting most customers to those bugs. Since new releases and features are first made available to only certain users, then gradually expanded to more users, engineers can detect any problems early on, then fix them before rolling out the new release or feature to all users.

Of course, bugs aren’t the only thing that impacts app quality. A new feature could work correctly, but maybe it doesn’t optimize the app experience. For example, a revamped sign-up button might not drive as many users to register for an app as the old sign-up button. Using experimentation, progressive delivery allows engineers to test how different feature variants perform with actual users so they can choose the best option before rolling it out to everyone.

Balancing faster releases and app quality

App and error monitoring tools are useful for supporting progressive delivery. These tools include data-rich dashboards that allow engineers to catch bugs and view how new features are performing during phased rollouts, while also helping manage feature flagging and experimentation efforts.

With accelerating digital transformation, applications have become more important than ever. Post-COVID, customers increasingly consume products and services (both B2B and B2C) through web and mobile apps. And with this growing reliance on apps comes growing expectations: Users today expect faster app releases, complete with more new features, without having to sacrifice app quality or stability. Organizations must adopt progressive delivery to accommodate customers in this new landscape.

BugSnag helps you prioritize and fix software bugs while improving your application stability
Request a demo