Saltar al contenido

Un almacén de datos reactivo y un motor de sincronización pequeños y sin dependencias para aplicaciones JavaScript. Ofrece suscripciones granulares para que las interfaces solo se vuelvan a renderizar cuando cambien los datos relevantes, lo que mantiene las aplicaciones rápidas y predecibles.

Los datos se pueden modelar como pares clave-valor sencillos o como estructuras tabulares con filas y celdas. Entre sus funciones integradas se incluyen esquemas con valores predeterminados e inferencia de tipos, índices para búsquedas rápidas, métricas para agregaciones, relaciones entre tablas, un sistema de puntos de control para deshacer y rehacer, y un motor de consultas similar a SQL (TinyQL) que permite seleccionar, combinar, filtrar y agrupar datos de forma reactiva.

Está diseñado para flujos de trabajo local-first y offline-first, y ofrece compatibilidad nativa con CRDT mediante MergeableStore para sincronizar y combinar datos de forma determinista entre clientes y servidores. Permite guardar datos en el almacenamiento del navegador y en IndexedDB, así como en bases de datos como SQLite y PostgreSQL, y se integra con Yjs y Automerge.

Las vinculaciones opcionales para React incluyen hooks y componentes de interfaz ligeros para crear interfaces totalmente reactivas, además de un Inspector integrado en la aplicación para ver y editar datos del almacén en tiempo real durante el desarrollo. A pesar de su amplitud, el núcleo sigue siendo pequeño (alrededor de 5.3kB–11.7kB comprimido con gzip), está completamente documentado y se somete a pruebas rigurosas.

Características

  • Almacén de datos reactivo en memoria
  • Modelos de datos clave-valor y tabulares
  • Escuchas y suscripciones granulares
  • Motor de consultas TinyQL (select/join/filter/group)
  • Índices para búsquedas rápidas
  • Métricas y agregaciones
  • Relaciones entre tablas
  • Esquemas con valores predeterminados e inferencia de tipos
  • Puntos de control para deshacer y rehacer
  • CRDT nativo MergeableStore
  • Sincronización mediante WebSockets, BroadcastChannel y transportes personalizados
  • Persistencia en el almacenamiento del navegador y en IndexedDB
  • Persistencia en bases de datos SQLite y PostgreSQL (y variantes como Bun/Expo SQLite)
  • Integraciones con Yjs, Automerge, CR-SQLite, PGlite, ElectricSQL, Turso, PartyKit y Cloudflare Durable Objects
  • Hooks opcionales para React y componentes preintegrados (ui-react, ui-react-dom)
  • Herramienta de desarrollo Inspector de datos integrada en la aplicación
  • Diseño local-first y compatible con el trabajo sin conexión
  • Paquete muy pequeño y sin dependencias
  • Cobertura de pruebas del 100% y documentación exhaustiva

Elementos relacionados

Legend State

Esta potente biblioteca simplifica la gestión del estado en tus aplicaciones y facilita el manejo de datos complejos.

MobX

Esta solución de gestión del estado permite integrar datos dinámicos en sus aplicaciones y adaptarse a los cambios sin esfuerzo.

Redux Toolkit

Un completo conjunto de herramientas diseñado para agilizar y mejorar el desarrollo con Redux, y garantizar que las aplicaciones sean predecibles y fáciles de mantener.

valtio

Esta biblioteca simplifica la gestión del estado basada en proxies para aplicaciones modernas y mejora la experiencia de desarrollo gracias a una renderización eficiente y una manipulación sencilla del estado.

TanStack DB

Almacén reactivo del lado del cliente con consultas en tiempo real y mutaciones optimistas para interfaces coherentes en menos de un milisegundo y sincronización en tiempo real.

Jotai

Una solución potente y ligera para gestionar el estado, que adopta un enfoque atómico en aplicaciones React.

MobX-State-Tree

Una biblioteca completa que simplifica la gestión del estado mediante un enfoque estructurado para manejar estados mutables.

TanStack Router

Una biblioteca de enrutamiento moderna y escalable, diseñada específicamente para React y especializada en la seguridad de tipos y la gestión eficiente de datos.