Firebase Remote Config : qu'est-ce que c'est, paramètres et comment gérer à distance

Auteur : IT Sectr Publié le : 2026-04-28 Temps de lecture : 15 min

Firebase Remote Config est un service cloud de gestion des paramètres d'applications mobiles, permettant de modifier leur comportement, leur apparence et leur contenu sans publier une nouvelle version sur l'app store. Contrairement à l'approche traditionnelle avec des cycles de publication, Remote Config permet de modifier tous les paramètres configurables en temps réel via la console Firebase ou l'API REST. Selon Google Firebase (2026), le service est utilisé dans 65% des applications sur la plateforme Firebase pour les tests A/B, la personnalisation et la gestion opérationnelle des fonctionnalités côté client.

Points clés

  • Remote Config est un service de gestion à distance des paramètres de l'application via la console cloud Firebase.
  • Les modifications prennent effet sans mettre à jour l'application dans le store — un redémarrage ou une synchronisation par intervalle suffit.
  • La personnalisation permet de définir différentes valeurs de paramètres pour différents groupes d'utilisateurs ou conditions.
  • Les tests A/B sont intégrés dans Remote Config : vous pouvez comparer le comportement de groupes avec différentes valeurs de paramètres.
  • La mise en cache côté client réduit la charge du serveur : les données sont stockées localement jusqu'à 12 heures par défaut.

Qu'est-ce que Firebase Remote Config et comment ça fonctionne

Firebase Remote Config est un service qui stocke des paires clé-valeur côté serveur Firebase et les livre aux périphériques clients à la demande ou selon un calendrier. Chaque paramètre a un nom (chaîne), une valeur (chaîne, nombre, booléen ou JSON) et peut être lié à des conditions — des règles qui déterminent quelle valeur un utilisateur particulier reçoit. Les conditions peuvent vérifier la version de l'application, la langue du périphérique, la région, un pourcentage aléatoire et bien d'autres attributs.

L'architecture de Remote Config repose sur un modèle push-pull avec priorité pull. Le client demande périodiquement les valeurs actuelles au serveur (par défaut toutes les 12 heures). Cependant, le développeur peut déclencher une synchronisation immédiate dans le code ou via la console Firebase (bouton « Publish changes »). Après avoir publié les modifications, le serveur envoie une notification push via Firebase Cloud Messaging, et l'application, en la recevant, peut demander à nouveau les paramètres.

Le niveau gratuit de Firebase Remote Config n'a pas de limite sur le nombre de paramètres ou de requêtes, ce qui le distingue des autres services Firebase. La seule limitation est que la taille de la réponse ne doit pas dépasser 800 Ko (total pour tous les paramètres). Cela est plus que suffisant pour un scénario typique : la plupart des projets utilisent 10 à 50 paramètres, et leur volume total dépasse rarement 100 Ko.

Comment Remote Config détermine quelle valeur attribuer à un utilisateur

Le mécanisme de sélection de valeur est basé sur la priorité des conditions. Chaque condition représente une règle (par exemple, « version iOS > 15.0 »). Remote Config vérifie les conditions dans l'ordre de leur priorité et renvoie la valeur de la première condition correspondante. Si aucune condition ne correspond, la valeur par défaut est utilisée. Ce mécanisme permet de créer une hiérarchie de règles : de la plus spécifique à la plus générale.

Important : l'ordre des conditions dans la console Firebase est important. Si deux conditions peuvent correspondre à un même utilisateur simultanément, celle qui est la plus haute dans la liste l'emporte. Il est recommandé de placer les conditions plus spécifiques (par exemple, pour une version d'application spécifique) au-dessus des conditions générales (par exemple, « Tous les utilisateurs iOS »). Un ordre incorrect peut empêcher l'application d'une modification ciblée.

Mise en cache et durée de vie des paramètres

Par défaut, Remote Config met en cache les valeurs reçues du serveur pendant 12 heures. Cela signifie qu'après avoir publié des modifications dans la console, l'application les verra au plus tôt 12 heures plus tard (ou après le prochain appel fetch explicite). Le temps de cache minimum peut être défini via FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds : 3600) — pour la production, il est recommandé d'utiliser au moins 1 heure pour éviter les requêtes excessives au serveur et la consommation de données de l'utilisateur.

