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 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.
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.
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.
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.
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.
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)
}
}
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.
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
"new-checkout-flow",
false
)
if (showNewFeature) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
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.
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.
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.
// app/build.gradle
dependencies {
implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}
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.
class CrashReporter {
fun init() {
val client = LDClient.get()
if (client.boolVariation("crash-reporting-enabled", false)) {
Crashlytics.start()
}
}
}
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.
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
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.
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.
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.
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.
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
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.
Lea también