Ir al contenido

Feature flags (SDK)

Para crear flags, targeting y mecánica de rollouts, lee la guía de feature flags. Esta página es la superficie del SDK.

// Chequeo booleano — false hasta que cargan los flags, false para keys desconocidas
if (kilden.isFeatureEnabled('new-checkout')) {
renderNewCheckout();
}
// Valor completo — flag booleano o la key de la variante de un flag multivariante
const variant = kilden.getFeatureFlag('pricing-test'); // true | false | "variant-b" | undefined
isFeatureEnabled(key: string): boolean;
getFeatureFlag(key: string): boolean | string | undefined;

Los flags se cargan desde POST {apiHost}/decide en el init y se cachean en memoria durante la sesión. Ningún getter bloquea jamás:

  • isFeatureEnabled devuelve false hasta que cargan los flags.
  • getFeatureFlag devuelve undefined hasta que cargan los flags — así puedes distinguir “apagado” (false) de “todavía no cargó” (undefined). Cada flag del proyecto vuelve en cada respuesta (los inactivos como false), así que una key ausente después de la carga significa que el flag no existe.
kilden.onFeatureFlags((flags) => {
// flags: Record<string, boolean | string>
setupUi(flags['new-checkout'] === true);
});

El callback se dispara cuando los flags cargan por primera vez, en cada recarga, e inmediatamente si te suscribes después de que ya cargaron. Úsalo para evitar renderizar antes de conocer los flags.

Los flags se recargan automáticamente después de identify() y reset() — la evaluación depende del distinct id, así que el SDK converge de inmediato a los valores del nuevo id. Como el bucketing hashea el distinct id, un usuario cerca del límite de un rollout puede legítimamente cambiar de lado al pasar de anónimo a identificado; mira la guía para entender por qué.

No hay opción de bootstrap: la primera evaluación de cada carga de página es siempre una llamada async a /decide. Condiciona la UI que depende de flags a onFeatureFlags en lugar de asumir valores al arrancar.

El primer acceso a un flag por sesión — por cualquiera de los dos getters — emite un evento $feature_flag_called con $flag_key y $flag_value, que alimenta los gráficos de exposición del panel. La deduplicación se basa en $session_id y sobrevive recargas de página; se reinicia cuando la sesión rota. Las keys de flags desconocidas no emiten nada.

Con el opt-out activo, /decide no se llama; los valores cacheados siguen respondiendo.