Firebase Remote Config: що це, параметри та як керувати віддалено

Автор: IT Sectr Опубліковано: 2026-04-28 Час читання: 15 хв

Firebase Remote Config — це хмарний сервіс керування параметрами мобільного додатка, що дозволяє змінювати його поведінку, зовнішній вигляд і вміст без публікації нової версії в магазині додатків. На відміну від традиційного підходу з релізними циклами, Remote Config дає можливість змінювати будь-які налаштовувані параметри в реальному часі через консоль Firebase або REST API. За даними Google Firebase (2026), сервіс використовується в 65% додатків на платформі Firebase для A/B-тестування, персоналізації та оперативного керування функціями на клієнтській стороні.

Головне

  • Remote Config — сервіс віддаленого керування параметрами додатка через хмарну консоль Firebase.
  • Зміни набувають чинності без оновлення додатка в магазині — достатньо перезапуску або інтервальної синхронізації.
  • Персоналізація дозволяє задавати різні значення параметрів для різних груп користувачів або умов.
  • A/B-тестування вбудовано в Remote Config: можна порівнювати поведінку груп з різними значеннями параметрів.
  • Кешування на клієнті знижує навантаження на сервер: дані зберігаються локально до 12 годин за замовчуванням.

Що таке Firebase Remote Config і як він працює

Firebase Remote Config — це сервіс, який зберігає пари ключ-значення на стороні сервера Firebase і доставляє їх на клієнтські пристрої за запитом або за розкладом. Кожен параметр має ім'я (рядок), значення (рядок, число, boolean або JSON) і може бути прив'язаний до умов — правил, що визначають, яке значення отримує конкретний користувач. Умови можуть перевіряти версію додатка, мову пристрою, регіон, випадковий відсоток та багато інших атрибутів.

Архітектура Remote Config побудована на push-pull моделі з пріоритетом pull. Клієнт періодично запитує актуальні значення з сервера (за замовчуванням кожні 12 годин). Однак розробник може ініціювати негайну синхронізацію в коді або через консоль Firebase (кнопка “Publish changes”). Після публікації змін сервер розсилає push-сповіщення через Firebase Cloud Messaging, і додаток, отримавши його, може виконати повторний запит параметрів.

Безкоштовний тариф Firebase Remote Config не має обмежень за кількістю параметрів або запитів, що вирізняє його серед інших Firebase-сервісів. Єдине обмеження — розмір відповіді не повинен перевищувати 800 КБ (сумарно для всіх параметрів). Цього більш ніж достатньо для типового сценарію: більшість проектів використовують 10–50 параметрів, і їхній загальний обсяг рідко перевищує 100 КБ.

Як Remote Config визначає, яке значення надати користувачеві

Механізм вибору значення заснований на пріоритеті умов. Кожна умова являє собою правило (наприклад, “версія iOS > 15.0”). Remote Config перевіряє умови в порядку їхнього пріоритету та повертає значення першої відповідної умови. Якщо жодна умова не підійшла, використовується значення за замовчуванням. Цей механізм дозволяє створювати ієрархію правил: від найбільш специфічного до найзагальнішого.

Важливо: порядок умов у консолі Firebase має значення. Якщо дві умови можуть підходити одному користувачеві одночасно, перемагає та, що розташована вище в списку. Рекомендується розміщувати більш специфічні умови (наприклад, для конкретної версії додатка) вище загальних (наприклад, “Всі користувачі iOS”). Неправильний порядок може призвести до того, що вузькоспрямована зміна ніколи не застосується.

Кешування та час життя параметрів

За замовчуванням Remote Config кешує отримані з сервера значення на 12 годин. Це означає, що після публікації змін у консолі додаток побачить їх не раніше ніж через 12 годин (або після наступного явного виклику fetch). Мінімальний час кешування можна задати через FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 3600) — для production рекомендується не менше 1 години, щоб уникнути надмірних запитів до сервера та витрати трафіку користувача.

Для тестування змін у процесі розробки використовуйте мінімальний інтервал 0 секунд: FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 0). У цьому режимі кожен виклик fetch буде завантажувати актуальні значення з сервера. Важливо не забути повернути production-інтервал перед релізом, інакше при кожному запуску додаток звертатиметься до сервера, збільшуючи витрати та споживання батареї.

Параметри, умови та групи користувачів

Параметр Remote Config — це іменована змінна, яка може приймати одне з кількох значень залежно від умов. Типи значень: string, number (double), boolean, JSON object (серіалізований рядок). JSON-параметри зручні для передачі структурованих даних без створення безлічі окремих параметрів: наприклад, об'єкт з налаштуваннями теми додатка (primaryColor, backgroundColor, fontSize).

Умови (conditions) — це логічні правила, які перевіряють атрибути користувача або пристрою: версія ОС (iOS, Android), версія додатка, країна, мова, користувацька аудиторія (властивість, що визначається в коді), випадковий відсоток (для A/B тестів). Умови можуть комбінуватися через логічне І: наприклад, “версія додатка >= 5.0” І “країна = Україна”. Кожен параметр може мати необмежену кількість умов, але на практиці використовують 2–5.

Для персоналізації використовуйте користувацькі властивості (user properties) — атрибути, що встановлюються в коді додатка через Firebase Analytics. Наприклад, analytics.setUserProperty(“subscription_tier”, “premium”). Remote Config може перевіряти цю властивість і надавати значення, специфічні для преміум-користувачів. Персоналізація через Remote Config не вимагає створення умов на стороні клієнта — вся логіка зосереджена в хмарній консолі.

Тип умовиПрикладСценарій
Версія ОСiOS >= 16.0Увімкнути нову функцію лише для нових версій iOS
Версія додаткаapp_version >= 3.2Показати банер оновлення для старих версій
Країнаcountry == “UA”Локалізувати контент для України
Випадковий відсоток10% користувачівA/B тест для 10% аудиторії
User Propertytier == “premium”Увімкнути преміум-функції

Групи користувачів та сегментація

Remote Config підтримує дві моделі сегментації: на основі атрибутів (conditions) і на основі властивостей Firebase Analytics (user properties). Перша модель — статична: умова перевіряє фіксований атрибут, який не змінюється в межах сесії або версії додатка. Друга модель — динамічна: властивість може бути встановлена в будь-який момент роботи додатка, що дозволяє гнучко сегментувати користувачів у runtime.

Важливо: для використання user properties у Remote Config необхідно інтегрувати Firebase Analytics. Ця вимога пов'язана з тим, що Remote Config отримує користувацькі дані від Analytics SDK. Без Analytics Remote Config працює лише з атрибутами пристрою (версія ОС, версія додатка, країна з IP). Персоналізація на основі поведінки користувача (наприклад, “зробив 5 покупок”) доступна лише через Analytics.

Template Versioning

Remote Config шаблон (template) — це повний набір усіх параметрів, умов та їхніх значень. Firebase зберігає історію змін шаблону та дозволяє відкотитися до будь-якої попередньої версії протягом 90 днів. Версіонування критично важливе: якщо після публікації змін виявлено помилку (наприклад, некоректне значення параметра ламає UI), можна негайно відкотити шаблон до попередньої робочої версії через консоль Firebase.

Кожна зміна шаблону (публікація) створює нову версію з унікальним номером. У консолі Firebase доступний журнал змін із зазначенням часу, користувача та опису (якщо заповнено). Рекомендується завжди додавати опис до публікації: “Увімкнули нову стрічку для iOS 10% тестової групи”. Без опису через місяць неможливо згадати, що саме було змінено у версії 42.

Як впровадити Remote Config у додаток

Впровадження Remote Config складається з трьох кроків: ініціалізація SDK з налаштуваннями (час кешування), визначення параметрів за замовчуванням (значення на випадок недоступності сервера) та логіка застосування отриманих значень. Параметри за замовчуванням — це страховка на випадок, якщо пристрій не може підключитися до Firebase (немає інтернету, сервер недоступний). Без default values додаток використовуватиме null, що може призвести до crash.

Визначення default values виконується двома способами: програмно через виклик setDefaultsAsync або через XML-файл. Програмний спосіб зручний для невеликих проектів: всі значення задаються прямо в коді один раз при старті додатка. Файловий спосіб кращий для проектів з десятками параметрів: значення зберігаються в ресурсах і легко редагуються без перекомпіляції. Рекомендується комбінувати: базові налаштування в XML, а специфічні — програмно.

Асинхронність — ключова особливість Remote Config SDK. Метод fetchAndActivate() виконує запит до сервера у фоновому потоці, не блокуючи UI. Після завершення завантаження відбувається активація — значення параметрів оновлюються в пам'яті додатка. Для відстеження завершення використовуйте слухачі або корутини (в Android/Kotlin). Користувач не повинен бачити “смикання” UI при оновленні параметрів — всі зміни повинні застосовуватися плавно.

Ініціалізація з onComplete та слухачами

При першому запуску Remote Config SDK не блокує ініціалізацію додатка. Поки відбувається синхронізація, додаток використовує значення за замовчуванням. Це означає, що користувач може побачити стару версію інтерфейсу при першому запуску, а після завершення fetch — нову. Для критичних параметрів (наприклад, serverUrl, від якого залежить працездатність), використовуйте синхронну активацію з очікуванням результату.

Рекомендована практика: display loading screen з мінімальною затримкою, якщо додатку критично важливо отримати актуальні параметри перед відображенням першого екрана. На loading screen запускається fetchAndActivate з тайм-аутом 5 секунд. Якщо за 5 секунд параметри не завантажилися — додаток стартує з default values. Це запобігає нескінченному очікуванню при відсутності інтернету.

Робота з JSON-параметрами

JSON-параметри Remote Config дозволяють передавати структуровані дані одним значенням. Наприклад, об'єкт зі стилями теми: {“primaryColor”: “#6200EE”, “borderRadius”: 8, “fontFamily”: “Roboto”}. На клієнті JSON парситься і застосовується до UI. Переваги: один параметр замість трьох, атомарність оновлення (всі три поля оновлюються одночасно), чиста консоль. Недолік: складність читання в консолі Firebase (JSON відображається як рядок).

Рекомендація: використовуйте JSON-параметри для груп логічно пов'язаних значень, які оновлюються разом (теми, конфігурація екрана, налаштування мережі). Для незалежних параметрів (feature toggle, serverUrl) використовуйте окремі рядкові або булеві параметри — їх простіше читати в консолі та легше відстежувати зміни в історії версій шаблону.

A/B-тестування з Remote Config

A/B-тестування — вбудована можливість Firebase Remote Config, що дозволяє розділити користувачів на групи, задати для кожної групи різні значення параметрів і виміряти вплив змін на вибрані метрики. На відміну від ручного розділення через умови з random_percent, інтеграція з Firebase Analytics автоматично збирає статистику по кожній експериментальній групі та показує статистичну значущість відмінностей.

Процес A/B-тесту: розробник створює експеримент у консолі Firebase (розділ A/B Testing), вибирає параметр Remote Config, задає значення для контрольної та тестової груп і визначає цільову метрику (наприклад, conversion rate або revenue). Firebase автоматично розподіляє користувачів по групах, збирає дані та через 2–4 тижні показує результат з p-value. Експеримент можна зупинити достроково, якщо результат однозначний.

Статистична значущість — ключовий критерій зупинки експерименту. Firebase A/B Testing використовує Frequentist підхід і показує p-value для кожної метрики. Стандартний поріг значущості — 0.05 (95% довірча ймовірність). При досягненні цього порогу на користь однієї з груп Firebase рекомендує зупинити експеримент і застосувати зміни для всіх користувачів. Якщо через 4 тижні значущість не досягнута — експеримент вважається непереконливим.

Типи експериментів

Firebase A/B Testing підтримує два типи експериментів: класичний A/B (порівняння двох значень одного параметра) та багатоваріантний A/B/n (порівняння трьох і більше значень). Для багатоваріантних тестів потрібно більше користувачів для досягнення статистичної значущості. Рекомендується використовувати A/B/n тільки для параметрів з 3–5 варіантами, де кожен варіант кардинально відрізняється від інших.

Тривалість експерименту залежить від обсягу трафіку: для додатків з 1000 активних користувачів на день мінімальна тривалість — 2 тижні, для додатків зі 100 000 користувачів — 3–5 днів. Firebase автоматично розраховує необхідний час і попереджає, якщо поточного трафіку недостатньо для детектування значущих відмінностей. Важливо: не зупиняйте експеримент раніше розрахункового терміну, навіть якщо здається, що результат очевидний — це класична помилка “peeking”.

