LaunchDarkly: qué es, flags de funciones y cómo funcionan

Autor: IT Sectr Publicado: 2026-04-13 Tiempo de lectura: 8 min

LaunchDarkly es una plataforma de gestión de flags de funciones que permite a los desarrolladores de aplicaciones móviles activar y desactivar funcionalidades sin necesidad de redespilogue. Según LaunchDarkly, 2024, más de 4000 empresas utilizan el servicio para lanzamientos seguros de funciones, pruebas A/B y despliegue gradual en tiempo real.

Puntos clave

  • LaunchDarkly es una plataforma de gestión de flags de funciones para el despliegue seguro y la prueba de nuevas capacidades
  • Feature flag es un interruptor que controla la disponibilidad de una función sin modificar el código de la aplicación
  • SDK sincroniza el estado de los flags en tiempo real mediante una conexión SSE con el servidor
  • Despliegue gradual activa una función para un porcentaje seleccionado de usuarios con capacidad de retroceso instantáneo
  • Pruebas A/B se basan en flags multivariantes con distribución automática de tráfico entre variantes

¿Qué es LaunchDarkly?

LaunchDarkly es una plataforma de gestión de flags de funciones fundada en 2014 por Catamorphic Corp. El objetivo principal del servicio es permitir a los equipos de desarrollo activar, desactivar y configurar funciones de la aplicación en tiempo real sin necesidad de desplegar nuevo código.

A diferencia del enfoque tradicional, donde lanzar una nueva funcionalidad requiere publicar una versión en la tienda de aplicaciones, LaunchDarkly permite cambiar el comportamiento de forma remota. Para el desarrollo móvil, esto es especialmente importante: la revisión en App Store y Google Play puede tardar desde varias horas hasta un día, mientras que un flag se puede activar en segundos.

Cómo funciona la plataforma LaunchDarkly

La arquitectura de LaunchDarkly se compone de tres componentes: el servidor de flags, los SDK cliente y el panel de control. El servidor almacena las configuraciones de los flags, las reglas de segmentación y los segmentos de usuarios. El SDK mantiene una conexión SSE persistente con el servidor para recibir actualizaciones en tiempo real.

Cuando se modifica un flag en el panel, el servidor envía una actualización a todos los SDK conectados. La latencia es de 200 a 500 milisegundos. Cuando se pierde la conexión, el SDK utiliza el último estado almacenado en caché hasta que se restablece el canal. Esto garantiza que la aplicación siga funcionando con la configuración más reciente disponible al momento de la desconexión.

El panel de control de LaunchDarkly proporciona una interfaz visual para crear y gestionar flags. El panel muestra el estado actual de cada flag, el historial de cambios con auditoría de quién modificó la configuración y cuándo, así como métricas de uso. Se pueden configurar reglas independientes para cada entorno: un flag puede estar activado al 100% en staging y al 5% en producción.

Conceptos clave de LaunchDarkly

Feature flag es un interruptor con nombre que tiene reglas y objetivos. Los flags pueden ser booleanos, multivariantes y JSON. Las reglas definen las condiciones de activación, por ejemplo: “activar para el 10% de los usuarios de Android 12 de Alemania”. Los segmentos agrupan a los usuarios por versión del SO, región, modelo de dispositivo y atributos personalizados.

Cada flag tiene entornos: desarrollo, staging y producción. Esto permite probar una nueva función en un entorno aislado antes de activarla para usuarios reales. Las reglas de los entornos se configuran de forma independiente: un flag puede estar activado en staging y desactivado en producción.

SDK e integración con aplicaciones móviles

LaunchDarkly proporciona SDK nativos para Android, iOS, React Native y Flutter. Cada SDK requiere una configuración mínima: una clave de SDK y un identificador de usuario. La biblioteca gestiona automáticamente las conexiones, el almacenamiento en caché y el manejo de errores.

Inicialización del SDK de Android

Para conectarse, se crea una instancia de LDClient en Application.onCreate. El cliente acepta una configuración con una clave móvil y el contexto del usuario. Tras la inicialización, la aplicación puede consultar la variación de un flag en cualquier parte del código mediante el método boolVariation.

kotlin
class MyApplication : Application() {
    private lateinit var ldClient: LDClient

    override fun onCreate() {
        super.onCreate()
        val config = LDConfig.Builder("mobile-key-abc123")
            .build()
        val user = LDUser.Builder("user-unique-id")
            .build()
        ldClient = LDClient.init(this, config, user)
    }
}

Lectura y suscripción a cambios de flags

Después de la inicialización, comprobar un flag se realiza con un único método. BoolVariation devuelve el valor según las reglas del flag. El valor por defecto se utiliza si el SDK no pudo obtener la configuración. El método boolVariationDetail devuelve adicionalmente el motivo por el que el flag adoptó ese valor.

kotlin
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
    "new-checkout-flow",
    false
)
if (showNewFeature) {
    showNewCheckoutScreen()
} else {
    showLegacyCheckoutScreen()
}

Pruebas A/B y despliegue gradual mediante LaunchDarkly

Las pruebas A/B en LaunchDarkly se implementan mediante flags multivariantes. A cada variante se le asigna un porcentaje de tráfico, por ejemplo, el 50% de los usuarios ve la pantalla antigua (variante A) y el 50% ve la nueva (variante B). La plataforma fija al usuario, garantizando que siempre pertenezca al mismo grupo.

El despliegue gradual aumenta de forma incremental el porcentaje de usuarios con acceso a una función. Un calendario típico: 1% — primer día, 5% — segundo, 25% — tercero, 100% — después de una semana. Si se detecta un error, el flag se desactiva al instante para todos. LaunchDarkly se integra con Amplitude, Mixpanel y Google Analytics para el seguimiento de métricas de cada variación.

Métricas y experimentos

La plataforma dispone de un sistema de experimentos integrado que calcula automáticamente la significación estadística de las diferencias entre variantes. Métricas disponibles: conversión, retención, número de sesiones, errores y eventos personalizados. Los resultados se muestran en el panel con visualización de intervalos de confianza. Los experimentos pueden ejecutarse tanto en tráfico de producción como en segmentos de usuarios específicos.

La integración de LaunchDarkly con plataformas de análisis es otra ventaja. Los datos de los flags se envían automáticamente a Amplitude, Mixpanel, Google Analytics o a un pipeline de datos propio a través de la API Data Export. Esto permite crear informes sobre el impacto de cada función en las métricas clave de la aplicación. LaunchDarkly también admite webhooks para notificar a sistemas externos sobre cambios en el estado de los flags.

Ejemplo de integración del SDK de LaunchDarkly en Android

Veamos el ciclo completo: añadir la dependencia, inicializar y comprobar un flag para la telemetría de fallos. La función solo debe estar activa para los evaluadores, no para los usuarios reales. El SDK de LaunchDarkly para Android está disponible a través de Maven Central. La versión 5.x es compatible con Kotlin Coroutines y Jetpack Compose para la recepción reactiva de actualizaciones de flags.

Para aplicaciones iOS, LaunchDarkly proporciona soporte para Swift Package Manager y CocoaPods. El SDK de Swift utiliza async/await para la inicialización asíncrona y el framework Combine para la suscripción a cambios. Ambos SDK (Android e iOS) admiten la sincronización en segundo plano y el almacenamiento en caché local para funcionar sin conexión.

Dependencia en build.gradle

groovy
// app/build.gradle
dependencies {
    implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}

Comprobación de flag en CrashReporter

En la clase CrashReporter comprobamos el flag crash-reporting-enabled. Si el flag está activado para el usuario actual, iniciamos el envío de informes de fallos. El SDK recibirá automáticamente el nuevo estado cuando cambie en el servidor, pero una única comprobación es suficiente para la inicialización.

kotlin
class CrashReporter {
    fun init() {
        val client = LDClient.get()
        if (client.boolVariation("crash-reporting-enabled", false)) {
            Crashlytics.start()
        }
    }
}

Escenarios comunes y anti-patrones

Escenarios exitosos: gestión del flujo de pago con desactivación instantánea ante fallos del proveedor, despliegue gradual de cambios de UI con supervisión de métricas, personalización de contenido por segmentos. Según el blog oficial de LaunchDarkly, los equipos reducen el tiempo de recuperación de errores de horas a minutos.

