Since 1 September 2026, Firebase Remote Config on the Blaze plan charges for fetch requests beyond a no-cost daily tier of 100,000. Usage between 100,001 and 10,000,000 fetches a day costs $0.06 per 10,000 requests, dropping to $0.01 per 10,000 above that. For most apps this is a rounding error. For apps that fetch Remote Config aggressively — on every screen transition, every app-foreground event, or every few seconds inside a polling loop for a “live” feature flag — it’s a cost line that didn’t exist last month and now scales directly with DAU and session frequency.
The pattern that catches teams out is one that was previously free to be sloppy about: fetching config far more often than the values actually change. A flag checked on every cold start is reasonable. A flag polled every 30 seconds “just in case,” multiplied across a userbase in the millions, was invisible under the old free model and is now a specific, growing number on your Cloud Billing invoice. Because the fetch call itself is cheap to write and easy to forget about, most teams don’t know their actual fetch-per-session rate until they go looking — usually because a bill did the looking for them.
Data Points to Track
remote_config_fetch_countper session, segmented by app version, so you can see which release introduced a new or more frequent fetch pattern.fetch_trigger— cold start, foreground resume, screen navigation, or a timed/polling interval — logged at the call site so you can attribute volume to a specific code path, not just a total.daily_fetch_totalrolled up against the 100,000-request no-cost threshold, per project, tracked as a dashboard metric rather than discovered in the billing console.config_value_change_rate— how often a fetched value actually differs from the previous fetch — to quantify how much of your fetch volume is functionally wasted.cache_ttl_settingin force on each client, since Remote Config’s minimum fetch interval setting directly controls how often billable fetches can occur.
Setup Steps
- Instrument a
remote_config_fetch_countevent alongside your existing analytics so fetch volume shows up next to DAU and session count, not buried in a separate billing dashboard. - Audit every call site that invokes
fetchAndActivate(or equivalent) and tag each with afetch_triggerso polling loops are visible and attributable. - Set or raise the minimum fetch interval on any client that’s currently fetching more often than the underlying flags realistically change.
- Compare
daily_fetch_totalagainst the 100,000-request no-cost tier this week to establish whether you’re already paying, and by how much. - Add a billing alert tied to Remote Config usage specifically, separate from your general Firebase budget alert, so a regression in fetch frequency surfaces before the monthly invoice does.
Actionable Insights
A high remote_config_fetch_count with a low config_value_change_rate is the clearest signal that you’re paying for freshness you don’t need — that combination means clients are re-fetching values that haven’t moved, and raising the cache TTL costs you nothing in flag responsiveness. Conversely, if fetch volume is concentrated on cold start and foreground resume, that’s healthy, expected usage and not worth optimising away. Use the per-trigger breakdown to separate the two before making any changes, since cutting fetch frequency indiscriminately risks stale flags on the one path — a kill-switch, a live pricing change — where you actually need the config to update fast.
Related Resources
Need help tracking this in your app?
Our team sets up analytics pipelines for mobile and web teams every day. Talk to us and get your first events flowing in under an hour.
Talk to an expert