Firebase Remote Config: qué es, parámetros y cómo gestionar de forma remota

Autor: IT Sectr Publicado: 2026-04-28 Tiempo de lectura: 15 min

Firebase Remote Config es un servicio en la nube para gestionar parámetros de aplicaciones móviles, que permite cambiar su comportamiento, apariencia y contenido sin publicar una nueva versión en la tienda de aplicaciones. A diferencia del enfoque tradicional con ciclos de lanzamiento, Remote Config permite modificar cualquier parámetro configurable en tiempo real a través de la consola de Firebase o la API REST. Según Google Firebase (2026), el servicio se utiliza en el 65% de las aplicaciones en la plataforma Firebase para pruebas A/B, personalización y gestión operativa de funciones en el lado del cliente.

Puntos clave

  • Remote Config es un servicio de gestión remota de parámetros de la aplicación a través de la consola en la nube de Firebase.
  • Los cambios entran en vigor sin actualizar la aplicación en la tienda — basta con un reinicio o una sincronización por intervalos.
  • La personalización permite establecer diferentes valores de parámetros para distintos grupos de usuarios o condiciones.
  • Las pruebas A/B están integradas en Remote Config: se puede comparar el comportamiento de grupos con diferentes valores de parámetros.
  • El almacenamiento en caché en el cliente reduce la carga del servidor: los datos se almacenan localmente hasta 12 horas por defecto.

Qué es Firebase Remote Config y cómo funciona

Firebase Remote Config es un servicio que almacena pares clave-valor en el lado del servidor de Firebase y los entrega a los dispositivos cliente bajo demanda o según un horario. Cada parámetro tiene un nombre (cadena), un valor (cadena, número, booleano o JSON) y puede estar vinculado a condiciones — reglas que determinan qué valor recibe un usuario en particular. Las condiciones pueden verificar la versión de la aplicación, el idioma del dispositivo, la región, un porcentaje aleatorio y muchos otros atributos.

La arquitectura de Remote Config se basa en un modelo push-pull con prioridad pull. El cliente solicita periódicamente valores actualizados del servidor (por defecto cada 12 horas). Sin embargo, el desarrollador puede iniciar una sincronización inmediata en el código o a través de la consola de Firebase (botón “Publish changes”). Después de publicar los cambios, el servidor envía una notificación push a través de Firebase Cloud Messaging, y la aplicación, al recibirla, puede volver a solicitar los parámetros.

El nivel gratuito de Firebase Remote Config no tiene límites en la cantidad de parámetros o solicitudes, lo que lo diferencia de otros servicios de Firebase. La única limitación es que el tamaño de la respuesta no debe exceder los 800 KB (en total para todos los parámetros). Esto es más que suficiente para un escenario típico: la mayoría de los proyectos usan entre 10 y 50 parámetros, y su volumen total rara vez supera los 100 KB.

Cómo determina Remote Config qué valor asignar a un usuario

El mecanismo de selección de valores se basa en la prioridad de las condiciones. Cada condición representa una regla (por ejemplo, “versión de iOS > 15.0”). Remote Config verifica las condiciones en orden de prioridad y devuelve el valor de la primera condición que coincida. Si ninguna condición coincide, se utiliza el valor predeterminado. Este mecanismo permite crear una jerarquía de reglas: desde la más específica hasta la más general.

Importante: el orden de las condiciones en la consola de Firebase es importante. Si dos condiciones pueden coincir con un mismo usuario simultáneamente, gana la que esté más arriba en la lista. Se recomienda colocar las condiciones más específicas (por ejemplo, para una versión específica de la aplicación) por encima de las generales (por ejemplo, “Todos los usuarios de iOS”). Un orden incorrecto puede provocar que un cambio dirigido nunca se aplique.

Almacenamiento en caché y tiempo de vida de los parámetros

Por defecto, Remote Config almacena en caché los valores recibidos del servidor durante 12 horas. Esto significa que después de publicar cambios en la consola, la aplicación los verá no antes de 12 horas (o después de la siguiente llamada explícita a fetch). El tiempo mínimo de caché se puede establecer mediante FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 3600) — para producción se recomienda al menos 1 hora para evitar solicitudes excesivas al servidor y consumo de datos del usuario.

Para probar cambios durante el desarrollo, use un intervalo mínimo de 0 segundos: FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 0). En este modo, cada llamada a fetch cargará los valores actualizados del servidor. Es importante no olvidar revertir al intervalo de producción antes del lanzamiento; de lo contrario, cada inicio de la aplicación se comunicará con el servidor, aumentando los costos y el consumo de batería.

