Firebase Remote Config: o que é, parâmetros e como gerenciar remotamente

Autor: IT Sectr Publicado: 2026-04-28 Tempo de leitura: 15 min

Firebase Remote Config é um serviço de nuvem para gerenciar parâmetros de aplicativos móveis, permitindo alterar seu comportamento, aparência e conteúdo sem publicar uma nova versão na loja de aplicativos. Ao contrário da abordagem tradicional com ciclos de lançamento, o Remote Config permite modificar qualquer parâmetro configurável em tempo real através do console do Firebase ou da API REST. De acordo com Google Firebase (2026), o serviço é usado em 65% dos aplicativos na plataforma Firebase para testes A/B, personalização e gerenciamento operacional de recursos no lado do cliente.

Principais pontos

  • Remote Config é um serviço de gerenciamento remoto de parâmetros do aplicativo através do console em nuvem do Firebase.
  • Alterações entram em vigor sem atualizar o aplicativo na loja — basta uma reinicialização ou sincronização por intervalo.
  • Personalização permite definir diferentes valores de parâmetros para diferentes grupos de usuários ou condições.
  • Testes A/B estão integrados no Remote Config: você pode comparar o comportamento de grupos com diferentes valores de parâmetros.
  • Cache no cliente reduz a carga do servidor: os dados são armazenados localmente por até 12 horas por padrão.

O que é Firebase Remote Config e como funciona

Firebase Remote Config é um serviço que armazena pares chave-valor no lado do servidor do Firebase e os entrega a dispositivos cliente sob demanda ou conforme agendamento. Cada parâmetro tem um nome (string), um valor (string, número, booleano ou JSON) e pode ser vinculado a condições — regras que determinam qual valor um usuário específico recebe. As condições podem verificar a versão do aplicativo, idioma do dispositivo, região, porcentagem aleatória e muitos outros atributos.

A arquitetura do Remote Config é baseada em um modelo push-pull com prioridade pull. O cliente solicita periodicamente valores atualizados do servidor (por padrão a cada 12 horas). No entanto, o desenvolvedor pode iniciar uma sincronização imediata no código ou através do console do Firebase (botão “Publish changes”). Após publicar as alterações, o servidor envia uma notificação push via Firebase Cloud Messaging, e o aplicativo, ao recebê-la, pode solicitar novamente os parâmetros.

O nível gratuito do Firebase Remote Config não tem limites no número de parâmetros ou solicitações, o que o diferencia de outros serviços do Firebase. A única limitação é que o tamanho da resposta não deve exceder 800 KB (total para todos os parâmetros). Isso é mais que suficiente para um cenário típico: a maioria dos projetos usa 10 a 50 parâmetros, e seu volume total raramente excede 100 KB.

Como o Remote Config determina qual valor atribuir a um usuário

O mecanismo de seleção de valor é baseado na prioridade das condições. Cada condição representa uma regra (por exemplo, “versão do iOS > 15.0”). O Remote Config verifica as condições em ordem de prioridade e retorna o valor da primeira condição correspondente. Se nenhuma condição corresponder, o valor padrão é usado. Este mecanismo permite criar uma hierarquia de regras: da mais específica à mais geral.

Importante: a ordem das condições no console do Firebase é importante. Se duas condições podem corresponder a um mesmo usuário simultaneamente, a que estiver mais acima na lista vence. Recomenda-se colocar condições mais específicas (por exemplo, para uma versão específica do aplicativo) acima das gerais (por exemplo, “Todos os usuários iOS”). Uma ordem incorreta pode fazer com que uma alteração direcionada nunca seja aplicada.

Cache e tempo de vida dos parâmetros

Por padrão, o Remote Config armazena em cache os valores recebidos do servidor por 12 horas. Isso significa que após publicar alterações no console, o aplicativo as verá não antes de 12 horas (ou após a próxima chamada explícita de fetch). O tempo mínimo de cache pode ser definido via FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 3600) — para produção, recomenda-se pelo menos 1 hora para evitar solicitações excessivas ao servidor e consumo de dados do usuário.

Para testar alterações durante o desenvolvimento, use um intervalo mínimo de 0 segundos: FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 0). Neste modo, cada chamada fetch carregará os valores atualizados do servidor. É importante não esquecer de reverter para o intervalo de produção antes do lançamento; caso contrário, cada inicialização do aplicativo contactará o servidor, aumentando custos e consumo de bateria.

Parâmetros, condições e grupos de usuários

