Feature Flags en JavaScript: cómo activar funciones sin hacer deploy

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Feature Flags en JavaScript: Cómo activar funciones sin riesgo ni deploy

\n\n

Imagine: ha escrito una nueva función genial — una búsqueda inteligente con autocompletado. El código está listo, las pruebas pasaron, pero tiene miedo de lanzarlo a todos los usuarios de inmediato. ¿Y si hay un error? ¿Y si a alguien no le gusta? Antes, se quedaría hasta la noche haciendo deploy y luego revertiría versiones. Hoy existe una solución elegante: feature flags (o feature toggles).

\n\n

Los feature flags son banderas en el código que permiten activar o desactivar funcionalidades sin necesidad de un nuevo deploy. Simplemente cambia el valor en la configuración o en el panel de administración, y la función aparece o desaparece. En este artículo, analizaremos cómo usarlos en JavaScript, mostraremos ejemplos de código reales y daremos una lista de verificación para su implementación.

\n\n

¿Qué son los feature flags y por qué se necesitan en JS?

\n\n

Los feature flags (también conocidos como feature toggles o banderas de funciones) son construcciones condicionales simples que controlan si se muestra una nueva función al usuario o no. Funcionan a nivel de código: en lugar de eliminar código antiguo, envuelve el nuevo en una verificación de bandera.

\n\n

¿Por qué se necesitan en proyectos JavaScript?

\n
    \n
  • Canary release (lanzamiento canario) — lanza la función al 5% de los usuarios, monitorea errores y luego la expande.
  • \n
  • Pruebas A/B — muestra diferentes versiones de la interfaz a distintos grupos y compara métricas.
  • \n
  • Desactivación instantánea — si la función rompe la producción, simplemente desactiva la bandera sin hacer deploy.
  • \n
  • Desarrollo sin ramas (trunk-based development) — se puede fusionar código incompleto oculto detrás de una bandera.
  • \n
\n\n

Feature flag simple en JavaScript: ejemplo

\n\n

Empecemos con la opción más básica: una bandera en la configuración. Supongamos que tenemos una función de búsqueda y queremos activar el autocompletado solo para los testers.

\n\n
// config.js\nconst featureFlags = {\n  enableAutocomplete: false, // desactivado por defecto\n  enableDarkMode: true\n};\n\n// search.js\nfunction initSearch() {\n  if (featureFlags.enableAutocomplete) {\n    console.log('Autocompletado activado');\n    loadAutocompleteModule();\n  } else {\n    console.log('Autocompletado desactivado');\n    loadBasicSearch();\n  }\n}\n
\n\n

Cambia enableAutocomplete a true en la configuración y la función se activa. ¿Sencillo? Sí. Pero esto es solo el comienzo. Para producción se necesita más: banderas dinámicas, gestión a través de API, pruebas A/B.

\n\n

Enfoque avanzado: bibliotecas para feature flags

\n\n

Se pueden crear soluciones caseras para las banderas, pero es mejor usar bibliotecas probadas. Aquí están las 3 principales para JavaScript:

\n\n
    \n
  • LaunchDarkly — estándar empresarial. Tiene SDK para React, Vue, Node.js. Soporta pruebas A/B, segmentación y rollout porcentual.
  • \n
  • Flagsmith — alternativa de código abierto. Admite autoalojamiento y nube. Funciona con cualquier framework.
  • \n
  • Unleash — biblioteca ligera de código abierto. Ideal para proyectos pequeños.
  • \n
\n\n

Ejemplo con Unleash:

\n\n
// Instalación: npm install unleash-client\nconst { initialize } = require('unleash-client');\n\nconst unleash = initialize({\n  url: 'https://your-unleash-instance.com/api',\n  appName: 'my-js-app',\n  environment: 'production',\n  customHeaders: { Authorization: 'API-TOKEN' }\n});\n\n// Verificación de bandera\nconst isEnabled = unleash.isEnabled('new-checkout-flow');\nif (isEnabled) {\n  renderNewCheckout();\n} else {\n  renderOldCheckout();\n}\n
\n\n

Estas bibliotecas se sincronizan con el servidor en tiempo real. Si cambia la bandera en el panel, el cliente la recoge en unos segundos (normalmente 30-60 segundos, configurable).

\n\n

Feature flags en React: Hooks y contexto

\n\n

En aplicaciones React, es conveniente usar contexto y hooks personalizados. Aquí hay un ejemplo de arquitectura:

\n\n


                
                

Blogs

Book Recommendations