Repolode
dif-sh

dif-sh/dif

Feature flags и A/B-тесты хранятся в репозитории как Markdown-файлы, а CLI компилирует их в типизированный TypeScript-клиент.

Open source альтернатива:LaunchDarklyOptimizely

Звёзды
129
Форки
0
Открытые issues
1
Последний коммит
4 дня назад

Что это?

dif хранит каждый feature flag и эксперимент в отдельном Markdown-файле с YAML frontmatter. Файлы коммитятся в git рядом с кодом, на который влияют. CLI `dif` проверяет их (веса, ссылки на поверхности, атрибуты аудитории и конфликты экспериментов), а затем компилирует активные файлы в типизированный TypeScript-клиент и файл context.json. Runtime SDK не имеет зависимостей и использует детерминированное распределение по вариантам: пользователь получает один и тот же вариант при загрузке разных страниц и на разных устройствах, без базы данных для назначений и сетевых запросов.

Проект предназначен для Next.js, React и SvelteKit; для каждого фреймворка есть отдельный npm-пакет. Флаги и эксперименты используют общий формат файлов: флаг — это эксперимент, доля которого постепенно увеличивается до 100%. CLI позволяет создать заготовку проекта, подготовить эксперименты, проверить назначение варианта для пользователя командой `dif qa` и зафиксировать выводы, которые помогут при проведении следующих экспериментов на той же поверхности.

Аналитика необязательна. Без publishable key флаги вычисляются локально, и данные никуда не отправляются. Подключение dif.sh Cloud добавляет приём событий и статистический анализ, а пользовательские обработчики событий могут пересылать данные в любой пайплайн. В репозитории также есть навыки для Claude Code и файлы с инструкциями для агентов, помогающие создавать эксперименты и подводить их итоги.

Ключевые возможности

  • 01Флаги и эксперименты хранятся в Markdown-файлах с frontmatter, которые проходят ревью в pull request.
  • 02`dif validate` проверяет веса, ссылки на поверхности, аудитории и конфликты экспериментов.
  • 03`dif build` генерирует типизированный TypeScript-клиент и context.json.
  • 04Детерминированное распределение по вариантам работает одинаково в Rust CLI и TypeScript SDK.
  • 05`dif qa` показывает, какой вариант получит пользователь и почему.
  • 06Необязательное подключение к dif.sh Cloud для приёма событий и анализа.

Сценарии использования

  • Запуск A/B-тестов на сайте Next.js или SvelteKit без размещённой в облаке панели управления флагами.
  • Хранение истории флагов и выводов по экспериментам в git рядом с кодом.
  • Возможность для AI-агентов-разработчиков создавать и отключать флаги, редактируя файлы в репозитории.

Быстрый старт

  1. 1

    Установите dif CLI с помощью npm (требуется Node 20 или новее).

    npm install -g @dif.sh/cli
  2. 2

    Создайте в репозитории каталог dif/, конфигурацию и файлы агента.

    dif init
  3. 3

    Создайте файл нового experiment, откройте его, задайте status: active и выполните dif build.

    dif new home-hero-cta --surface home
  4. 4

    Скомпилируйте active experiment в типизированный клиент TypeScript.

    dif build

Что важно знать

  • Для установки через npm требуется Node 20 или новее; также доступен автономный бинарный файл.
  • Сгенерированный клиент добавлен в gitignore, поэтому перед сборкой приложения CI и среда развертывания должны выполнить dif build.
  • Пакеты npm SDK поддерживают только ESM и не имеют точки входа require().
  • Cloud analytics — необязательная функция, для которой нужен publishable key от dif.sh Cloud.

Темы

Частые вопросы

Что такое dif?
Feature flags и A/B-тесты хранятся в репозитории как Markdown-файлы, а CLI компилирует их в типизированный TypeScript-клиент. dif хранит каждый feature flag и эксперимент в отдельном Markdown-файле с YAML frontmatter. Файлы коммитятся в git рядом с кодом, на который влияют. CLI `dif` проверяет их (веса, ссылки на поверхности, атрибуты аудитории и конфликты экспериментов), а затем компилирует активные файлы в типизированный TypeScript-клиент и файл context.json. Runtime SDK не имеет зависимостей и использует детерминированное распределение по вариантам: пользователь получает один и тот же вариант при загрузке разных страниц и на разных устройствах, без базы данных для назначений и сетевых запросов.
dif можно использовать бесплатно? Какая у него лицензия?
dif распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
dif всё ещё поддерживается?
Активно поддерживается. Последний коммит в dif — 16 окт. 2026 г..
Для чего можно использовать dif?
Запуск A/B-тестов на сайте Next.js или SvelteKit без размещённой в облаке панели управления флагами. Хранение истории флагов и выводов по экспериментам в git рядом с кодом. Возможность для AI-агентов-разработчиков создавать и отключать флаги, редактируя файлы в репозитории.
Как установить dif?
Установите dif CLI с помощью npm (требуется Node 20 или новее).: npm install -g @dif.sh/cli Создайте в репозитории каталог dif/, конфигурацию и файлы агента.: dif init Создайте файл нового experiment, откройте его, задайте status: active и выполните dif build.: dif new home-hero-cta --surface home Скомпилируйте active experiment в типизированный клиент TypeScript.: dif build
Где скачать dif?
Исходный код и инструкции по установке — на GitHub: https://github.com/dif-sh/dif

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Публичная галерея и CLI для просмотра, установки и публикации анимированных пиксельных питомцев, которые плавают поверх рабочего стола и реагируют на Codex и другие coding agents.

4,3 тыс.211TypeScriptMITОбновлён 10 дней назад

Самостоятельно размещаемая панель для отслеживания рынков акций с графиками в реальном времени, ценовыми оповещениями, списками наблюдения и данными о компаниях на базе Next.js и TradingView.

20,5 тыс.2,5 тыс.TypeScriptAGPL-3.0Обновлён 8 часов назад