Parámetros, condiciones y grupos de usuarios

Un parámetro de Remote Config es una variable con nombre que puede tomar uno de varios valores según las condiciones. Tipos de valores: string, number (double), boolean, objeto JSON (cadena serializada). Los parámetros JSON son convenientes para transmitir datos estructurados sin crear muchos parámetros separados: por ejemplo, un objeto con la configuración del tema de la aplicación (primaryColor, backgroundColor, fontSize).

Las condiciones son reglas lógicas que verifican atributos del usuario o del dispositivo: versión del SO (iOS, Android), versión de la aplicación, país, idioma, audiencia de usuario (propiedad definida en el código), porcentaje aleatorio (para pruebas A/B). Las condiciones se pueden combinar mediante AND lógico: por ejemplo, “versión de la aplicación >= 5.0” AND “país = Rusia”. Cada parámetro puede tener un número ilimitado de condiciones, pero en la práctica se usan de 2 a 5.

Para la personalización, use propiedades de usuario (user properties) — atributos establecidos en el código de la aplicación a través de Firebase Analytics. Por ejemplo, analytics.setUserProperty(“subscription_tier”, “premium”). Remote Config puede verificar esta propiedad y entregar valores específicos para usuarios premium. La personalización a través de Remote Config no requiere crear condiciones en el lado del cliente — toda la lógica se concentra en la consola en la nube.

Tipo de condiciónEjemploEscenario
Versión del SOiOS >= 16.0Activar una nueva función solo para versiones nuevas de iOS
Versión de la appapp_version >= 3.2Mostrar un banner de actualización para versiones antiguas
Paíscountry == “JP”Localizar contenido para Japón
Porcentaje aleatorio10% de usuariosPrueba A/B para el 10% de la audiencia
Propiedad de usuariotier == “premium”Activar funciones premium

Grupos de usuarios y segmentación

Remote Config admite dos modelos de segmentación: basado en atributos (conditions) y basado en propiedades de Firebase Analytics (user properties). El primer modelo es estático: una condición verifica un atributo fijo que no cambia dentro de una sesión o versión de la aplicación. El segundo modelo es dinámico: una propiedad se puede establecer en cualquier momento durante la ejecución de la aplicación, lo que permite una segmentación flexible de usuarios en tiempo de ejecución.

Importante: para usar propiedades de usuario en Remote Config, es necesario integrar Firebase Analytics. Este requisito se debe a que Remote Config recibe datos de usuario del SDK de Analytics. Sin Analytics, Remote Config solo funciona con atributos del dispositivo (versión del SO, versión de la aplicación, país desde la IP). La personalización basada en el comportamiento del usuario (por ejemplo, “realizó 5 compras”) solo está disponible a través de Analytics.

Versiones de plantilla

La plantilla de Remote Config es el conjunto completo de todos los parámetros, condiciones y sus valores. Firebase almacena el historial de cambios de la plantilla y permite revertir a cualquier versión anterior dentro de los 90 días. El versionado es críticamente importante: si después de publicar cambios se descubre un error (por ejemplo, un valor de parámetro incorrecto rompe la interfaz), se puede revertir inmediatamente la plantilla a una versión funcional anterior a través de la consola de Firebase.

Cada cambio de plantilla (publicación) crea una nueva versión con un número único. La consola de Firebase proporciona un registro de cambios con la hora, el usuario y la descripción (si se completó). Se recomienda agregar siempre una descripción a las publicaciones: “Activamos nuevo feed para iOS grupo de prueba del 10%”. Sin una descripción, en un mes será imposible recordar qué se cambió exactamente en la versión 42.

Cómo implementar Remote Config en una aplicación

Implementar Remote Config consta de tres pasos: inicializar el SDK con configuración (tiempo de caché), definir parámetros predeterminados (valores en caso de que el servidor no esté disponible) y la lógica para aplicar los valores obtenidos. Los parámetros predeterminados son una red de seguridad en caso de que el dispositivo no pueda conectarse a Firebase (sin internet, servidor no disponible). Sin valores predeterminados, la aplicación usará null, lo que puede provocar fallos.

La definición de valores predeterminados se realiza de dos formas: mediante programación a través de setDefaultsAsync o mediante un archivo XML. El enfoque programático es conveniente para proyectos pequeños: todos los valores se establecen directamente en el código una vez al iniciar la aplicación. El enfoque de archivo es preferible para proyectos con docenas de parámetros: los valores se almacenan en recursos y se pueden editar fácilmente sin recompilación. Se recomienda combinar: configuración básica en XML y específica mediante programación.