Um parâmetro do Remote Config é uma variável nomeada que pode assumir um de vários valores dependendo das condições. Tipos de valor: string, number (double), booleano, objeto JSON (string serializada). Parâmetros JSON são convenientes para transmitir dados estruturados sem criar muitos parâmetros separados: por exemplo, um objeto com configurações de tema do aplicativo (primaryColor, backgroundColor, fontSize).

Condições são regras lógicas que verificam atributos do usuário ou dispositivo: versão do SO (iOS, Android), versão do aplicativo, país, idioma, audiência do usuário (propriedade definida no código), porcentagem aleatória (para testes A/B). As condições podem ser combinadas através de AND lógico: por exemplo, “versão do aplicativo >= 5.0” AND “país = Rússia”. Cada parâmetro pode ter um número ilimitado de condições, mas na prática são usadas 2 a 5.

Para personalização, use propriedades de usuário (user properties) — atributos definidos no código do aplicativo através do Firebase Analytics. Por exemplo, analytics.setUserProperty(“subscription_tier”, “premium”). O Remote Config pode verificar esta propriedade e entregar valores específicos para usuários premium. A personalização através do Remote Config não requer criar condições no lado do cliente — toda a lógica está concentrada no console em nuvem.

Tipo de condiçãoExemploCenário
Versão do SOiOS >= 16.0Ativar um novo recurso apenas para novas versões do iOS
Versão do appapp_version >= 3.2Mostrar banner de atualização para versões antigas
Paíscountry == “JP”Localizar conteúdo para o Japão
Porcentagem aleatória10% dos usuáriosTeste A/B para 10% da audiência
Propriedade do usuáriotier == “premium”Ativar recursos premium

Grupos de usuários e segmentação

Remote Config suporta dois modelos de segmentação: baseado em atributos (condições) e baseado em propriedades do Firebase Analytics (propriedades do usuário). O primeiro modelo é estático: uma condição verifica um atributo fixo que não muda dentro de uma sessão ou versão do aplicativo. O segundo modelo é dinâmico: uma propriedade pode ser definida a qualquer momento durante a execução do aplicativo, permitindo segmentação flexível de usuários em tempo de execução.

Importante: para usar propriedades de usuário no Remote Config, o Firebase Analytics deve estar integrado. Este requisito se deve ao fato de que o Remote Config recebe dados do usuário do SDK do Analytics. Sem o Analytics, o Remote Config funciona apenas com atributos do dispositivo (versão do SO, versão do aplicativo, país do IP). A personalização baseada no comportamento do usuário (por exemplo, “fez 5 compras”) está disponível apenas através do Analytics.

Versionamento de template

O template do Remote Config é o conjunto completo de todos os parâmetros, condições e seus valores. O Firebase armazena o histórico de alterações do template e permite reverter para qualquer versão anterior dentro de 90 dias. O versionamento é criticamente importante: se após publicar alterações for encontrado um erro (por exemplo, um valor de parâmetro incorreto quebra a interface), você pode reverter imediatamente o template para uma versão funcional anterior através do console do Firebase.

Cada alteração de template (publicação) cria uma nova versão com um número único. O console do Firebase fornece um registro de alterações com hora, usuário e descrição (se preenchida). Recomenda-se sempre adicionar uma descrição às publicações: “Ativamos novo feed para iOS grupo de teste de 10%”. Sem uma descrição, em um mês será impossível lembrar o que exatamente foi alterado na versão 42.

Como implementar Remote Config em um aplicativo

Implementar o Remote Config consiste em três etapas: inicializar o SDK com configurações (tempo de cache), definir parâmetros padrão (valores caso o servidor esteja indisponível) e a lógica para aplicar os valores obtidos. Os parâmetros padrão são uma rede de segurança caso o dispositivo não consiga se conectar ao Firebase (sem internet, servidor indisponível). Sem valores padrão, o aplicativo usará null, o que pode causar falhas.

A definição de valores padrão é feita de duas formas: programaticamente através de setDefaultsAsync ou através de um arquivo XML. A abordagem programática é conveniente para projetos pequenos: todos os valores são definidos diretamente no código uma vez na inicialização do aplicativo. A abordagem de arquivo é preferível para projetos com dezenas de parâmetros: os valores são armazenados em recursos e podem ser facilmente editados sem recompilação. Recomenda-se combinar: configurações básicas em XML e específicas programaticamente.

Assincronicidade é uma característica chave do SDK do Remote Config. O método fetchAndActivate() faz uma solicitação ao servidor em uma thread em segundo plano sem bloquear a interface do usuário. Após a conclusão do carregamento, ocorre a ativação — os valores dos parâmetros são atualizados na memória do aplicativo. Use listeners ou corrotinas (no Android/Kotlin) para rastrear a conclusão. O usuário não deve ver “pulos” na interface ao atualizar os parâmetros — todas as alterações devem ser aplicadas suavemente.

Inicialização com onComplete e listeners

No primeiro início, o SDK do Remote Config não bloqueia a inicialização do aplicativo. Enquanto a sincronização ocorre, o aplicativo usa valores padrão. Isso significa que o usuário pode ver a versão antiga da interface no primeiro início e, após a conclusão do fetch, a nova. Para parâmetros críticos (por exemplo, serverUrl, do qual a operacionalidade depende), use ativação síncrona com espera de resultado.

Prática recomendada: exibir uma tela de carregamento com atraso mínimo se o aplicativo precisar criticamente obter parâmetros atualizados antes de exibir a primeira tela. Na tela de carregamento, execute fetchAndActivate com um tempo limite de 5 segundos. Se os parâmetros não forem carregados em 5 segundos, o aplicativo inicia com valores padrão. Isso evita espera infinita quando não há internet.

Trabalhando com parâmetros JSON

Parâmetros JSON no Remote Config permitem transmitir dados estruturados como um único valor. Por exemplo, um objeto com estilos de tema: {“primaryColor”: “#6200EE”, “borderRadius”: 8, “fontFamily”: “Roboto”}. No cliente, o JSON é analisado e aplicado à interface. Vantagens: um parâmetro em vez de três, atualização atômica (os três campos são atualizados simultaneamente), console limpo. Desvantagem: dificuldade de leitura no console do Firebase (JSON é exibido como string).

Recomendação: use parâmetros JSON para grupos de valores logicamente relacionados que são atualizados juntos (temas, configuração de tela, configurações de rede). Para parâmetros independentes (feature toggle, serverUrl), use parâmetros string ou booleanos separados — são mais fáceis de ler no console e mais fáceis de rastrear alterações no histórico de versões do template.

Testes A/B com Remote Config

Testes A/B são um recurso integrado do Firebase Remote Config que permite dividir usuários em grupos, definir diferentes valores de parâmetros para cada grupo e medir o impacto das alterações nas métricas selecionadas. Ao contrário da divisão manual através de condições com random_percent, a integração com Firebase Analytics coleta automaticamente estatísticas para cada grupo experimental e mostra a significância estatística das diferenças.

O processo do teste A/B: o desenvolvedor cria um experimento no console do Firebase (seção A/B Testing), seleciona um parâmetro do Remote Config, define valores para os grupos de controle e teste e define a métrica alvo (por exemplo, taxa de conversão ou receita). O Firebase distribui automaticamente os usuários em grupos, coleta dados e após 2 a 4 semanas mostra o resultado com valor p. O experimento pode ser interrompido antes se o resultado for conclusivo.

Significância estatística é o critério chave para interromper um experimento. O Firebase A/B Testing usa a abordagem Frequentista e mostra o valor p para cada métrica. O limite de significância padrão é 0.05 (probabilidade de confiança de 95%). Quando este limite é atingido a favor de um dos grupos, o Firebase recomenda interromper o experimento e aplicar as alterações a todos os usuários. Se a significância não for alcançada após 4 semanas, o experimento é considerado inconclusivo.

Tipos de experimentos

Firebase A/B Testing suporta dois tipos de experimentos: A/B clássico (comparação de dois valores de um parâmetro) e A/B/n multivariado (comparação de três ou mais valores). Testes multivariados requerem mais usuários para alcançar significância estatística. Recomenda-se usar A/B/n apenas para parâmetros com 3 a 5 variantes, onde cada variante é fundamentalmente diferente das outras.

Duração do experimento depende do volume de tráfego: para aplicativos com 1000 usuários ativos diários, a duração mínima é de 2 semanas; para aplicativos com 100.000 usuários, de 3 a 5 dias. O Firebase calcula automaticamente o tempo necessário e avisa se o tráfego atual é insuficiente para detectar diferenças significativas. Importante: não pare o experimento antes do tempo estimado, mesmo que o resultado pareça óbvio — este é o erro clássico de “peeking”.

Métricas para testes A/B

Métricas alvo no Firebase A/B Testing são definidas com base em eventos do Firebase Analytics. Métricas padrão estão disponíveis: usuários ativos diários, receita, taxa de conversão, retenção, engajamento do usuário. Você também pode criar uma métrica personalizada baseada em qualquer evento do Analytics com parâmetros adicionais. Por exemplo, a métrica “Porcentagem de usuários que chegaram à tela de pagamento” é criada a partir do evento screen_view com o parâmetro screen_name = “payment”.

Recomenda-se selecionar uma métrica primária na qual a decisão sobre o sucesso do experimento é baseada, e 2 a 3 métricas secundárias para análise adicional. Selecionar várias métricas primárias aumenta o risco de resultados falsos positivos (problema de comparação múltipla). Se a métrica primária selecionada não mostrar uma melhoria estatisticamente significativa, o experimento é considerado malsucedido, mesmo que as métricas secundárias tenham melhorado.

Exemplos de código para Remote Config em Kotlin

Vejamos a integração do Remote Config em um aplicativo Android em Kotlin. Os exemplos incluem inicialização do SDK com tempo de cache personalizado, obtenção de parâmetros de diferentes tipos, implementação de uma condição A/B no lado do cliente e tratamento de erros quando o servidor está indisponível. Todo o código é executado na atividade principal ou na classe Application para que os parâmetros estejam disponíveis desde o início do aplicativo.

Antes de usar, adicione a dependência: implementation(“com.google.firebase:firebase-config”) através do Firebase BOM. Certifique-se de que o Firebase Analytics também esteja conectado, pois o Remote Config usa o Analytics para passar propriedades do usuário.

Inicialização e obtenção de parâmetros

O primeiro exemplo é a configuração básica do Remote Config com intervalo mínimo de fetch de 1 hora para produção. O SDK é inicializado no método onCreate da classe Application. Após fetchAndActivate, o valor do parâmetro welcome_message é verificado, que pode ser alterado remotamente para a tela de boas-vindas.

kotlin
class MainApp : Application() {

    override fun onCreate() {
        super.onCreate()
        val remoteConfig = Firebase.remoteConfig
        val settings = FirebaseRemoteConfigSettings.Builder()
            .setMinimumFetchIntervalInSeconds(3600)
            .build()

        remoteConfig.setConfigSettingsAsync(settings)
        remoteConfig.setDefaultsAsync(
            R.xml.remote_config_defaults
        )

        remoteConfig.fetchAndActivate()
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
                    val welcomeMsg = remoteConfig
                        .getString("welcome_message")
                    Log.d("RemoteConfig", welcomeMsg)
                }
            }
    }
}

