Feature rollout with Firebase remote config

Rolling out a new feature can be daunting. Even after thorough testing, there can be device specific or OS version specific bugs that you missed. If it also includes backend component, it may overload our servers and cause outages.

At Taskito, we built the cloud sync feature where people can create account and sync their tasks & projects. This also enabled them to have their data synced on multiple android devices in real time.

This was a big feature and things could go wrong. Few things did go wrong in beta testing which were fixed and prepared for Google Play release. We did not give everyone the access in order to test server loads, find bugs.

🕹️  We need a way to gradually rollout this feature and if possible, halt its rollout.

Firebase offers a solution for this.

Firebase Remote Config

Firebase remote config is a service that lets us change app behavior & UI from backend without pushing an app update on Play Store. This is a primitive definition and in most of the cases, an update is required to integrate these features.

Once all configurations (if/else conditions) are pushed via an update, we can use remote config parameter as a switch to enable/disable the feature as required.

How it works

  1. Create unique parameter in Firebase console.

  2. Add default value (value that signifies the feature is in base).

  3. Based on your requirements, you can create one or more conditions and assign values to it.

  4. Implement business logic based on the received parameter value.

Remote config conditions & values

When we create new parameter, default value is required. Every device will get (eventually) the default value when changes are published.

Once we have implemented business logic for different values of parameters (and released updates), parametric conditional values can be added.

Firebase lets us configure conditions based on various options.

  • App Version

  • App Platform

  • Device Language

  • Country

  • Audience

  • User Property

  • Random Percentiles

You can combine one or more of these options to create a condition that suits your need. For example,

  • User country - India, User Property - Buyer ⇒ Targets Buyers from India

  • Device Language - French, Radom Percentiles < 50 ⇒ Targets Half of users with French language

 🎯 Using these options, we can configure & narrow down our target audience who will get different values for remote config & will see different versions of the app.

Taskito cloud sync rollout with Remote Config

We used following methods for a controlled & gradual rollout of this feature.

  1. Early access

  2. Remote config

Early Access

Sync feature & all its functionality is available since v0.7.8. To limit number of people creating accounts, we added a block screen where the app would ask for a code. It would validate the code with our backend and remove it letting them create accounts.

We asked the users to sign up for early access. We would collect their emails on our SquareSpace website and send a campaign every week with early access code. We got total of 400 registrations from the early access program.

Remote Config

Before releasing the version 0.7.8, we had added a remote config parameter in the app - cloud_sync. Firebase would send the default value as 0 and the app would show the block screen.

Ability to create a new account in Taskito was controlled by Firebase remote config.

Before releasing the version 0.7.8, we had added a remote config parameter in the app - cloud_sync. Firebase would send the default value as 0 and the app would show the block screen.

Another critical bug, another hot-fix. We added one more condition - App Version = 0.7.8-7, Random percentiles ≤ 20. We now had 2 conditions + 1 default value.

Everything was stable. The app was performing well and the servers were working as expected. After 2 days, we increased the random percentiles to 50. More monitoring.

2 More days later, we changed it to 80%. And 2 days later, we removed the random percentiles condition making the feature available to everyone with app version 0.7.8-7.


By using Firebase Remote Config feature, we gradually rolled out the cloud sync features to our users which gave us plenty of time fix any bugs on the app as well as the server.

This service can be used for different purposes as well. It is used for A/B testing feature, showing different banners to different target audience (sending banner content from Firebase), etc.

We have used Firebase Remote Config + A/B testing to increase the conversions and revenue. We will share our story in the coming weeks.

Next
Next

Android TopSheet - Implementation