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для автодополнения и ошибок на этапе компиляции по именам флагов везде