The trap of dashboard-only feature flags

🧨 “The hidden risk in your feature flags no one talks about (until Friday deploy breaks)”

In many teams, every line of code goes through Git. Every change gets a pull request. CI runs, tests pass, and approvals are logged.

Except… feature flags.

They often live in a dashboard you can toggle at any time. Sounds convenient — until someone flips a flag at 5 p.m. on Friday, and it silently drifts out of sync with your codebase.

Suddenly, your Git log says one thing, but production does another. There’s no PR. No history. No reviewer. Just two diverging sources of truth — and zero way to trace what actually changed.

If your team is Git-first, but your feature flags aren’t, this mismatch creates real risk:

Flags silently enabled or disabled outside code review

CI/CD pipelines bypassed

Rollouts that don’t show up in the Git history

Drift between staging and prod nobody notices until it’s too late

That’s how teams get burned.

✅ The fix: treat flags like code You can manage your feature flags declaratively in Git

Define them in YAML or JSON

Use CI to sync them to your flag provider’s API (e.g. LaunchDarkly, Split)

Keep the dashboard read-only in production

So then you create a PR everything — even toggling the feature flags from false to true. And remember to lock down the possibility to modify and create feature flags from the UI, except maybe for dev environements

With this setup, flags are no longer invisible landmines. They’re versioned. Audited. Reviewable. Part of your real workflow — not a side channel.

Even if you still use a vendor like LaunchDarkly, this gives you one source of truth again — and way fewer “WTF just happened in prod?” moments.


Get more tips in my almost monthly newsletter about Rescript, React and CSS!