Плагин и опции
Регистрация
// main.ts
import { createApp } from 'vue'
import { FeatureToggles } from 'vue-feature-toggles'
import App from './App.vue'
const app = createApp(App)
app.use(FeatureToggles, {
flags: { newDashboard: true, checkoutFlow: 'v2' },
})
app.mount('#app')Регистрирует глобально компоненты <Feature> и <FeatureVariant> и директиву v-feature, а также предоставляет FeatureProvider, из которого читают useFeature() и подобные. В dev-режиме также автоматически регистрирует интеграцию с Vue DevTools, если установлен @vue/devtools-api. Используете Nuxt 3? См. модуль Nuxt — те же опции, другая регистрация.
Опции
flags
Record<string, FlagDefinition> · по умолчанию: {}
Статические значения флагов. Значение — либо обычный boolean/строка варианта, либо { value, rollout } для процентного раската (см. Постепенный раскат и расписание).
flags: {
newDashboard: true, // булев флаг
checkoutFlow: 'v2', // вариантный флаг
newSearch: { value: true, rollout: 0.2 }, // раскат на 20%
}loader
() => Promise<Record<string, FlagValue>> · по умолчанию: —
Асинхронная функция, получающая флаги с бэкенда. Имеет приоритет над flags, но ниже правил/runtime/URL-переопределений.
loader: async () => {
const res = await fetch('/api/feature-flags')
return res.json()
}reloadInterval
number · по умолчанию: 0 (отключено)
Интервал поллинга для loader, в миллисекундах.
urlOverrides
boolean · по умолчанию: true в dev, false в продакшене
Разрешить query-параметры вида ?feature:flagName=true переопределять флаги без перезагрузки страницы.
urlPrefix
string · по умолчанию: 'feature'
Префикс query-параметра, используемый URL-переопределениями (?<urlPrefix>:flagName=value).
defaultValue
boolean · по умолчанию: false
Значение, возвращаемое для имён флагов, которые нигде не были настроены.
userId
string · по умолчанию: —
Стабильный идентификатор пользователя, используемый для детерминированного распределения флагов { value, rollout } — один и тот же userId всегда попадает на одну и ту же сторону раската. См. Постепенный раскат и расписание.
schedule
Record<string, FlagSchedule> · по умолчанию: —
Автоматически активирует или деактивирует флаг между двумя ISO-датами. См. Постепенный раскат и расписание.
ssrState
Record<string, FlagValue> · по умолчанию: —
Серверный снимок флагов, передаваемый клиенту для предотвращения расхождения при гидратации. См. SSR / гидратация.
liveUpdates
LiveUpdatesOptions · по умолчанию: —
Отправка изменений флагов с сервера через SSE или WebSocket. См. Живые обновления.
variables
Record<string, Record<string, unknown>> · по умолчанию: —
Значения, привязанные к флагу, читаемые через getVariable(). Разделяют собственную цепочку приоритетов флага и могут быть переопределены через URL или setVariable().
variables: {
newCheckout: { maxItems: 5, theme: 'dark' },
}groups
Record<string, string[]> · по умолчанию: —
Именованные наборы флагов, которые можно переключать вместе через setGroup()/isGroupEnabled().
groups: {
beta: ['betaSearch', 'newDashboard'],
maintenance: ['maintenanceMode', 'readOnlyBanner'],
}dependencies
Record<string, string[]> · по умолчанию: —
Автоматически принудительно выключает флаг, когда любой флаг, от которого он зависит, отключён.
dependencies: {
aiSuggestions: ['newSearch'], // aiSuggestions принудительно выключен, если newSearch выключен
}rules
Record<string, () => boolean> · по умолчанию: —
Контекстные правила — реактивные функции, вычисляемые как источник флага, приоритет ниже URL-переопределений/setFlag(), выше loader/статических флагов.
rules: {
darkMode: () => window.matchMedia('(prefers-color-scheme: dark)').matches,
}meta
Record<string, FlagMeta> · по умолчанию: —
Описательные метаданные на флаг (description, owner, addedAt, ticket), отображаемые в <FeatureDevTools> и CLI.
meta: {
newDashboard: { description: 'New UI', owner: 'alice', addedAt: '2025-03-01', ticket: 'PROJ-42' },
}expiry
Record<string, string> · по умолчанию: —
ISO-дата на флаг — после этой даты флаг считается истёкшим (возвращает defaultValue, предупреждает в консоли разработчика).
expiry: {
christmasBanner: '2025-01-10',
}