No exemplo, setDefaultsAsync carrega valores padrão do arquivo XML res/xml/remote_config_defaults.xml. Se o fetch falhar (sem rede, servidor indisponível), o aplicativo usará esses valores. O arquivo XML contém os mesmos nomes de parâmetros que no console do Firebase: <entry key=“welcome_message”>Bem-vindo!</entry>. Recomenda-se sempre ter valores padrão para todos os parâmetros do Remote Config.

Feature toggle com Remote Config

O segundo exemplo é um feature toggle (flag de recurso). O parâmetro new_checkout_enabled é do tipo booleano. Se true, o aplicativo mostra a nova tela de checkout; se false, a antiga. Feature toggle é o cenário mais popular do Remote Config: a alteração afeta apenas um parâmetro, não requer modificação de lógica e pode ser revertida instantaneamente.

kotlin
fun isFeatureEnabled(paramName: String): Boolean {
    return Firebase.remoteConfig
        .getBoolean(paramName)
}

// Uso na activity
if (isFeatureEnabled("new_checkout_enabled")) {
    navigateToNewCheckout()
} else {
    navigateToLegacyCheckout()
}

A função isFeatureEnabled encapsula o acesso ao Remote Config e pode ser facilmente testada através de mock. Para feature toggles, recomenda-se usar uma convenção de nomenclatura: prefixo feature_, ff_ ou flag_ para que o propósito do parâmetro fique imediatamente claro no console do Firebase. Exemplo: feature_new_onboarding, ff_dark_mode, flag_v3_api. Não use parâmetros de flag para ativar/desativar por mais de 3 meses — o acúmulo de flags mortas complica a manutenção.

Obtendo configuração JSON do tema

O terceiro exemplo é a obtenção de um parâmetro JSON com configurações do tema do aplicativo. O parâmetro app_theme contém um objeto JSON com primaryColor, borderRadius e fontFamily. No cliente, o JSON é analisado com Gson ou kotlinx.serialization, e os valores são aplicados à interface. Esta abordagem permite que designers alterem o tema do aplicativo sem envolvimento do desenvolvedor e sem lançamento.

kotlin
data class AppTheme(
    val primaryColor: String = "#6200EE",
    val borderRadius: Int = 8,
    val fontFamily: String = "Roboto"
)

fun getAppTheme(): AppTheme {
    val json = Firebase.remoteConfig
        .getString("app_theme")
    return Gson().fromJson(json, AppTheme::class.java)
}

