Feature Flags
Reglas
- Usa feature flags para despliegues graduales — envía código detrás de flags, actívalo de forma incremental
- Tipos de flags: booleana (activado/desactivado), porcentual (10% de usuarios), segmentación por usuario (IDs/segmentos específicos)
- LaunchDarkly para empresas, Flagsmith para código abierto, Vercel Flags o
@vercel/flags para Next.js
- Evalúa flags del lado del servidor por defecto — solo pasa los valores de las flags al cliente, nunca la lógica de evaluación
- Convención de nomenclatura de flags:
enable-new-checkout, show-pricing-v2 — descriptivo, kebab-case
- Limpia las flags después del despliegue completo — las flags obsoletas son deuda técnica; establece fechas de expiración
- Despliegues porcentuales: hashea el ID de usuario para un bucketing consistente — el mismo usuario siempre ve la misma variante
- Por defecto, desactiva la flag para funciones nuevas — falla de forma segura si el servicio de flags no está disponible
- Usa flags para pruebas A/B: define variantes, rastrea eventos de conversión, mide la significancia estadística
- Almacena sobrescrituras de flags en variables de entorno para el desarrollo local
Patrones
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);
Evitar
- Enviar funciones sin una flag — cada nueva función debe ser toggleable
- Dependencias anidadas de flags — mantén la lógica de flags plana e independiente
- Dejar flags en el código después de un rollout al 100% — programa la limpieza en un plazo de 2 semanas
- Evaluación de flags del lado del cliente exponiendo reglas de segmentación — evalúa en el servidor, envía el resultado