Feature Flags
Regeln
- Verwende Feature Flags für schrittweise Rollouts – Auslieferung von Code hinter Flags, schrittweise Aktivierung
- Flag-Typen: Boolescher Wert (an/aus), Prozentual (10% der Benutzer), Benutzer-Targeting (bestimmte IDs/Segmente)
- LaunchDarkly für Unternehmen, Flagsmith für Open-Source, Vercel Flags oder
@vercel/flags für Next.js
- Standardmäßig serverseitige Auswertung der Flags – nur Flag-Werte an den Client weitergeben, niemals die Auswertungslogik
- Flag-Benennungskonvention:
enable-new-checkout, show-pricing-v2 – beschreibend, Kebab-Case
- Bereinigung der Flags nach vollständigem Rollout – veraltete Flags sind technische Schulden; setze Ablaufdaten
- Prozentuale Rollouts: Hash der Benutzer-ID für konsistente Gruppenzuweisung – derselbe Benutzer sieht immer dieselbe Variante
- Standardmäßig auf Flag-Aus für neue Funktionen – abgesichert, falls der Flag-Dienst nicht verfügbar ist
- Verwende Flags für A/B-Tests: Definiere Varianten, verfolge Conversion-Ereignisse, messe statistische Signifikanz
- Speichere Flag-Überschreibungen in Umgebungsvariablen für die lokale Entwicklung
Muster
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);
Vermeide
- Auslieferung von Funktionen ohne ein Flag – jede neue Funktion sollte umschaltbar sein
- Verschachtelte Flag-Abhängigkeiten – halte die Flag-Logik flach und unabhängig
- Belassen von Flags im Code nach 100% Rollout – plane die Bereinigung innerhalb von 2 Wochen
- Clientseitige Flag-Auswertung, die Targeting-Regeln offenlegt – werte auf dem Server aus, sende das Ergebnis