Descripción general
Los SDKs de JavaScript — un núcleo compartido, un adaptador ligero por framework.
Los SDKs de JavaScript de Flagward son un núcleo compartido y un adaptador ligero por framework.
| Paquete | npm | Qué es |
|---|---|---|
@flagward/core | @flagward/core | El cliente, el evaluador de reglas y el reporte por consola. Sin asunciones de framework más allá de las APIs del navegador que protege. |
@flagward/react | @flagward/react | El adaptador de React: un provider, useFlag y useFlags. |
@flagward/vue | @flagward/vue | El adaptador de Vue: un plugin, useFlag y useFlags. |
@flagward/solid | @flagward/solid | El adaptador de Solid: un provider, useFlag y useFlags. |
@flagward/svelte | @flagward/svelte | El adaptador de Svelte: setFlagward, useFlag y useFlags, construidos sobre svelte/store. |
@flagward/openfeature-web | @flagward/openfeature-web | Un provider web de OpenFeature, para aplicaciones que evalúan flags con @openfeature/web-sdk. |
Cada adaptador reexporta @flagward/core, así que instalar el adaptador de
tu framework es suficiente — nunca necesitas ambos.
Instalación
npm install @flagward/reactPor qué un núcleo compartido
El cliente, el evaluador de reglas, el logger y los tipos no tienen ningún import de framework — un adaptador de framework es un provider y dos o tres bindings encima de ellos. El evaluador existe una sola vez, y cada adaptador depende de él, así que el mismo usuario, la misma flag y el mismo servidor se responden de la misma forma sin importar qué framework preguntó.
Cómo funciona la evaluación
Un SDK descarga el conjunto completo de flags y sus reglas de segmentación
para el entorno al que pertenece tu clave de API, y luego evalúa cada flag
localmente, en tu propio proceso. Las reglas se evalúan contra un
contexto que tú proporcionas — atributos del usuario como plan, país o id —
bajo AND u OR, probadas en orden de prioridad; gana la primera
coincidencia. Operadores admitidos: EQUALS, NOT_EQUALS, GREATER_THAN,
LESS_THAN, IN_LIST, CONTAINS.
getFlag/useFlag nunca lanzan un error. Una flag que no está en el entorno
se lee como undefined, así que tu propio fallback decide qué ocurre, y el
motivo se reporta en la consola una sola vez.
Actualizaciones en vivo
Cada adaptador abre un stream de Server-Sent Events y mantiene el snapshot local sincronizado con el servidor:
- Una flag cambiada en el servidor llega a cada componente en menos de un segundo.
- Volver a estar en línea vuelve a leer las flags — una conexión interrumpida significa eventos perdidos, así que reconectar por sí solo serviría un valor obsoleto indefinidamente.
- Volver a una pestaña que estaba en segundo plano hace lo mismo, ya que una máquina que despierta de la suspensión pierde su conexión sin que el navegador llegue a reportar la red como caída.
- Donde no hay
EventSource— renderizado en servidor, React Native, Node plano — las actualizaciones en vivo se reportan como apagadas y el SDK sigue sirviendo las flags que ya leyó.
Un fallo nunca se propaga a tu aplicación: las flags mantienen sus últimos valores conocidos, y tu propio fallback decide qué ve el usuario.
Reporte de errores
Cada fallo del que un SDK se recupera se reporta una vez por carga de
página, con el prefijo [Flagward]. logLevel lo acota:
| Valor | Reporta |
|---|---|
"warn" (por defecto) | todo: flags desconocidas, streams caídos, fallos de red |
"error" | solo lo que no puede funcionar en absoluto: una clave de API ausente o rechazada, un provider ausente |
"silent" | nada |
Autoalojamiento
host es opcional en cada SDK y por defecto apunta al servicio alojado en
https://app.flagward.com. Una instalación autoalojada pasa el suyo propio
— consulta Autoalojamiento.
Registro
Cada adaptador se identifica a sí mismo al registrarse con el servidor (el
núcleo como JAVASCRIPT, los adaptadores como REACT, VUE, SOLID,
SVELTE, y el provider de OpenFeature como OPENFEATURE_WEB), de modo que
el panel muestra lo que la aplicación realmente instaló.
Formato de módulo
Cada paquete se distribuye solo como ESM, con declaraciones de tipos. No hay build de CommonJS.