Remote config (short for "remote configuration") is a software development technique for mobile apps where the behavior or features of an app can be changed remotely without having to publish an app update. This is done by setting default values for various settings in the app, and then fetching the values for those variables in realtime from a remote server.
The concept of remote config was popularized by Firebase (Firebase Remote Config), a mobile app development platform from Google, and has since started to be adopted as a common practice by mobile app developers.
There are a number of common use cases for remote configuration in the app development processes:
Typically when an Android or iOS app is updated, the app needs to go through the App Store review process which can take 24-48 hours, and even longer if the update is rejected. This can be a big issue if bugs or problems are discovered in an update after it is live, and it takes days to get a fix out to app users.
With remote config you can quickly make changes to an app that is already live in the App Store, and rollback features of an app without having to make any changes to the backend code, simply by editing server-side remote config parameters.
Because remote config allows you to control the behavior and appearance of your app remotely, it is a great way to roll out new features to your users in a controlled fashion. Rather than pushing new features to 100% of your users with an app update, you can set conditional values in your app so that only a segment of your users see a feature, and you can roll out new features at your own pace once it has already been approved.
Because you can use remote config to enable and disable features for a subset of your users, it can also be used for A/B testing. With A/B testing, a portion of your users are served a new experience, while a control group is shown the original experience. Then you can use statistical analysis to determine the impact of a new feature and gain confidence that a new feature is actually an improvement over the old experience.
Say you're an app developer creating a mobile game for Android & iOS. The development team wants to add a new chat functionality to the game, but are worried about how it might affect app usage rates. A developer created a working prototype of the functionality during a hackathon, but the team wants to test how it actually behaves in the real world before investing a lot of development effort into it.
This would be a good use case for remote config. The feature could be added to the app, and configured in a way that it only shows to 10% of your user base. The other 90% of users are shown the original experience, leading to an A/B test where you can gauge the impact of the new feature on your core app metrics. If any bugs or issues are discovered, the feature can easily be disabled remotely without having to go through the lengthy App Store review process.
You could also use different remote configuration parameters to remotely control and test out different functionality of the chat, such as message length, chat box size, content filters, etc.
An easy method for implementing remote configuration is through the use of feature flags and feature variables. A feature flag (also known as a feature toggle) is a conditional flag that can be set to on or off, which can be configured remotely via API or through a GUI in a feature management platform such as Optimizely Rollouts.
New features and functionality can be wrapped in feature flagging code, and can easily be remotely enabled or disabled. Feature flags can also be conditionally toggled based on the user profile, so flags can be enabled for a specific subset of your user base.
Feature variables are containers which can store different values which can be set dynamically by querying a config file stored on a cloud service via the REST API. These remote values can be configured to change the behavior or appearance of your app dynamically without having to publish changes to an App store.
Get started with remote config today with Optimizely Rollouts!