Security

    Firebase Remote Config security: what to know

    A 2026 view of Firebase Remote Config delivering non-sensitive feature flags to a client, with secrets kept out and entitlements enforced server-side

    Firebase Remote Config is a convenient way to change your app's behavior without shipping an update, and that convenience invites two security mistakes: treating it as a place to store secrets, and trusting its values to make security decisions on the client. Remote Config values are delivered to the device and can be read, so they are not secret, and a client that fetches them can be manipulated, so they cannot be the authority for anything that matters. There is also an App Store angle around changing behavior after review. Here is how to use Remote Config without those traps.

    Short answer

    Firebase Remote Config lets you change your app's behavior and appearance without an app update by fetching configuration values from Firebase. Per Firebase's documentation, the security points are that you must not store secrets in Remote Config, because the values are delivered to the client and can be read, and you must not rely on it to enforce security-critical decisions on the client, since a client can be manipulated. Use it for non-sensitive configuration and feature flags within your app's reviewed functionality, enforce real decisions like entitlements server-side, and set safe defaults. Treat Remote Config values as public, client-side inputs, not as a secret store or a security boundary.

    What you should know

    • Remote Config values are not secret: they are delivered to and readable on the client.
    • Do not store secrets in it: keys and credentials do not belong there.
    • Do not enforce security on the client: a client can be manipulated.
    • Use safe defaults: the app should behave safely if a fetch fails.
    • Keep changes within reviewed functionality: avoid hiding features from review.

    What is Firebase Remote Config?

    It is a service for changing your app's behavior and appearance without releasing a new build. You define parameter values in the Firebase console, your app fetches them, and your code uses them to adjust things like UI, feature flags, or tuning values, with in-app defaults used until a fetch succeeds. This is genuinely useful for rolling out changes gradually, running experiments, or adjusting configuration without an update. The security implications come from how it works: the values travel to the device and are applied by client code, so they are visible to anyone inspecting the app or its traffic, and the client deciding based on them is, like any client, something an attacker can tamper with. So Remote Config is a configuration delivery mechanism, not a secure channel or a trusted authority, and using it as either is the mistake.

    What should you not put in Remote Config?

    Anything secret or security-critical. The table clarifies.

    UseAppropriate?
    API keys, credentials, or secretsNo; values are readable on the client
    Non-sensitive feature flags and UI configYes; within your reviewed functionality
    Client-side entitlement or paywall enforcementNo; enforce entitlements server-side
    Tuning values and gradual rolloutsYes; with safe defaults
    Hidden features revealed after reviewNo; that violates Guideline 2.3.1

    The two things to keep out are secrets, since the values are delivered to the client and can be read, and security decisions, since a manipulated client can ignore or change a config value. A feature flag that, for example, decides whether a paywall applies must be backed by server-side enforcement, because a tampered client could simply flip it. Remote Config can toggle the UI, but the entitlement check has to live on your server.

    How do you use it securely?

    For non-sensitive configuration, with server-side enforcement and safe defaults. Use Remote Config for things that are fine to be public and client-side: UI variations, non-sensitive feature flags, rollout percentages, and tuning. Never put secrets in it, and never let a Remote Config value be the sole gate on something security-critical like access to paid features or sensitive data, enforce those on your backend, where the client cannot override them, and use the config only to reflect the result in the UI. Set safe default values so that if a fetch fails or is blocked, the app behaves correctly and securely rather than defaulting to an open state. And keep changes within the functionality your app was reviewed for, since using Remote Config to reveal undisclosed features after approval is the hidden-feature behavior Guideline 2.3.1 prohibits. Used this way, Remote Config is a useful configuration tool that does not become a security or compliance liability.

    What to watch out for

    The first trap is storing a secret in Remote Config, which is readable on the client; keep secrets out. The second is gating entitlements or sensitive access on a Remote Config value the client could tamper with; enforce those server-side. The third is using Remote Config to flip the app into undisclosed behavior after review, which violates Guideline 2.3.1. A pre-submission scan such as PTKD.com (https://ptkd.com) reads your app against OWASP MASVS and surfaces hardcoded secrets and how the app handles data, which complements keeping secrets out of Remote Config and enforcing decisions server-side. The configuration design is yours to set in Firebase and your backend.

    What to take away

    • Firebase Remote Config changes app behavior without an update, but its values are delivered to the client and are not secret.
    • Do not store secrets in it, and do not let it be the authority for security-critical decisions, since a client can be manipulated.
    • Use it for non-sensitive configuration and feature flags within reviewed functionality, enforce entitlements server-side, and set safe defaults.
    • Avoid using it to reveal hidden features after review (Guideline 2.3.1), and use a pre-submission scan such as PTKD.com to confirm no secrets are exposed.
    • #firebase
    • #remote-config
    • #feature-flags
    • #guideline-2-3-1
    • #owasp-masvs
    • #app-security
    • #mobile

    Frequently asked questions

    Can I store secrets in Firebase Remote Config?
    No. Remote Config values are delivered to the device and applied by client code, so they are visible to anyone inspecting the app or its traffic, which means they are not secret. Storing an API key, credential, or other secret in Remote Config exposes it. Keep secrets on your backend, and use Remote Config only for values that are fine to be public and client-side, like non-sensitive feature flags, UI variations, and tuning.
    Can I use Remote Config to gate paid features?
    Only to reflect the result in the UI, not to enforce it. A Remote Config value is applied by the client, which an attacker can manipulate, so a flag that decides whether a paywall applies could simply be flipped on a tampered client. Enforce entitlements and access to paid features or sensitive data on your server, where the client cannot override them, and let Remote Config toggle the presentation. The security decision must live server-side, not in a client-fetched config value.
    Is using Remote Config an App Store problem?
    Not for legitimate, disclosed configuration, but it is if you use it to hide features. Using Remote Config to change non-sensitive configuration within the functionality your app was reviewed for is fine. Using it to reveal undisclosed features or a different purpose after approval is the hidden-feature behavior Guideline 2.3.1 prohibits, which can lead to removal. So keep Remote Config changes within what review saw, rather than using it to flip the app into behavior it never evaluated.
    What are safe defaults in Remote Config?
    In-app default values your code uses until a fetch succeeds, chosen so the app behaves correctly and securely if a fetch fails or is blocked. The risk is defaulting to an open or permissive state, for example treating a missing config as feature-enabled, which a client could exploit by blocking the fetch. Set defaults that fail safe, so the absence of fetched config does not weaken the app, and back any security-relevant behavior with server-side enforcement regardless.
    How does Remote Config relate to app security scanning?
    Remote Config configuration is set in Firebase and your backend, so it is not something a binary scan directly evaluates, but the related risks are. A pre-submission scan such as PTKD.com reads your app against OWASP MASVS and surfaces hardcoded secrets and how the app handles data, which complements keeping secrets out of Remote Config and enforcing decisions server-side. The scan confirms your binary is clean; the Remote Config design is your responsibility to keep secret-free and non-authoritative.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free