Pour tester les modifications pendant le développement, utilisez un intervalle minimum de 0 seconde : FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds : 0). Dans ce mode, chaque appel fetch chargera les valeurs actuelles du serveur. Il est important de ne pas oublier de revenir à l'intervalle de production avant la publication, sinon chaque lancement de l'application contactera le serveur, augmentant les coûts et la consommation de la batterie.

Paramètres, conditions et groupes d'utilisateurs

Un paramètre Remote Config est une variable nommée qui peut prendre l'une de plusieurs valeurs selon les conditions. Types de valeurs : chaîne, nombre (double), booléen, objet JSON (chaîne sérialisée). Les paramètres JSON sont pratiques pour transmettre des données structurées sans créer plusieurs paramètres séparés : par exemple, un objet avec les paramètres de thème de l'application (primaryColor, backgroundColor, fontSize).

Les conditions sont des règles logiques qui vérifient les attributs de l'utilisateur ou du périphérique : version du système d'exploitation (iOS, Android), version de l'application, pays, langue, audience utilisateur (propriété définie dans le code), pourcentage aléatoire (pour les tests A/B). Les conditions peuvent être combinées via AND logique : par exemple, « version de l'application >= 5.0 » AND « pays = Russie ». Chaque paramètre peut avoir un nombre illimité de conditions, mais en pratique, 2 à 5 sont utilisées.

Pour la personnalisation, utilisez les propriétés utilisateur (user properties) — des attributs définis dans le code de l'application via Firebase Analytics. Par exemple, analytics.setUserProperty(« subscription_tier », « premium »). Remote Config peut vérifier cette propriété et fournir des valeurs spécifiques aux utilisateurs premium. La personnalisation via Remote Config ne nécessite pas de créer des conditions côté client — toute la logique est concentrée dans la console cloud.

Type de conditionExempleScénario
Version OSiOS >= 16.0Activer une nouvelle fonctionnalité uniquement pour les nouvelles versions iOS
Version de l'appapp_version >= 3.2Afficher une bannière de mise à jour pour les anciennes versions
Payscountry == « JP »Localiser le contenu pour le Japon
Pourcentage aléatoire10% des utilisateursTest A/B pour 10% de l'audience
Propriété utilisateurtier == « premium »Activer les fonctionnalités premium

Groupes d'utilisateurs et segmentation

Remote Config prend en charge deux modèles de segmentation : basé sur les attributs (conditions) et basé sur les propriétés Firebase Analytics (propriétés utilisateur). Le premier modèle est statique : une condition vérifie un attribut fixe qui ne change pas au cours d'une session ou d'une version d'application. Le second modèle est dynamique : une propriété peut être définie à tout moment pendant le fonctionnement de l'application, permettant une segmentation flexible des utilisateurs à l'exécution.

Important : pour utiliser les propriétés utilisateur dans Remote Config, Firebase Analytics doit être intégré. Cette exigence vient du fait que Remote Config reçoit les données utilisateur du SDK Analytics. Sans Analytics, Remote Config fonctionne uniquement avec les attributs du périphérique (version OS, version de l'application, pays depuis l'IP). La personnalisation basée sur le comportement de l'utilisateur (par exemple, « a effectué 5 achats ») n'est disponible que via Analytics.

Versionnage du template

Le template Remote Config est l'ensemble complet de tous les paramètres, conditions et leurs valeurs. Firebase stocke l'historique des modifications du template et permet de revenir à n'importe quelle version précédente dans les 90 jours. Le versionnage est crucial : si après avoir publié des modifications une erreur est découverte (par exemple, une valeur de paramètre incorrecte casse l'interface), vous pouvez immédiatement revenir à une version fonctionnelle antérieure via la console Firebase.