Метрики для A/B-тестування

Цільові метрики в Firebase A/B Testing задаються на основі подій Firebase Analytics. Доступні стандартні метрики: daily active users, revenue, conversion rate, retention, user engagement. Можна також створити кастомну метрику на основі будь-якої події Analytics з додатковими параметрами. Наприклад, метрика “Відсоток користувачів, які дійшли до екрана оплати” створюється з події screen_view з параметром screen_name = “payment”.

Рекомендується вибирати одну первинну метрику (primary metric), на основі якої приймається рішення про успішність експерименту, і 2–3 вторинні метрики для додаткового аналізу. Вибір кількох первинних метрик підвищує ризик хибнопозитивного результату (multiple comparison problem). Якщо вибрана первинна метрика не показує статистично значущого покращення, експеримент вважається неуспішним, навіть якщо вторинні метрики покращилися.

Приклади коду для Remote Config на Kotlin

Розглянемо інтеграцію Remote Config в Android-додаток на Kotlin. Приклади включають ініціалізацію SDK з кастомним часом кешування, отримання параметрів різних типів, реалізацію A/B-умови на стороні клієнта та обробку помилок при недоступності сервера. Весь код виконується в main activity або Application класі, щоб параметри були доступні з самого старту додатка.

Перед використанням додайте залежність: implementation(“com.google.firebase:firebase-config”) через Firebase BOM. Переконайтеся, що Firebase Analytics також підключений, оскільки Remote Config використовує Analytics для передачі користувацьких властивостей.

Ініціалізація та отримання параметрів

Перший приклад — базове налаштування Remote Config з мінімальним інтервалом fetch 1 година для production. SDK ініціалізується в методі onCreate Application класу. Після fetchAndActivate перевіряється значення параметра welcome_message, яке може бути змінено віддалено для привітального екрана.

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

У прикладі setDefaultsAsync завантажує default values з XML-файлу res/xml/remote_config_defaults.xml. Якщо fetch завершиться помилкою (немає мережі, сервер недоступний), додаток використовуватиме ці значення. XML-файл містить ті ж імена параметрів, що й у консолі Firebase: <entry key=“welcome_message”>Ласкаво просимо!</entry>. Рекомендується завжди мати default values для всіх параметрів Remote Config.

Feature toggle з Remote Config

Другий приклад — feature toggle (флаг включення функції). Параметр new_checkout_enabled має тип boolean. Якщо значення true — додаток показує новий екран оформлення замовлення, якщо false — старий. Feature toggle — найпопулярніший сценарій Remote Config: зміна зачіпає тільки один параметр, не вимагає модифікації логіки і може бути скасована миттєво.

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

// Використання в activity
if (isFeatureEnabled("new_checkout_enabled")) {
    navigateToNewCheckout()
} else {
    navigateToLegacyCheckout()
}

Функція isFeatureEnabled інкапсулює доступ до Remote Config і може бути легко протестована через mock. Для feature toggles рекомендується використовувати угоду про імена: префікс feature_, ff_ або flag_, щоб у консолі Firebase відразу було зрозуміло призначення параметра. Приклад: feature_new_onboarding, ff_dark_mode, flag_v3_api. Не використовуйте параметри-прапорці для ввімкнення/вимкнення більш ніж 3 місяці — накопичення мертвих прапорців ускладнює підтримку.

Отримання JSON-конфігурації теми

Третій приклад — отримання JSON-параметра з налаштуваннями теми додатка. Параметр app_theme містить JSON-об'єкт з primaryColor, borderRadius і fontFamily. На клієнті JSON парситься за допомогою Gson або kotlinx.serialization, і значення застосовуються до UI. Такий підхід дозволяє дизайнерам змінювати тему додатка без участі розробника та без релізу.

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

Робота з JSON вимагає акуратності: якщо JSON у консолі Firebase буде некоректним (наприклад, пропущена кома), парсинг завершиться помилкою, і додаток отримає default values замість актуальної теми. Рекомендується валідувати JSON-рядки перед публікацією через JSON-валідатор. Для production додайте try-catch при парсингу та логуйте помилки через Firebase Crashlytics.