La asincronía es una característica clave del SDK de Remote Config. El método fetchAndActivate() realiza una solicitud al servidor en un hilo de fondo sin bloquear la interfaz de usuario. Una vez que se completa la carga, se produce la activación: los valores de los parámetros se actualizan en la memoria de la aplicación. Use listeners o corrutinas (en Android/Kotlin) para realizar un seguimiento de la finalización. El usuario no debe ver “saltos” en la interfaz al actualizar los parámetros; todos los cambios deben aplicarse sin problemas.

Inicialización con onComplete y listeners

En el primer inicio, el SDK de Remote Config no bloquea la inicialización de la aplicación. Mientras ocurre la sincronización, la aplicación usa los valores predeterminados. Esto significa que el usuario puede ver la versión anterior de la interfaz en el primer inicio, y después de que se complete fetch, la nueva. Para parámetros críticos (por ejemplo, serverUrl, del que depende la operatividad), use activación síncrona con espera de resultado.

Práctica recomendada: mostrar una pantalla de carga con demora mínima si la aplicación necesita críticamente obtener parámetros actualizados antes de mostrar la primera pantalla. En la pantalla de carga, ejecute fetchAndActivate con un tiempo de espera de 5 segundos. Si los parámetros no se cargan en 5 segundos, la aplicación se inicia con valores predeterminados. Esto evita la espera infinita cuando no hay internet.

Trabajo con parámetros JSON

Los parámetros JSON en Remote Config permiten transmitir datos estructurados como un solo valor. Por ejemplo, un objeto con estilos de tema: {“primaryColor”: “#6200EE”, “borderRadius”: 8, “fontFamily”: “Roboto”}. En el cliente, el JSON se analiza y se aplica a la interfaz. Ventajas: un parámetro en lugar de tres, actualización atómica (los tres campos se actualizan simultáneamente), consola limpia. Desventaja: dificultad de lectura en la consola de Firebase (el JSON se muestra como una cadena).

Recomendación: use parámetros JSON para grupos de valores lógicamente relacionados que se actualizan juntos (temas, configuración de pantalla, configuración de red). Para parámetros independientes (feature toggle, serverUrl), use parámetros de cadena o booleanos separados — son más fáciles de leer en la consola y más fáciles de rastrear cambios en el historial de versiones de la plantilla.

Pruebas A/B con Remote Config

Las pruebas A/B son una funcionalidad integrada de Firebase Remote Config que permite dividir a los usuarios en grupos, establecer diferentes valores de parámetros para cada grupo y medir el impacto de los cambios en métricas seleccionadas. A diferencia de la división manual mediante condiciones con random_percent, la integración con Firebase Analytics recopila automáticamente estadísticas para cada grupo experimental y muestra la significancia estadística de las diferencias.

El proceso de prueba A/B: el desarrollador crea un experimento en la consola de Firebase (sección A/B Testing), selecciona un parámetro de Remote Config, establece valores para los grupos de control y prueba, y define la métrica objetivo (por ejemplo, tasa de conversión o ingresos). Firebase distribuye automáticamente los usuarios en grupos, recopila datos y después de 2 a 4 semanas muestra el resultado con valor p. El experimento se puede detener antes si el resultado es concluyente.

La significancia estadística es el criterio clave para detener un experimento. Firebase A/B Testing utiliza el enfoque frecuentista y muestra el valor p para cada métrica. El umbral de significancia estándar es 0.05 (probabilidad de confianza del 95%). Cuando se alcanza este umbral a favor de uno de los grupos, Firebase recomienda detener el experimento y aplicar los cambios a todos los usuarios. Si no se alcanza la significancia después de 4 semanas, el experimento se considera no concluyente.

Tipos de experimentos

Firebase A/B Testing admite dos tipos de experimentos: A/B clásico (comparación de dos valores de un parámetro) y A/B/n multivariante (comparación de tres o más valores). Las pruebas multivariantes requieren más usuarios para alcanzar significancia estadística. Se recomienda usar A/B/n solo para parámetros con 3 a 5 variantes, donde cada variante es fundamentalmente diferente de las demás.

La duración del experimento depende del volumen de tráfico: para aplicaciones con 1000 usuarios activos diarios, la duración mínima es de 2 semanas; para aplicaciones con 100,000 usuarios, de 3 a 5 días. Firebase calcula automáticamente el tiempo necesario y advierte si el tráfico actual es insuficiente para detectar diferencias significativas. Importante: no detenga el experimento antes del tiempo estimado, incluso si el resultado parece obvio — este es el error clásico de “peeking”.

Métricas para pruebas A/B

Las métricas objetivo en Firebase A/B Testing se establecen basándose en eventos de Firebase Analytics. Están disponibles métricas estándar: usuarios activos diarios, ingresos, tasa de conversión, retención, participación del usuario. También se puede crear una métrica personalizada basada en cualquier evento de Analytics con parámetros adicionales. Por ejemplo, la métrica “Porcentaje de usuarios que llegaron a la pantalla de pago” se crea a partir del evento screen_view con el parámetro screen_name = “payment”.

Se recomienda seleccionar una métrica principal en la que se base la decisión sobre el éxito del experimento, y de 2 a 3 métricas secundarias para análisis adicional. Seleccionar múltiples métricas principales aumenta el riesgo de resultados falsos positivos (problema de comparación múltiple). Si la métrica principal seleccionada no muestra una mejora estadísticamente significativa, el experimento se considera no exitoso, incluso si las métricas secundarias mejoraron.

Ejemplos de código para Remote Config en Kotlin

Veamos la integración de Remote Config en una aplicación Android en Kotlin. Los ejemplos incluyen inicialización del SDK con tiempo de caché personalizado, obtención de parámetros de diferentes tipos, implementación de una condición A/B en el lado del cliente y manejo de errores cuando el servidor no está disponible. Todo el código se ejecuta en la actividad principal o en la clase Application para que los parámetros estén disponibles desde el inicio de la aplicación.

Antes de usarlo, agregue la dependencia: implementation(“com.google.firebase:firebase-config”) a través de Firebase BOM. Asegúrese de que Firebase Analytics también esté conectado, ya que Remote Config usa Analytics para pasar propiedades de usuario.

Inicialización y obtención de parámetros

El primer ejemplo es la configuración básica de Remote Config con un intervalo mínimo de fetch de 1 hora para producción. El SDK se inicializa en el método onCreate de la clase Application. Después de fetchAndActivate, se verifica el valor del parámetro welcome_message, que se puede cambiar de forma remota para la pantalla de bienvenida.

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)
                }
            }
    }
}

En el ejemplo, setDefaultsAsync carga valores predeterminados desde el archivo XML res/xml/remote_config_defaults.xml. Si fetch falla (sin red, servidor no disponible), la aplicación usará estos valores. El archivo XML contiene los mismos nombres de parámetros que en la consola de Firebase: <entry key=“welcome_message”>¡Bienvenido!</entry>. Se recomienda tener siempre valores predeterminados para todos los parámetros de Remote Config.

Feature toggle con Remote Config

El segundo ejemplo es un feature toggle (bandera de función). El parámetro new_checkout_enabled es de tipo booleano. Si es true, la aplicación muestra la nueva pantalla de pago; si es false, la anterior. Feature toggle es el escenario más popular de Remote Config: el cambio afecta solo a un parámetro, no requiere modificación de la lógica y se puede revertir al instante.

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

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

La función isFeatureEnabled encapsula el acceso a Remote Config y se puede probar fácilmente mediante mock. Para los feature toggles, se recomienda usar una convención de nomenclatura: prefijo feature_, ff_ o flag_ para que el propósito del parámetro quede claro de inmediato en la consola de Firebase. Ejemplo: feature_new_onboarding, ff_dark_mode, flag_v3_api. No use parámetros de bandera para activar/desactivar durante más de 3 meses: la acumulación de banderas muertas complica el mantenimiento.

Obtención de configuración JSON del tema

El tercer ejemplo es la obtención de un parámetro JSON con la configuración del tema de la aplicación. El parámetro app_theme contiene un objeto JSON con primaryColor, borderRadius y fontFamily. En el cliente, el JSON se analiza con Gson o kotlinx.serialization, y los valores se aplican a la interfaz. Este enfoque permite a los diseñadores cambiar el tema de la aplicación sin la participación del desarrollador y sin un lanzamiento.

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)
}

Trabajar con JSON requiere cuidado: si el JSON en la consola de Firebase es incorrecto (por ejemplo, falta una coma), el análisis fallará y la aplicación recibirá valores predeterminados en lugar del tema actual. Se recomienda validar las cadenas JSON antes de publicarlas mediante un validador JSON. Para producción, agregue try-catch durante el análisis y registre los errores a través de Firebase Crashlytics.

