DEV Community

Cover image for Flutter Firebase Remote Config: Control Your App Without Releasing Again
Codexlancers
Codexlancers

Posted on

Flutter Firebase Remote Config: Control Your App Without Releasing Again

There's a moment every developer hits. You ship an app and then immediately realize :

  • "I should hide this feature"
  • "This API needs to change"
  • "We need a quick banner or message"

But now you're stuck waiting for users to update the app.

That's where Firebase Remote Config quietly becomes one of the most powerful tools in your Flutter toolkit.

Why This Matters More Than You Think

Most apps today aren't build once and forget.

They evolve constantly:

  • Features roll out gradually
  • Experiments need testing
  • Bugs need quick mitigation

Without a remote control system, every small change becomes:
Build → Upload → Review → Wait → Hope users update
That's slow and sometimes risky.

Remote Config flips that completely.

🧠 The Idea

Instead of hardcoding values in your app:

const bool showNewUI = true;
Enter fullscreen mode Exit fullscreen mode

You move that control to the cloud.

Now it becomes:

bool showNewUI = remoteConfig.getBool("show_new_ui");
Enter fullscreen mode Exit fullscreen mode

And suddenly…

  • 👉 You can turn features ON/OFF from Firebase
  • 👉 You can change behavior without redeploying
  • 👉 You can react instantly to real-world issues

Where It Actually Helps in Real Apps

Let's not talk theory - here's where it actually shines:

1. Emergency Fixes

API breaking? Feature crashing?
Just disable it remotely instead of pushing a hotfix build.

2. Feature Flags

Roll out a feature to:

  • 10% users first
  • Then 50%
  • Then everyone

All without touching the code again.

3. Maintenance Mode

Add a config like:

is_app_under_maintenance: true
Enter fullscreen mode Exit fullscreen mode

Your app can instantly switch to a maintenance screen.

4. A/B Testing

Try:

  • Two different home screens
  • Different button colours
  • Different pricing UI

Measure what works best.

Flutter Integration

The setup is simple - but how you structure it matters more.

Step 1: Initialize once

final remoteConfig = FirebaseRemoteConfig.instance;

await remoteConfig.setConfigSettings(
  RemoteConfigSettings(
    fetchTimeout: const Duration(seconds: 10),
    minimumFetchInterval: const Duration(hours: 1),
  ),
);
Enter fullscreen mode Exit fullscreen mode

Step 2: Always define defaults

This is your safety net.

await remoteConfig.setDefaults({
  "show_new_ui": false,
  "is_app_under_maintenance": false,
});
Enter fullscreen mode Exit fullscreen mode

👉 If fetch fails and you don't define defaults → your app can break.

Step 3: Fetch & activate

await remoteConfig.fetchAndActivate();
Enter fullscreen mode Exit fullscreen mode

👉 This does two things:

  • Fetches latest values from Firebase
  • Activates them immediately in the app

Step 4: Use it like normal data

if (remoteConfig.getBool("is_app_under_maintenance")) {
  return const MaintenanceScreen();
}
Enter fullscreen mode Exit fullscreen mode

A Cleaner Way

If you directly access Remote Config everywhere… things get messy fast.

A better approach is to centralize it:

class AppConfig {
  static final _remote = FirebaseRemoteConfig.instance;

  static bool get isMaintenance =>
      _remote.getBool("is_app_under_maintenance");

  static bool get showNewUI =>
      _remote.getBool("show_new_ui");
}
Enter fullscreen mode Exit fullscreen mode

Now your UI stays clean:

if (AppConfig.isMaintenance) {
  return const MaintenanceScreen();
}
Enter fullscreen mode Exit fullscreen mode

⚠️ Things That Will Save You Later

1. Don't treat it like real-time

Remote Config is not instant.

It works on fetch intervals - so don't use it for:

  • Live chat
  • Real-time counters

2. Be careful with fetch frequency

During development: minimumFetchInterval: Duration.zero

In production:
minimumFetchInterval: Duration(hours: 12)

Otherwise, Firebase will throttle your requests.

3. Never store sensitive data

This is not for:

  • API keys
  • Secrets
  • Tokens

Everything here can be exposed.

4. Defaults are not optional

If fetch fails and you didn't define defaults → your app can break.

🧠 When You Should Actually Use It

Use Remote Config when:

  • You want flexibility after release
  • You run experiments
  • You need quick toggles for features
  • You want safer rollouts

Avoid it when:

  • You need real-time updates
  • You're storing secure data
  • You're passing large payloads

💡 Final Take

If you're already using Firebase and not using Remote Config You're honestly missing out on one of the easiest wins in Flutter development.

Start small:

  • Add one flag
  • Control one UI change

And once you see it working You won't want to go back.

Top comments (0)