Найкращі практики та обмеження

Firebase Remote Config — потужний інструмент, але при неправильному використанні він може призвести до проблем з продуктивністю, передбачуваністю поведінки та безпекою. Розберемо ключові практики, які допоможуть уникнути типових помилок при роботі з сервісом, та обмеження, які потрібно враховувати при проектуванні архітектури додатка.

Уникайте чутливих даних — Remote Config не призначений для зберігання секретів (API-ключів, токенів, паролів). Всі значення параметрів доступні клієнтському коду і можуть бути вилучені з пам'яті додатка. Для конфіденційних даних використовуйте Cloud Functions з серверною перевіркою або Secret Manager. У Remote Config зберігайте лише публічні параметри: тексти, прапорці, налаштування UI, URL публічних ендпоінтів.

Тестуйте кожну зміну перед публікацією на всю аудиторію. Використовуйте A/B тест або публікацію на small percentage (1–5% користувачів) для перевірки, що нове значення не викликає crash і не ламає відображення. Remote Config не має стейджинг-середовища — всі зміни публікуються в production відразу. Єдиний спосіб безпечної публікації — поступовий rollout.

Обмеження платформи: максимальна кількість параметрів — 2000 (для всіх типів), максимальний розмір одного значення — 256 КБ, загальний розмір відповіді сервера — 800 КБ. Кількість користувацьких властивостей (user properties), які можна використовувати в Remote Config, обмежена 25. Мінімальний інтервал fetch — 0 секунд (для налагодження), але зловживання може призвести до перевищення квоти Cloud Functions (30 000 запитів на хвилину на проект).

Часті питання

Чи може Remote Config працювати без інтернету?

Так, при відсутності мережі Remote Config використовує значення за замовчуванням, задані в коді або XML-файлі. Після відновлення з'єднання SDK автоматично виконає fetch при наступному виклику або після закінчення інтервалу кешування. Додаток ніколи не впаде через відсутність Remote Config, якщо коректно задані default values.

Як швидко зміни доходять до користувачів?

За замовчуванням — до 12 годин (інтервал кешування). Для прискорення використовуйте FCM push-сповіщення через кнопку “Publish changes” у консолі: додаток отримує повідомлення і негайно виконує fetch. Мінімальний інтервал fetch для прискорення можна задати через minimumFetchIntervalInSeconds.

Скільки параметрів можна створити безкоштовно?

Безкоштовно — до 2000 параметрів на проект, необмежена кількість запитів на тарифі Spark. Обмеження в 2000 параметрів є м'яким: Firebase не блокує створення нових, але продуктивність може знизитися. Для проектів з тисячами параметрів рекомендується використовувати структуровані JSON-параметри.

Чи можна використовувати Remote Config на Flutter?

Так, Firebase Remote Config має офіційний Flutter-плагін: firebase_remote_config. API повністю відповідає нативним Android та iOS SDK. Плагін підтримує всі типи параметрів, fetchAndActivate, слухачі змін та інтеграцію з Firebase Analytics для A/B-тестування.

Чим Remote Config відрізняється від Firebase Feature Flags?

Firebase Feature Flags — це окремий сервіс для керування функціями з підтримкою цільових аудиторій та експериментів. Remote Config — більш загальний сервіс для будь-яких параметрів, включаючи feature toggles. Feature Flags надають виділений UI та інтеграцію з Cloud Run, але Remote Config залишається основним інструментом для більшості сценаріїв.

Підсумки

  • Firebase Remote Config — хмарний сервіс для керування параметрами додатка без публікації оновлень.
  • Механізм роботи — pull-модель з кешуванням до 12 годин і можливістю push через FCM.
  • Умови дозволяють задавати різні значення для різних груп користувачів на основі атрибутів пристрою.
  • A/B-тестування вбудовано в Remote Config та інтегровано з Firebase Analytics для розрахунку статистичної значущості.
  • Безпека — Remote Config не призначений для зберігання секретів, лише для публічних параметрів.
  • Feature toggles — найпопулярніший сценарій: ввімкнення/вимкнення функцій через один boolean параметр.
  • Best practice — публікація змін на 1–5% аудиторії перед rollout на всіх користувачів.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також