Soft Launches Using Feature Flags

Getting granular, real-time control over your feature releases

Let’s imagine your team wants to launch a new one-click checkout feature. You’ve been working on it for months: designing, iterating, and developing. Now, you’re ready to release it into the wild.

In the old days, we would just release the new feature via a code deployment. It would be live for everyone. If something crashed, we would need to do a code deployment to roll back the changes. Since everything would be live all at once, every customer would feel the pain. Even if the feature didn’t break, it would take days or weeks to truly measure customer satisfaction. Was the new feature increasing sales? Are people enjoying it? Is it hurting engagement?

With feature flags, you can practice intelligent soft launches. A feature flag is a way to control the progression of a feature throughout its lifecycle, from design and development to release and rollback. It also allows you to granularly target segments of your users for beta tests and incremental percentage rollouts.

Soft launching with a feature flag

Let’s use our one-click checkout feature from above as an example. The goal of this new feature is to make it easier for our customers to purchase an item by removing the friction of multiple checkout steps. However, we cannot truly know how our customers will enjoy this feature until they have tried it.

Here are some of our release uncertainties that cannot just be tested in a staging environment:

Can will it handle a production-level load?

How will it impact support costs?

Does it work well on all versions of all browsers?

What edge cases will create stability, security, and performance issues?

Will customers actually like it?

Of course, we will have tested this feature on our development environments and performed a closed beta. But, these modes of testing cannot simulate our fully-scaled production environment that encompasses a whole range of users, from our early adopters to our laggards.

So, what we’ll do is wrap our one-click checkout in a flag:

Basically, we can pass a series of user attributes to a flag, like “name, email, age, group, beta”, and then the flag’s targeting rules determine whether the feature is on or off for that user.

Here, we have rolled out our one-click checkout feature to 20% of users, while 80% still receive the old checkout:

Using a slider, we can easily control a feature’s release in real-time without having to redeploy. The percentage can be increased or decreased depending on the feature’s performance.

Soft launching best practices

For an introduction to the benefits of soft launches, Mobilize provides a nice overview using the example of a mobile game launch. You should also reference this guide to feature flagging best practices to learn how to incorporate feature flagging into your soft launch.

As a designer who can code, Justin can empathize with a developer's workflow and design intuitive interfaces to address extremely complex functionality. He has built dozens of user interfaces for high-traffic applications — winning the Best of California IT Design award in 2012. He frequently contributes feature flag management and design theory articles to DZone, Tech.co, and DesignerHub. He holds degrees from UC Davis and USC, and is finishing an MS in Information Design at Northwestern. When he's not making developer's lives easier, he enjoys tennis, computer games, and writing.