Chaque modification du template (publication) crée une nouvelle version avec un numéro unique. La console Firebase fournit un journal des modifications avec l'heure, l'utilisateur et la description (si renseignée). Il est recommandé d'ajouter toujours une description aux publications : « Activé le nouveau flux pour le groupe de test iOS 10% ». Sans description, dans un mois, il sera impossible de se souvenir de ce qui a été exactement modifié dans la version 42.

Comment implémenter Remote Config dans une application

Implémenter Remote Config se compose de trois étapes : initialiser le SDK avec les paramètres (temps de cache), définir les paramètres par défaut (valeurs en cas d'indisponibilité du serveur) et la logique d'application des valeurs obtenues. Les paramètres par défaut sont un filet de sécurité au cas où le périphérique ne peut pas se connecter à Firebase (pas d'internet, serveur indisponible). Sans valeurs par défaut, l'application utilisera null, ce qui peut entraîner des plantages.

La définition des valeurs par défaut se fait de deux manières : par programmation via setDefaultsAsync ou via un fichier XML. L'approche programmatique est pratique pour les petits projets : toutes les valeurs sont définies directement dans le code une fois au démarrage de l'application. L'approche fichier est préférable pour les projets avec des dizaines de paramètres : les valeurs sont stockées dans les ressources et peuvent être facilement modifiées sans recompilation. Il est recommandé de combiner : les paramètres de base dans le XML, et les paramètres spécifiques par programmation.

L'asynchronisme est une caractéristique clé du SDK Remote Config. La méthode fetchAndActivate() envoie une requête au serveur dans un thread d'arrière-plan sans bloquer l'interface utilisateur. Une fois le chargement terminé, l'activation se produit — les valeurs des paramètres sont mises à jour dans la mémoire de l'application. Utilisez des écouteurs ou des coroutines (dans Android/Kotlin) pour suivre la fin de l'opération. L'utilisateur ne doit pas voir de « sauts » dans l'interface lors de la mise à jour des paramètres — toutes les modifications doivent être appliquées en douceur.

Initialisation avec onComplete et écouteurs

Au premier démarrage, le SDK Remote Config ne bloque pas l'initialisation de l'application. Pendant la synchronisation, l'application utilise les valeurs par défaut. Cela signifie que l'utilisateur peut voir l'ancienne version de l'interface au premier démarrage, et après la fin du fetch, la nouvelle. Pour les paramètres critiques (par exemple, serverUrl, dont dépend l'opérabilité), utilisez une activation synchrone avec attente du résultat.

Pratique recommandée : afficher un écran de chargement avec un délai minimal si l'application a besoin de manière critique d'obtenir les paramètres actuels avant d'afficher le premier écran. Sur l'écran de chargement, exécutez fetchAndActivate avec un délai d'attente de 5 secondes. Si les paramètres ne sont pas chargés dans les 5 secondes, l'application démarre avec les valeurs par défaut. Cela évite l'attente infinie en l'absence d'internet.

Travailler avec les paramètres JSON

Les paramètres JSON dans Remote Config permettent de transmettre des données structurées sous forme d'une seule valeur. Par exemple, un objet avec des styles de thème : {« primaryColor » : « #6200EE », « borderRadius » : 8, « fontFamily » : « Roboto »}. Côté client, le JSON est analysé et appliqué à l'interface. Avantages : un paramètre au lieu de trois, mise à jour atomique (les trois champs sont mis à jour simultanément), console propre. Inconvénient : difficulté de lecture dans la console Firebase (le JSON s'affiche comme une chaîne).

Recommandation : utilisez des paramètres JSON pour les groupes de valeurs logiquement liées qui sont mises à jour ensemble (thèmes, configuration d'écran, paramètres réseau). Pour les paramètres indépendants (feature toggle, serverUrl), utilisez des paramètres séparés de type chaîne ou booléen — ils sont plus faciles à lire dans la console et plus faciles à suivre dans l'historique des versions du template.

Tests A/B avec Remote Config

Les tests A/B sont une fonctionnalité intégrée de Firebase Remote Config qui permet de diviser les utilisateurs en groupes, de définir différentes valeurs de paramètres pour chaque groupe et de mesurer l'impact des modifications sur les métriques sélectionnées. Contrairement à la division manuelle via des conditions avec random_percent, l'intégration avec Firebase Analytics collecte automatiquement les statistiques pour chaque groupe expérimental et montre la signification statistique des différences.

Le processus du test A/B : le développeur crée une expérience dans la console Firebase (section A/B Testing), sélectionne un paramètre Remote Config, définit des valeurs pour les groupes de contrôle et de test et définit la métrique cible (par exemple, le taux de conversion ou les revenus). Firebase distribue automatiquement les utilisateurs dans les groupes, collecte les données et après 2 à 4 semaines montre le résultat avec la valeur p. L'expérience peut être arrêtée prématurément si le résultat est concluant.

La signification statistique est le critère clé pour arrêter une expérience. Firebase A/B Testing utilise l'approche fréquentiste et montre la valeur p pour chaque métrique. Le seuil de signification standard est de 0,05 (probabilité de confiance de 95%). Lorsque ce seuil est atteint en faveur d'un des groupes, Firebase recommande d'arrêter l'expérience et d'appliquer les modifications à tous les utilisateurs. Si la signification n'est pas atteinte après 4 semaines, l'expérience est considérée comme non concluante.

Types d'expériences

Firebase A/B Testing prend en charge deux types d'expériences : l'A/B classique (comparaison de deux valeurs d'un paramètre) et l'A/B/n multivarié (comparaison de trois valeurs ou plus). Les tests multivariés nécessitent plus d'utilisateurs pour atteindre la signification statistique. Il est recommandé d'utiliser l'A/B/n uniquement pour les paramètres avec 3 à 5 variantes, où chaque variante est fondamentalement différente des autres.

La durée de l'expérience dépend du volume de trafic : pour les applications avec 1 000 utilisateurs actifs quotidiens, la durée minimale est de 2 semaines ; pour les applications avec 100 000 utilisateurs, de 3 à 5 jours. Firebase calcule automatiquement le temps nécessaire et avertit si le trafic actuel est insuffisant pour détecter des différences significatives. Important : n'arrêtez pas l'expérience avant la durée estimée, même si le résultat semble évident — c'est l'erreur classique de « peeking ».

Métriques pour les tests A/B

Les métriques cibles dans Firebase A/B Testing sont définies en fonction des événements Firebase Analytics. Des métriques standard sont disponibles : utilisateurs actifs quotidiens, revenus, taux de conversion, rétention, engagement utilisateur. Vous pouvez également créer une métrique personnalisée basée sur n'importe quel événement Analytics avec des paramètres supplémentaires. Par exemple, la métrique « Pourcentage d'utilisateurs ayant atteint l'écran de paiement » est créée à partir de l'événement screen_view avec le paramètre screen_name = « payment ».

Il est recommandé de sélectionner une métrique primaire sur laquelle repose la décision du succès de l'expérience, et 2 à 3 métriques secondaires pour une analyse supplémentaire. La sélection de plusieurs métriques primaires augmente le risque de faux positifs (problème de comparaisons multiples). Si la métrique primaire sélectionnée ne montre pas d'amélioration statistiquement significative, l'expérience est considérée comme un échec, même si les métriques secondaires se sont améliorées.

Exemples de code pour Remote Config en Kotlin

Examinons l'intégration de Remote Config dans une application Android en Kotlin. Les exemples incluent l'initialisation du SDK avec un temps de cache personnalisé, la récupération de paramètres de différents types, l'implémentation d'une condition A/B côté client et la gestion des erreurs lorsque le serveur est indisponible. Tout le code s'exécute dans l'activité principale ou la classe Application afin que les paramètres soient disponibles dès le démarrage de l'application.

Avant d'utiliser, ajoutez la dépendance : implementation(« com.google.firebase :firebase-config ») via Firebase BOM. Assurez-vous que Firebase Analytics est également connecté, car Remote Config utilise Analytics pour transmettre les propriétés utilisateur.

Initialisation et récupération des paramètres

Le premier exemple est la configuration de base de Remote Config avec un intervalle de fetch minimum d'une heure pour la production. Le SDK est initialisé dans la méthode onCreate de la classe Application. Après fetchAndActivate, la valeur du paramètre welcome_message est vérifiée, qui peut être modifiée à distance pour l'écran de bienvenue.

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

Dans l'exemple, setDefaultsAsync charge les valeurs par défaut depuis le fichier XML res/xml/remote_config_defaults.xml. Si le fetch échoue (pas de réseau, serveur indisponible), l'application utilisera ces valeurs. Le fichier XML contient les mêmes noms de paramètres que dans la console Firebase : <entry key=« welcome_message »>Bienvenue !</entry>. Il est recommandé d'avoir toujours des valeurs par défaut pour tous les paramètres Remote Config.

Feature toggle avec Remote Config

Le deuxième exemple est un feature toggle (interrupteur de fonctionnalité). Le paramètre new_checkout_enabled est de type booléen. Si true, l'application affiche le nouvel écran de paiement ; si false, l'ancien. Le feature toggle est le scénario Remote Config le plus populaire : la modification n'affecte qu'un seul paramètre, ne nécessite pas de modification de la logique et peut être annulée instantanément.

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

// Utilisation dans l'activité
if (isFeatureEnabled("new_checkout_enabled")) {
    navigateToNewCheckout()
} else {
    navigateToLegacyCheckout()
}

La fonction isFeatureEnabled encapsule l'accès à Remote Config et peut être facilement testée via un mock. Pour les feature toggles, il est recommandé d'utiliser une convention de nommage : préfixe feature_, ff_ ou flag_ pour que le but du paramètre soit immédiatement clair dans la console Firebase. Exemple : feature_new_onboarding, ff_dark_mode, flag_v3_api. N'utilisez pas les paramètres de type drapeau pour activer/désactiver pendant plus de 3 mois — l'accumulation de drapeaux morts complique la maintenance.

Récupération de la configuration JSON du thème

Le troisième exemple est la récupération d'un paramètre JSON avec les paramètres du thème de l'application. Le paramètre app_theme contient un objet JSON avec primaryColor, borderRadius et fontFamily. Côté client, le JSON est parsé avec Gson ou kotlinx.serialization, et les valeurs sont appliquées à l'interface. Cette approche permet aux concepteurs de modifier le thème de l'application sans l'intervention du développeur et sans publication.

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

Travailler avec JSON nécessite de la précaution : si le JSON dans la console Firebase est incorrect (par exemple, une virgule manquante), l'analyse échouera et l'application recevra les valeurs par défaut au lieu du thème actuel. Il est recommandé de valider les chaînes JSON avant publication via un validateur JSON. Pour la production, ajoutez try-catch lors de l'analyse et enregistrez les erreurs via Firebase Crashlytics.

Bonnes pratiques et limites

Firebase Remote Config est un outil puissant, mais une utilisation incorrecte peut entraîner des problèmes de performances, de prévisibilité du comportement et de sécurité. Examinons les pratiques clés qui aideront à éviter les erreurs courantes lors du travail avec le service, et les limites à prendre en compte lors de la conception de l'architecture de l'application.

Évitez les données sensibles — Remote Config n'est pas conçu pour stocker des secrets (clés API, jetons, mots de passe). Toutes les valeurs des paramètres sont accessibles au code client et peuvent être extraites de la mémoire de l'application. Pour les données confidentielles, utilisez Cloud Functions avec vérification côté serveur ou Secret Manager. Stockez uniquement les paramètres publics dans Remote Config : textes, drapeaux, paramètres d'interface, URL des points de terminaison publics.

Testez chaque modification avant de la publier pour l'ensemble de l'audience. Utilisez un test A/B ou une publication sur un petit pourcentage (1 à 5% des utilisateurs) pour vérifier que la nouvelle valeur ne provoque pas de plantage et ne casse pas l'affichage. Remote Config n'a pas d'environnement de staging — toutes les modifications sont publiées immédiatement en production. La seule façon de publier en toute sécurité est un déploiement progressif.

Limites de la plateforme : nombre maximum de paramètres — 2 000 (pour tous les types), taille maximale d'une valeur — 256 Ko, taille totale de la réponse du serveur — 800 Ko. Le nombre de propriétés utilisateur pouvant être utilisées dans Remote Config est limité à 25. L'intervalle de fetch minimum est de 0 seconde (pour le débogage), mais une utilisation excessive peut entraîner un dépassement du quota Cloud Functions (30 000 requêtes par minute par projet).

Foire aux questions

Remote Config peut-il fonctionner sans Internet ?

Oui, en l'absence de réseau, Remote Config utilise les valeurs par défaut définies dans le code ou un fichier XML. Après la restauration de la connexion, le SDK effectuera automatiquement un fetch lors du prochain appel ou à l'expiration de l'intervalle de cache. L'application ne plantera jamais à cause de l'absence de Remote Config si les valeurs par défaut sont correctement définies.

Les modifications arrivent-elles rapidement aux utilisateurs ?

Par défaut — jusqu'à 12 heures (intervalle de cache). Pour accélérer, utilisez une notification push FCM via le bouton « Publish changes » dans la console : l'application reçoit un message et effectue immédiatement un fetch. L'intervalle de fetch minimum pour l'accélération peut être défini via minimumFetchIntervalInSeconds.

Combien de paramètres peut-on créer gratuitement ?

Gratuitement — jusqu'à 2 000 paramètres par projet, requêtes illimitées sur le plan Spark. La limite de 2 000 paramètres est souple : Firebase ne bloque pas la création de nouveaux paramètres, mais les performances peuvent diminuer. Pour les projets avec des milliers de paramètres, il est recommandé d'utiliser des paramètres JSON structurés.

Remote Config peut-il être utilisé sur Flutter ?

Oui, Firebase Remote Config dispose d'un plugin officiel pour Flutter : firebase_remote_config. L'API correspond entièrement aux SDK natifs Android et iOS. Le plugin prend en charge tous les types de paramètres, fetchAndActivate, les écouteurs de modifications et l'intégration avec Firebase Analytics pour les tests A/B.

Quelle est la différence entre Remote Config et Firebase Feature Flags ?

Firebase Feature Flags est un service séparé pour la gestion des fonctionnalités avec prise en charge des audiences cibles et des expériences. Remote Config est un service plus général pour tous les paramètres, y compris les feature toggles. Feature Flags fournit une interface utilisateur dédiée et une intégration avec Cloud Run, mais Remote Config reste l'outil principal pour la plupart des scénarios.

Résumé

  • Firebase Remote Config est un service cloud pour gérer les paramètres de l'application sans publier de mises à jour.
  • Fonctionnement — modèle pull avec cache jusqu'à 12 heures et capacité push via FCM.
  • Les conditions permettent de définir différentes valeurs pour différents groupes d'utilisateurs en fonction des attributs du périphérique.
  • Les tests A/B sont intégrés dans Remote Config et intégrés avec Firebase Analytics pour calculer la signification statistique.
  • Sécurité — Remote Config n'est pas conçu pour stocker des secrets, uniquement pour les paramètres publics.
  • Les feature toggles sont le scénario le plus populaire : activer/désactiver des fonctionnalités via un seul paramètre booléen.
  • Meilleure pratique — publiez les modifications sur 1 à 5% de l'audience avant de les déployer pour tous les utilisateurs.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi