Skip to content

Руководство по установке GrowthBook

GrowthBook — бесплатная open-source сплит-система. В этом руководстве рассматривается самостоятельная установка через Docker и настройка первого эксперимента — после этого данные об экспозициях готовы к передаче в AB-Labz.

Требования

  • Установлены Docker и Docker Compose
  • Сервер или локальная машина с доступными портами 3000 и 3100
  • iOS или Android приложение со стабильным идентификатором пользователя (например, device_id, user_id)

1. Установка GrowthBook

Склонируйте официальный репозиторий и запустите контейнеры:

bash
git clone https://github.com/growthbook/growthbook.git
cd growthbook
docker-compose up -d

GrowthBook запустит два сервиса:

  • App (UI + API) на http://localhost:3000
  • MongoDB для хранения данных

Откройте http://localhost:3000 в браузере. При первом запуске появится форма создания аккаунта администратора.

2. Начальная настройка

После входа в систему:

  1. Создайте организацию — введите название компании
  2. Установите часовой пояс — важно для правильных границ дат эксперимента
  3. Перейдите в Features → SDKs и нажмите Add SDK Connection
  4. Выберите платформу (iOS или Android), дайте название подключению и сохраните
  5. Скопируйте Client Key — он понадобится на следующем шаге

3. Добавление SDK в приложение

iOS — Swift Package Manager:

В Xcode: File → Add Packages → https://github.com/growthbook/growthbook-swift

Или через Package.swift:

swift
dependencies: [
    .package(url: "https://github.com/growthbook/growthbook-swift.git")
]

Инициализация при запуске приложения:

swift
import GrowthBook

var sdkInstance: GrowthBookSDK = GrowthBookBuilder(
    apiHost: "http://YOUR_SERVER:3100",
    clientKey: "sdk-YOUR_CLIENT_KEY",
    attributes: ["id": YMMYandexMetrica.deviceID() ?? UIDevice.current.identifierForVendor?.uuidString ?? ""],
    trackingCallback: { experiment, result in
        // запишите экспозицию в ваше хранилище данных
        print("Experiment: \(experiment.key), Variant: \(result.key)")
    }
).initialize()

Android — Gradle:

kotlin
// build.gradle (app)
repositories {
    mavenCentral()
}

dependencies {
    implementation 'io.growthbook.sdk:GrowthBook:7.1.0'
    // выберите один сетевой диспетчер:
    implementation 'io.growthbook.sdk:NetworkDispatcherKtor:1.0.12'   // Android + iOS + JVM
    // implementation 'io.growthbook.sdk:NetworkDispatcherOkHttp:1.0.7' // только Android + JVM
}

Инициализация (после получения device ID — в Яндекс Метрике это асинхронная операция):

kotlin
import com.sdk.growthbook.GBSDKBuilder

val gb = GBSDKBuilder(
    apiKey = "sdk-YOUR_CLIENT_KEY",
    hostURL = "http://YOUR_SERVER:3100/",
    attributes = hashMapOf("id" to deviceId),
    trackingCallback = { experiment, result ->
        // запишите экспозицию в ваше хранилище данных
        Log.d("GrowthBook", "Experiment: ${experiment.key}, Variant: ${result.variationId}")
    }
).initialize()

Примечание: на Android метод getDeviceID Яндекс Метрики работает асинхронно — инициализируйте GrowthBook только после получения device ID.

4. Создание первого эксперимента

  1. Перейдите в FeaturesAdd Feature
  2. Укажите Feature Key (например, new_onboarding_flow) и тип Boolean
  3. В правилах фичи нажмите Add Rule → выберите Experiment
  4. Настройте параметры:
    • Tracking Key — идентификатор эксперимента, будет отображаться в данных об экспозициях
    • Split — например, 50% / 50%
    • Variationsfalse для контроля, true для теста
  5. Установите среду Production и сохраните

5. Использование эксперимента в приложении

iOS:

swift
let isNewOnboarding = sdkInstance.isOn("new_onboarding_flow")

if isNewOnboarding {
    // показать тестовый вариант
} else {
    // показать контрольный вариант
}

Android:

kotlin
val isNewOnboarding = gb.isOn("new_onboarding_flow")

if (isNewOnboarding) {
    // показать тестовый вариант
} else {
    // показать контрольный вариант
}

SDK назначает пользователя детерминированно на основе атрибута id — один и тот же пользователь всегда получает один и тот же вариант.

6. Проверка записи экспозиций

trackingCallback, указанный при инициализации, срабатывает каждый раз, когда пользователь попадает в эксперимент. Используйте его для записи в ваше хранилище данных:

user_id | experiment_id        | variant   | timestamp
--------|----------------------|-----------|----------
u_123   | new_onboarding_flow  | control   | 2026-05-25 10:34:12
u_456   | new_onboarding_flow  | treatment | 2026-05-25 10:35:01

Это станет таблицей экспозиций — источником для датамарта AB-Labz.

Что дальше

GrowthBook запущен и распределяет пользователей по группам эксперимента. Следующий шаг — построение датамарта, объединяющего экспозиции с данными о событиях, и подключение его к AB-Labz для анализа.

Подготовка датамарта эксперимента

AB-Labz - Лаборатория продуктовых экспериментов