Руководство по установке GrowthBook
GrowthBook — бесплатная open-source сплит-система. В этом руководстве рассматривается самостоятельная установка через Docker и настройка первого эксперимента — после этого данные об экспозициях готовы к передаче в AB-Labz.
Требования
- Установлены Docker и Docker Compose
- Сервер или локальная машина с доступными портами 3000 и 3100
- iOS или Android приложение со стабильным идентификатором пользователя (например, device_id, user_id)
1. Установка GrowthBook
Склонируйте официальный репозиторий и запустите контейнеры:
git clone https://github.com/growthbook/growthbook.git
cd growthbook
docker-compose up -dGrowthBook запустит два сервиса:
- App (UI + API) на
http://localhost:3000 - MongoDB для хранения данных
Откройте http://localhost:3000 в браузере. При первом запуске появится форма создания аккаунта администратора.
2. Начальная настройка
После входа в систему:
- Создайте организацию — введите название компании
- Установите часовой пояс — важно для правильных границ дат эксперимента
- Перейдите в Features → SDKs и нажмите Add SDK Connection
- Выберите платформу (iOS или Android), дайте название подключению и сохраните
- Скопируйте Client Key — он понадобится на следующем шаге
3. Добавление SDK в приложение
iOS — Swift Package Manager:
В Xcode: File → Add Packages → https://github.com/growthbook/growthbook-swift
Или через Package.swift:
dependencies: [
.package(url: "https://github.com/growthbook/growthbook-swift.git")
]Инициализация при запуске приложения:
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:
// 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 — в Яндекс Метрике это асинхронная операция):
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. Создание первого эксперимента
- Перейдите в Features → Add Feature
- Укажите Feature Key (например,
new_onboarding_flow) и тип Boolean - В правилах фичи нажмите Add Rule → выберите Experiment
- Настройте параметры:
- Tracking Key — идентификатор эксперимента, будет отображаться в данных об экспозициях
- Split — например, 50% / 50%
- Variations —
falseдля контроля,trueдля теста
- Установите среду Production и сохраните
5. Использование эксперимента в приложении
iOS:
let isNewOnboarding = sdkInstance.isOn("new_onboarding_flow")
if isNewOnboarding {
// показать тестовый вариант
} else {
// показать контрольный вариант
}Android:
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 для анализа.
