In the fierce competition to earn user’s screen time, the winners in mobile app development ship new functionality constantly to optimize growth, engagement, and UX. We recently created an ebook on this topic and share some of the insights and best practices here. Feature flagging and experimentation are foundational to building apps that keep users coming back again and again and again. These product development practices will help you roll back bugs, remotely configure features in real-time, and use statistically significant data to discover and deliver the most meaningful experiences to your users.
Roll back poor-performing features without an app store release
Feature flags, also known as kill switches or toggles, allow you to turn functionality on and off without deploying new code or shipping a new app version. When you have a kill switch to mitigate the risk of launching a problematic feature, you can integrate code into your app more frequently, and release more confidently.
Feature flags work by building conditional logic into code, allowing you to control the functionality for specific users or groups, or turn it on and off for the entire user base. To execute code that is behind a flag, turn it “on”. To suppress the code, set the flag to “off”.
When a feature is flagged, it can be disabled in real-time from the Optimizely dashboard without submitting an update to the app store. Toggling features on and off is the most basic use case, there are many scenarios when you will want to define access to the functionality more granularly.
Gradually roll out and segment feature access
New features don’t always lead to their desired outcomes. You can limit the blast radius by rolling out incrementally to a percentage of your entire population, or you can target a specific percentage of your entire population, or you can target specific audiences. This is available for free with Rollouts. Enabling features for a beta audience or premium subscribers gives those users exclusive access to the feature. Target any group based on attributes like location, app version, or device type, to name a few. Once it’s clear that the feature performs favorably or not, you can decide how to best ramp up access to more users.
Remotely configure every feature in your app
Have you ever wanted to change how something worked in your app outside of app store update cycles? Feature variables make it possible to iterate on your feature without redeploying the code. The screenshot below shows how to configure a feature with variables remotely from the Optimizely dashboard.
This allows you to dynamically update the live version of your app by modifying the variable values for enabled features in real-time. No rebuilding, redeploying or resubmitting to the app store required.
Deliver better apps with experimentation
Once you have feature variables set up, a natural next step is configuring them to test in experiments to determine the optimal way the feature should behave. For example, if you are working on optimizing a user onboarding feature, you could use a variable to test the number of tutorial steps to see the impact of showing the user 3 tutorial screens versus 4 when they open the app for the first time. Or test the content, format, or times to allow the user to opt-out of the tutorial. Anything in your app can be flagged, tested, and optimized. See the example below for how 2 onboarding variations can be created by entering different variable values in a feature test.
While some experiments evaluate the nuanced parts of a feature, others can measure the impact of enabling the functionality by simply testing the “on” versus “off” state.
For example, you could determine if a new default sorting algorithm drives your critical metrics by testing it against the original version. In this scenario, you could create an experiment to allocate a percentage of traffic to the new experience and set a goal to see how new functionality performs. If the results show that the new algorithm didn’t improve your success metric, you can then use feature variables to test nuanced approaches. You could experiment with variations of the algorithm that assign different weights to recency, popularity, or price.
The screenshot below depicts what our algorithm experiment results could look like. The statistically significant data shows that the new algorithm sorts by price, it leads to more users adding products to their carts and completing purchases.
To sum it up, feature flagging helps overcome challenges in mobile app development by enabling:
- Safer, more dynamic releases with feature gradual rollouts and rollbacks
- Real-time updates with remote configuration
- Higher performing features informed by statistically significant experiment data
Looking for more information on mobile app development practices and experiment ideas? Check out the guide for future-proofing your mobile app.