Flag Consumption — alpine-devtools-flags

Datafile URLs

Production: https://flags.alpinedevtools.com/production/featurevisor-all.json
Staging:    https://flags.alpinedevtools.com/staging/featurevisor-all.json

SDK

Use @featurevisor/sdk (npm). Create once:

import { createFeaturevisor } from '@featurevisor/sdk'

const f = createFeaturevisor({
  datafileUrl: 'https://flags.alpinedevtools.com/production/featurevisor-all.json',
  // or fetch and pass datafile directly
})

Available context (attributes)

Key Type Description
userId string Anonymous user UUID
buildType string "ea" or "ga"
extensionVersion string Semver
alpineVersion string Alpine.js version on page
openCount integer Times devtools panel opened
browser string "chrome", "firefox", "safari", "edge", "other"

Feature: rate_prompt

Controls Chrome Web Store rating prompt. Always enabled — uses variables for thresholds.

const vars = f.getVariable('rate_prompt', 'min_opens', {
  userId,
  buildType,
  openCount,
})
Variable Default EA+Engaged Staging
min_opens 100 50 10
cooldown_days 30 30 1

Evaluation logic (implement in extension)

const vars = f.getVariables('rate_prompt', context)
const promptCount = getStoredPromptCount()
const lastPromptDate = getStoredLastPromptDate()

if (promptCount >= vars.min_opens && daysSince(lastPromptDate) >= vars.cooldown_days) {
  showPrompt()
}

Flag health

curl https://flags.alpinedevtools.com/production/featurevisor-all.json
# 200 OK, content-type: application/json