Anti-patrones: usar flags para lógica condicional permanente (los flags son temporales), almacenar secretos en atributos de flags, crear reglas superpuestas. Recomendación: elimine el flag del código una vez finalizado el despliegue — esto evita deuda técnica y complejidad en la base de código. Otro error común es usar flags como interruptores de larga duración que nunca se eliminan del código tras estabilizar la función.

Una estrategia adecuada de gestión de flags incluye un plan de eliminación para cada nuevo flag. LaunchDarkly proporciona herramientas integradas para detectar flags no utilizados: un flag se considera no utilizado si el SDK no ha consultado su valor durante más de 30 días. Estos flags se marcan en el panel y pueden eliminarse del código de forma segura.

Cuándo evitar LaunchDarkly

Para proyectos pequeños con un solo equipo, LaunchDarkly puede ser excesivo — basta con un condicional simple en el código o Firebase Remote Config. Elija la plataforma cuando necesite segmentación compleja, auditoría de cambios, experimentos A/B o gestión de flags en múltiples equipos. Para startups y proyectos MVP, LaunchDarkly ofrece un plan Starter gratuito con límites en el número de flags y MAU.

La compatibilidad de LaunchDarkly con las herramientas existentes es un criterio de selección importante. La plataforma se integra con Jira, Slack, PagerDuty, Datadog y otros servicios mediante webhooks y API. Los equipos que ya utilizan estas herramientas obtienen una integración perfecta sin necesidad de infraestructura adicional para la supervisión y alertas sobre cambios en el estado de los flags. LaunchDarkly también admite un proveedor de Terraform para gestionar flags como código (Flags as Code), lo que permite almacenar la configuración de los flags en Git y someterla a revisión de código antes de aplicarla.

Preguntas frecuentes

¿Cuánto cuesta LaunchDarkly?

LaunchDarkly ofrece un plan Freemium con límites en el número de flags y MAU. Los planes comerciales para equipos comienzan desde $150 al mes e incluyen flags ilimitados, auditoría de cambios e integración con Jira y Slack.

¿Qué SDK móviles admite LaunchDarkly?

La plataforma admite más de 40 SDK, incluidos los nativos para Android (Kotlin/Java), iOS (Swift/Objective-C), React Native y Flutter. Todos los SDK móviles funcionan a través de la API Streaming con almacenamiento en caché local.

¿Se puede usar LaunchDarkly para pruebas A/B?

Sí, LaunchDarkly dispone de un sistema de experimentos integrado con flags multivariantes, distribución de tráfico y cálculo automático de la significación estadística. Se admite la integración con Amplitude, Mixpanel y Google Analytics.

¿Cómo funciona el SDK sin conexión a internet?

Cuando se pierde la conexión, el SDK utiliza los valores almacenados en caché de los flags. Una vez restablecida la conexión, el SDK se sincroniza con el servidor y aplica los estados actuales de los flags.

¿En qué se diferencia LaunchDarkly de Firebase Remote Config?

LaunchDarkly proporciona pruebas A/B, flags multivariantes, segmentación avanzada, auditoría de cambios y SDK para lenguajes de servidor. Firebase Remote Config es más simple y gratuito, pero no admite experimentos multivariantes ni auditoría detallada.

Resumen

  • LaunchDarkly es una plataforma de gestión de flags de funciones para el despliegue seguro de nuevas capacidades en aplicaciones móviles
  • Feature flag admite tipos booleanos, multivariantes y JSON con reglas de segmentación basadas en perfiles de usuario
  • SDK para Android, iOS, React Native y Flutter sincronizan flags en tiempo real mediante conexión SSE
  • Despliegue gradual reduce riesgos: un flag se desactiva al instante al detectar un problema sin necesidad de revertir la versión
  • Pruebas A/B se basan en flags multivariantes con distribución automática e informes estadísticos
  • Segmentación por versión del SO, región, modelo de dispositivo y atributos permite una activación precisa
  • Se recomienda eliminar los flags obsoletos del código para evitar la acumulación de lógica condicional

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también