Remote config
Table of Contents
What is remote config?
Remote config (short for "remote configuration") is a cloud-based service that allows developers to dynamically modify the behavior and appearance of mobile applications without requiring users to download and install app updates. It enables real-time changes to app functionality, user interface, and feature availability through server-side configuration.
You can change 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 real-time 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.
Remote config use cases
There are a number of common use cases for remote configuration in the app development processes:
-
Rollbacks
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. -
Feature rollouts
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. -
A/B testing
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.
Remote config examples
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.
Here a few more remote config examples.
E-commerce app
- Dynamically update product prices and availability
- Toggle seasonal promotions and sales
- Adjust UI elements for different user segments
News app
- Control the visibility of different news categories
- Adjust content refresh rates based on user engagement
- Enable/disable comments or social sharing features
Fitness tracking app
- Modify workout plans based on user progress
- Adjust goal-setting algorithms
- Toggle new health-tracking features
Social Media App
- Roll out new reaction types to specific user groups
- Adjust content moderation algorithms
- Control the visibility of experimental features like audio rooms or short-form video
How to implement remote config
Four steps:
- Set up a remote config server or choose a third-party service
- Implement client-side logic to fetch and apply remote configurations
- Develop a strategy for handling configuration updates and fallback mechanisms
- Implement security measures to protect your remote config system
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 that 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.
Remote config vs. feature flags
While remote config and feature flags are closely related concepts, they have some key differences:
- Scope: Remote config is broader, allowing for changes to various app parameters, while feature flags typically focus on enabling/disabling specific features.
- Granularity: Remote config often allows for more fine-grained control over app behavior, while feature flags are usually binary (on/off).
- Use cases: Remote config is often used for A/B testing and gradual rollouts, while feature flags are commonly used for canary releases and separating deployment from release.
Limitations and considerations
When implementing remote config, consider the following potential challenges:
- Increased complexity in app architecture
- Potential performance impacts due to frequent config fetches
- Privacy and data usage concerns related to user segmentation
- Risk of overreliance on remote configurations, potentially complicating app maintenance
Free remote config tools
As mobile app development continues to evolve, remote config will likely play an increasingly important role in creating flexible, responsive, and user-centric applications.
If you are looking to get started with remote configuration, Optimizely offers a free remote config solution called Optimizely free feature flagging. Optimizely Rollouts provides free feature flagging and A/B testing capability, so you can start taking advantage of the power of remote config in your app development process.
Optimizely Rollouts works for the most popular mobile-development languages and SDKs including Swift, Java, JavaScript and Objective-C.