Skip to content

Feature Toggles ​

Лёгкий, независимый от бэкенда плагин фича-флагов для Vue 3 — булевы и мультивариантные флаги, контекстные правила, URL-переопределения, живые обновления, SSR-гидратация, оверлей DevTools и CLI — с единственной peer-зависимостью.

Возможности ​

  • Плагин FeatureToggles — плагин Vue со статическими флагами, асинхронным загрузчиком, интервалом поллинга, URL-переопределениями, состоянием SSR и живыми обновлениями в одном вызове app.use()
  • Компонент <Feature> — условный рендеринг через слоты default / fallback / loading; инвертированный режим; проверки групп; опциональный HTML-тег обёртки
  • Директива v-feature — переключение в стиле v-show (display: none) для одного флага, инвертированных флагов или проверки AND по нескольким флагам
  • useFeature — composable, возвращающий реактивный Ref<boolean> на флаг или Record<string, Ref<boolean>> для нескольких флагов
  • Мультивариантные флаги — строковые варианты для A/B-тестов и постепенных раскаток; composable useFeatureVariant; <FeatureVariant> с именованными слотами на вариант
  • useFeatureProvider — полный низкоуровневый API: setFlag, resetFlag, reload, watchFlag, группы, профили, переменные, зависимости, срок действия и многое другое
  • Контекстные правила — реактивные функции, вычисляемые как источники флагов; приоритет ниже URL-переопределений и setFlag, выше загрузчика и статики
  • Постепенный раскат по процентам — определения флагов { value, rollout } детерминированно распределяют пользователей по userId без бэкенда
  • Расписание — автоматически активирует или деактивирует флаг между двумя датами, независимо от ручных переопределений
  • URL-переопределения — query-параметры переопределяют флаги без перезагрузки страницы; настраиваемый префикс; работает для булевых и вариантных флагов и переменных
  • Персистентные переопределения — setFlag(..., { persist: true })/setVariant(..., { persist: true }) сохраняет в localStorage; переживает перезагрузки страницы; clearPersistedFlags() для очистки
  • Профили переопределений — именованные наборы переопределений, хранимые в localStorage; переключаются из панели DevTools; полезны для QA и демо
  • Группы флагов — setGroup('beta', false) переключает целую группу разом; isGroupEnabled равно true, только когда включены все участники
  • Зависимости флагов — зависимый флаг принудительно выключается, когда требуемый им флаг отключён; нарушения раскрываются через getDependencyViolations()
  • Живые обновления — push через SSE или WebSocket; сервер отправляет только изменённые флаги; автоматическое переподключение
  • Метаданные флагов и срок действия — description, owner, addedAt, ticket для каждого флага; автоматическое истечение по дате с предупреждениями в консоли разработчика
  • <FeatureDevTools> — плавающий оверлей с вкладками Flags / Groups / History; поиск, фильтр по источнику, элементы управления для каждого флага, редактор переменных, переключатель профилей; перетаскиваемый, сворачиваемый
  • Интеграция с Vue DevTools — опциональный @vue/devtools-api; вкладка инспектора и слой таймлайна; загружается динамически, тихо пропускается при отсутствии
  • Модуль Nuxt — глобальная регистрация компонентов, авто-импорт composable-функций, автоматическая SSR-гидратация через nuxtApp.payload, внедрение $featureToggles, configFile для функциональных loader/rules
  • Утилиты для тестирования — withFeatures, createTestFeatureProvider, setTestFlag, resetTestProvider; исключены из продакшен-бандла
  • Аддон Storybook — декоратор withFeatureToggles с parameters.featureToggles на каждую историю; исключён из продакшен-бандла
  • Адаптеры-загрузчики — готовые загрузчики для LaunchDarkly, Unleash и Flagsmith
  • Плагин Vite — автоматически удаляет <FeatureDevTools> из шаблонов в продакшен-сборках
  • CLI — команды list, check, stale; читает конфигурацию прямо из исходных файлов; безопасные для CI коды выхода
  • Полный TypeScript — расширяйте интерфейс FeatureFlagNames для автодополнения и ошибок на этапе компиляции по именам флагов везде