Налаштування Feature Flags у мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Налаштування Feature Flags у мобільному додатку
Середній
~2-3 дні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Налаштування Feature Flags у мобільному додатку

Feature flags — механізм включення та вимкнення функцій без оновлення додатка. Звучить як дрібниця, але міняє весь процес розробки: trunk-based development стає можливим, релізний потяг відділяється від готовності фіч, й у вас є kill switch на випадок, якщо нова функція ломає production.

Найчастіше застосування — postmortem protection: фіча у prod ломає платіжний флоу у 5% користувачів, команда не може випустити хотфікс за 2 години через ревю App Store. Флаг вимикається за 30 секунд.

Firebase Remote Config як базовий інструмент

Remote Config — найпростіший спосіб реалізувати флаги без дополнительних SDK:

// iOS
let remoteConfig = RemoteConfig.remoteConfig()

// Дефолтні значення — працюють offline та до першого fetch
remoteConfig.setDefaults([
    "new_payment_flow_enabled": false as NSObject,
    "chat_feature_enabled": false as NSObject,
    "max_cart_items": 50 as NSObject
])

remoteConfig.fetch(withExpirationDuration: 300) { status, error in // 5 хвилин
    remoteConfig.activate()
}

// Використання
var isNewPaymentEnabled: Bool {
    remoteConfig.configValue(forKey: "new_payment_flow_enabled").boolValue
}
// Android
val remoteConfig = Firebase.remoteConfig
remoteConfig.setDefaultsAsync(mapOf(
    "new_payment_flow_enabled" to false,
    "chat_feature_enabled" to false
))

remoteConfig.fetchAndActivate().addOnCompleteListener { task ->
    val isNewPaymentEnabled = remoteConfig.getBoolean("new_payment_flow_enabled")
}

Головний мінус Firebase Remote Config — немає гнучкого таргетингу. Флаг ввімкнено для всіх або для сегменту за умовами (країна, версія додатка, аудиторія Firebase). Процентний rollout є, але через інтерфейс A/B Testing.

LaunchDarkly для складного таргетингу

Коли потрібен rollout за конкретними user_id, компаніями або складними правилами:

// iOS LaunchDarkly SDK
import LaunchDarkly

let user = LDUser(key: userId, email: userEmail)
LDClient.start(config: LDConfig(mobileKey: "mob-xxx"), user: user)

// Синхронна перевірка флага
let isEnabled = LDClient.shared.boolVariation(forKey: "new_payment_flow", defaultValue: false)

// З контекстом для логування
let (value, detail) = LDClient.shared.boolVariationDetail(forKey: "new_payment_flow", defaultValue: false)
print("Reason: \(detail.reason)") // RULE_MATCH, FALLTHROUGH, OFF...

LaunchDarkly підтримує targeting rules: ввімкнути флаг для користувачів з plan == "enterprise" або для перших 10% користувачів, відсортованих за user_id. Для поступового rollout це точніше, ніж випадковий відсоток.

Організація флагів у коді

Всі флаги в одному місці — не розкидані по бізнес-логіці:

// FeatureFlags.swift
struct FeatureFlags {
    private let remoteConfig = RemoteConfig.remoteConfig()

    var isNewPaymentFlowEnabled: Bool {
        remoteConfig.configValue(forKey: "new_payment_flow_enabled").boolValue
    }

    var isChatEnabled: Bool {
        remoteConfig.configValue(forKey: "chat_feature_enabled").boolValue
    }

    var maxCartItems: Int {
        Int(remoteConfig.configValue(forKey: "max_cart_items").numberValue)
    }
}

// Використання
if AppDependencies.featureFlags.isNewPaymentFlowEnabled {
    showNewPaymentFlow()
} else {
    showLegacyPaymentFlow()
}

Якщо флаги централізовані, знайти всі місця використання через grep або рефакторинг — завдання хвилин, а не годин.

Жизненний цикл флага: створення → видалення

Флаги накопичуються й стають техдолгом. Хороша практика — флаг живе максимум 3 місяці:

  1. Флаг створений — фіча прихована
  2. Rollout почався — ввімкнути поступово
  3. 100% користувачів на новій версії → флаг = true для всіх
  4. Видалити флаг та мертвий код старої поведінки з кодової бази

Якщо не видаляти — через рік у коді буде 40 флагів, половина з яких давно true для 100% аудиторії.

Що входить до роботи

  • Підключення Remote Config (Firebase) або LaunchDarkly / Statsig
  • Реалізація централізованого FeatureFlags шару
  • Налаштування дефолтних значень для offline-роботи
  • Конфігурація targeting rules та rollout відсотків
  • Налаштування мониторингу флагів у панелі управління
  • Документація жизненного циклу флагів для команди

Сроки

Firebase Remote Config з базовим набором флагів: 0,5–1 день. LaunchDarkly з targeting rules та процентним rollout: 1–2 дні. Вартість розраховується індивідуально.