Mejores prácticas y limitaciones

Firebase Remote Config es una herramienta poderosa, pero si se usa incorrectamente puede provocar problemas de rendimiento, previsibilidad del comportamiento y seguridad. Analicemos las prácticas clave que ayudarán a evitar errores comunes al trabajar con el servicio, y las limitaciones que se deben considerar al diseñar la arquitectura de la aplicación.

Evite datos confidenciales — Remote Config no está diseñado para almacenar secretos (claves de API, tokens, contraseñas). Todos los valores de los parámetros son accesibles al código cliente y pueden extraerse de la memoria de la aplicación. Para datos confidenciales, use Cloud Functions con verificación del lado del servidor o Secret Manager. Almacene solo parámetros públicos en Remote Config: textos, banderas, configuraciones de interfaz, URL de endpoints públicos.

Pruebe cada cambio antes de publicarlo para toda la audiencia. Use una prueba A/B o publique en un porcentaje pequeño (1–5% de usuarios) para verificar que el nuevo valor no cause fallos ni rompa la visualización. Remote Config no tiene un entorno de staging: todos los cambios se publican en producción de inmediato. La única forma de publicar de forma segura es un despliegue gradual.

Limitaciones de la plataforma: número máximo de parámetros — 2000 (para todos los tipos), tamaño máximo de un valor — 256 KB, tamaño total de la respuesta del servidor — 800 KB. La cantidad de propiedades de usuario que se pueden usar en Remote Config está limitada a 25. El intervalo mínimo de fetch es de 0 segundos (para depuración), pero el uso excesivo puede provocar que se supere la cuota de Cloud Functions (30,000 solicitudes por minuto por proyecto).

Preguntas Frecuentes

¿Puede Remote Config funcionar sin internet?

Sí, cuando no hay red, Remote Config usa los valores predeterminados establecidos en el código o en un archivo XML. Después de restablecer la conexión, el SDK realizará automáticamente un fetch en la próxima llamada o cuando expire el intervalo de caché. La aplicación nunca fallará debido a la falta de Remote Config si los valores predeterminados están configurados correctamente.

¿Qué tan rápido llegan los cambios a los usuarios?

Por defecto — hasta 12 horas (intervalo de caché). Para acelerar, use una notificación push de FCM a través del botón “Publish changes” en la consola: la aplicación recibe un mensaje y realiza inmediatamente un fetch. El intervalo mínimo de fetch para aceleración se puede establecer mediante minimumFetchIntervalInSeconds.

¿Cuántos parámetros se pueden crear gratis?

Gratis — hasta 2000 parámetros por proyecto, solicitudes ilimitadas en el plan Spark. El límite de 2000 parámetros es flexible: Firebase no bloquea la creación de nuevos, pero el rendimiento puede disminuir. Para proyectos con miles de parámetros, se recomienda usar parámetros JSON estructurados.

¿Se puede usar Remote Config en Flutter?

Sí, Firebase Remote Config tiene un plugin oficial de Flutter: firebase_remote_config. La API coincide completamente con los SDK nativos de Android e iOS. El plugin admite todos los tipos de parámetros, fetchAndActivate, listeners de cambios e integración con Firebase Analytics para pruebas A/B.

¿En qué se diferencia Remote Config de Firebase Feature Flags?

Firebase Feature Flags es un servicio separado para la gestión de funciones con soporte para audiencias objetivo y experimentos. Remote Config es un servicio más general para cualquier parámetro, incluidos los feature toggles. Feature Flags proporciona una interfaz de usuario dedicada e integración con Cloud Run, pero Remote Config sigue siendo la herramienta principal para la mayoría de escenarios.

Resumen

  • Firebase Remote Config es un servicio en la nube para gestionar parámetros de la aplicación sin publicar actualizaciones.
  • Cómo funciona — modelo pull con caché de hasta 12 horas y capacidad de push a través de FCM.
  • Las condiciones permiten establecer diferentes valores para diferentes grupos de usuarios según atributos del dispositivo.
  • Las pruebas A/B están integradas en Remote Config y se integran con Firebase Analytics para calcular la significancia estadística.
  • Seguridad — Remote Config no está diseñado para almacenar secretos, solo para parámetros públicos.
  • Feature toggles es el escenario más popular: activar/desactivar funciones mediante un único parámetro booleano.
  • Mejor práctica — publique cambios en el 1–5% de la audiencia antes de implementarlos para todos los usuarios.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también