Feature Flags
Regras
- Use feature flags para rollouts graduais — envie código atrás de flags, habilite incrementalmente
- Tipos de flag: booleana (ligado/desligado), percentual (10% dos usuários), segmentação de usuário (IDs/segmentos específicos)
- LaunchDarkly para enterprise, Flagsmith para código aberto, Vercel Flags ou
@vercel/flags para Next.js
- Avalie flags no servidor por padrão — apenas passe os valores das flags para o cliente, nunca a lógica de avaliação
- Convenção de nomenclatura de flags:
enable-new-checkout, show-pricing-v2 — descritivo, kebab-case
- Limpe as flags após o rollout completo — flags obsoletas são dívida técnica; defina datas de expiração
- Rollouts percentuais: faça hash do ID do usuário para agrupamento consistente — o mesmo usuário sempre vê a mesma variante
- Padrão: flag desligada para novos recursos — falhe de forma segura se o serviço de flags estiver indisponível
- Use flags para testes A/B: defina variantes, monitore eventos de conversão, meça significância estatística
- Armazene sobrescritas de flags em variáveis de ambiente para desenvolvimento local
Padrões
import { flag } from "@vercel/flags/next";
export const showNewCheckout = flag({
key: "show-new-checkout",
decide: () => false,
});
const enabled = await showNewCheckout();
import * as ld from "@launchdarkly/node-server-sdk";
const client = ld.init(process.env.LAUNCHDARKLY_SDK_KEY!);
const showFeature = await client.variation("new-checkout", user, false);
Evite
- Enviar funcionalidades sem uma flag — todo novo recurso deve poder ser alternado
- Dependências aninhadas de flags — mantenha a lógica de flags plana e independente
- Deixar flags no código após 100% de rollout — agende a limpeza em até 2 semanas
- Avaliação de flags no lado do cliente expondo regras de segmentação — avalie no servidor, envie o resultado