Trabalhar com JSON requer cuidado: se o JSON no console do Firebase estiver incorreto (por exemplo, falta uma vírgula), a análise falhará e o aplicativo receberá valores padrão em vez do tema atual. Recomenda-se validar as strings JSON antes da publicação através de um validador JSON. Para produção, adicione try-catch durante a análise e registre os erros através do Firebase Crashlytics.

Melhores práticas e limitações

Firebase Remote Config é uma ferramenta poderosa, mas quando usada incorretamente pode levar a problemas de desempenho, previsibilidade de comportamento e segurança. Vamos analisar as práticas principais que ajudarão a evitar erros comuns ao trabalhar com o serviço, e as limitações a considerar ao projetar a arquitetura do aplicativo.

Evite dados sensíveis — o Remote Config não foi projetado para armazenar segredos (chaves de API, tokens, senhas). Todos os valores de parâmetros são acessíveis ao código do cliente e podem ser extraídos da memória do aplicativo. Para dados confidenciais, use Cloud Functions com verificação no lado do servidor ou Secret Manager. Armazene apenas parâmetros públicos no Remote Config: textos, flags, configurações de interface, URLs de endpoints públicos.

Teste cada alteração antes de publicar para toda a audiência. Use um teste A/B ou publique em uma pequena porcentagem (1–5% dos usuários) para verificar se o novo valor não causa falhas ou quebra a exibição. O Remote Config não tem ambiente de staging — todas as alterações são publicadas em produção imediatamente. A única maneira de publicar com segurança é a implantação gradual.

Limitações da plataforma: número máximo de parâmetros — 2000 (para todos os tipos), tamanho máximo de um valor — 256 KB, tamanho total da resposta do servidor — 800 KB. O número de propriedades de usuário que podem ser usadas no Remote Config é limitado a 25. O intervalo mínimo de fetch é 0 segundos (para depuração), mas o uso excessivo pode levar à excedência da cota do Cloud Functions (30.000 solicitações por minuto por projeto).

Perguntas Frequentes

O Remote Config pode funcionar sem internet?

Sim, quando não há rede, o Remote Config usa os valores padrão definidos no código ou em um arquivo XML. Após a restauração da conexão, o SDK realizará automaticamente um fetch na próxima chamada ou quando o intervalo de cache expirar. O aplicativo nunca falhará devido à falta do Remote Config se os valores padrão estiverem configurados corretamente.

Quão rápido as alterações chegam aos usuários?

Por padrão — até 12 horas (intervalo de cache). Para acelerar, use uma notificação push FCM através do botão “Publish changes” no console: o aplicativo recebe uma mensagem e realiza imediatamente um fetch. O intervalo mínimo de fetch para aceleração pode ser definido através de minimumFetchIntervalInSeconds.

Quantos parâmetros podem ser criados gratuitamente?

Gratuitamente — até 2000 parâmetros por projeto, solicitações ilimitadas no plano Spark. O limite de 2000 parâmetros é flexível: o Firebase não bloqueia a criação de novos, mas o desempenho pode diminuir. Para projetos com milhares de parâmetros, recomenda-se usar parâmetros JSON estruturados.

O Remote Config pode ser usado no Flutter?

Sim, o Firebase Remote Config tem um plugin oficial para Flutter: firebase_remote_config. A API corresponde completamente aos SDKs nativos do Android e iOS. O plugin suporta todos os tipos de parâmetros, fetchAndActivate, listeners de alterações e integração com Firebase Analytics para testes A/B.

Como o Remote Config difere do Firebase Feature Flags?

Firebase Feature Flags é um serviço separado para gerenciamento de recursos com suporte a públicos-alvo e experimentos. O Remote Config é um serviço mais geral para qualquer parâmetro, incluindo feature toggles. O Feature Flags fornece uma interface de usuário dedicada e integração com Cloud Run, mas o Remote Config continua sendo a ferramenta principal para a maioria dos cenários.

Resumo

  • Firebase Remote Config é um serviço em nuvem para gerenciar parâmetros do aplicativo sem publicar atualizações.
  • Como funciona — modelo pull com cache de até 12 horas e capacidade de push via FCM.
  • Condições permitem definir diferentes valores para diferentes grupos de usuários com base em atributos do dispositivo.
  • Testes A/B estão integrados no Remote Config e integrados com Firebase Analytics para calcular significância estatística.
  • Segurança — Remote Config não foi projetado para armazenar segredos, apenas para parâmetros públicos.
  • Feature toggles é o cenário mais popular: ativar/desativar recursos através de um único parâmetro booleano.
  • Melhor prática — publique alterações para 1–5% da audiência antes de implementar para todos os usuários.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também