Remote Config switches
Halloween is coming
To change a phone game, we usually build a new version and send it to Google Play and the App Store. People at the store check it first. That is called store review, and it can take a day or more.
Then every player has to download the update. That is far too slow for an event that starts this week.
Remote Config: settings in the cloud
Firebase Remote Config keeps a list of values in the cloud. Every so often, the game checks in with Firebase and asks: "what are the latest settings?"
halloween_event = onenemy_speed = 2.5
Some values are on/off switches. Others are numbers or words. We change them on the Firebase website, and players get them the next time their game checks in.
Quick check
When does Garden Defense pick up new Remote Config values?
- The next time the game checks in with Firebase for the latest settings
- Only when the player downloads an update from the store
- Only when the player restarts their phone
Show the answer
The next time the game checks in with Firebase for the latest settings
The game asks Firebase for its settings from time to time, often when it starts. No store update is needed, because the values live in the cloud, not inside the app.
Switches, not new code
Here's the important detail. Remote Config changes values, not code. It can only turn on things that are already built into the game.
So we build the pumpkin art and the Halloween code in September, ship it in a normal update with the switch set to off, and then flip it to on when it's time.
Bolt says: Store rules don't allow sneaking new features in from the internet. Remote Config is made for settings, and that's how we use it.
Flip the switch
1// inside version 1.1, shipped in September2const defaults = {3 halloween_event: false,4 halloween_reward: 'none',5 enemy_speed: 2.0,6};
It's time to switch on the Halloween event. Which values should Remy set in Remote Config?
- halloween_event: true and halloween_reward: 'pumpkin_hat', with enemy_speed left at 2.0
- halloween_event: true, plus a new ghost_boss value for a boss that isn't in the code yet
- Leave every value alone and send a brand new update to the stores instead
Show the answer
halloween_event: true and halloween_reward: 'pumpkin_hat', with enemy_speed left at 2.0
The event code already shipped in 1.1, so flipping the switch and naming the reward starts it. A boss that isn't in the code can't be switched on, and a new update would have to pass store review first.
Try it on a small group first
What if enemy_speed = 2.5 makes the game far too hard? If every player gets it at once, everyone has a bad day.
Remote Config can send a new value to only some players, using a condition like "user in random percentile 10% or lower". We watch how they do. If it goes well, we give it to everyone. If not, we switch it back, and 90% of players never noticed. This is called a rollout.
Quick check
Why do we give a new enemy_speed to only 10% of players first?
- If it's a mistake, only a few players see it before we switch it back
- Because Firebase charges for every player
- So the other 90% can't play that day
Show the answer
If it's a mistake, only a few players see it before we switch it back
A small rollout is a safe test. If the new value causes trouble, we flip it back fast and most players never notice.
Always have safe defaults
What if a player starts the game on a plane, with no internet? The game can't reach Firebase.
So the game keeps its own default values inside it, like the config_defaults.js file you just read. If the cloud can't answer, the game uses those and plays normally.
Bolt says: A missing value should never break the game. Pick defaults that are safe and boring.
Quick check
A player opens Garden Defense with no internet. What should happen?
- The game uses its safe default values and plays normally
- The game shows an error and closes
- The enemies freeze until the internet comes back
Show the answer
The game uses its safe default values and plays normally
Default values are built into the game for exactly this moment. The game still works, it just uses the normal settings.
How fresh are the values?
Asking Firebase all the time would waste battery and data. And since September 2026, fetches past a free 100,000 a day per project cost money. So the game caches the values: it keeps a saved copy. By default, games keep cached settings for up to 12 hours before asking Firebase again. In code, that's the minimumFetchIntervalMillis setting.
Firebase also offers real-time Remote Config, which can push changes to a running game faster. Even so, we flip event switches a day early, and store the start time as a value so the game waits for the right moment.
Bolt says: Next: seasonal events, and what actually happens when the switch flips.
Fact-checked 9 October 2026
- Firebase Remote Config: get started on the web firebase.google.com
- Firebase Remote Config pricing firebase.google.com
- Remote Config parameters and conditions firebase.google.com
- Real-time Remote Config firebase.google.com
- App Store Review Guidelines developer.apple.com
- Apple: App Review developer.apple.com