Перейти к содержимому

Миниатюрное реактивное хранилище данных без зависимостей и движок синхронизации для приложений на JavaScript. Точечные подписки позволяют интерфейсу перерисовываться только при изменении относящихся к нему данных, обеспечивая быстродействие и предсказуемую работу приложений.

Данные можно представлять в виде простых пар ключ-значение или таблиц со строками и ячейками. Встроенные возможности включают схемы со значениями по умолчанию и выводом типов, индексы для быстрого поиска, метрики для агрегирования, связи между таблицами, систему контрольных точек с отменой и повтором действий, а также язык запросов, близкий к SQL (TinyQL), для реактивного выбора, соединения, фильтрации и группировки данных.

Инструмент разработан для сценариев с приоритетом локальных данных и работы без подключения к сети. Встроенная поддержка CRDT через MergeableStore позволяет синхронизировать и детерминированно объединять данные между клиентами и серверами. Данные можно сохранять в хранилище браузера и IndexedDB, а также в базах данных вроде SQLite и PostgreSQL. Есть интеграции с Yjs и Automerge.

Опциональные привязки к React включают хуки и легковесные компоненты интерфейса для создания полностью реактивных интерфейсов, а также встроенный Inspector для просмотра и редактирования данных хранилища в реальном времени во время разработки. Несмотря на широкий набор возможностей, ядро остается компактным (около 5.3kB–11.7kB в сжатом виде), имеет полную документацию и тщательно протестировано.

Возможности

  • Реактивное хранилище данных в памяти
  • Модели данных в виде пар ключ-значение и таблиц
  • Точечные слушатели и подписки
  • Движок запросов TinyQL (выборка/соединение/фильтрация/группировка)
  • Индексы для быстрого поиска
  • Метрики и агрегирование
  • Связи между таблицами
  • Схемы со значениями по умолчанию и выводом типов
  • Контрольные точки с отменой и повтором действий
  • Встроенный CRDT MergeableStore
  • Синхронизация через WebSockets, BroadcastChannel и пользовательские транспорты
  • Сохранение данных в хранилище браузера и IndexedDB
  • Сохранение данных в SQLite и PostgreSQL (а также вариантах вроде Bun/Expo SQLite)
  • Интеграции с Yjs, Automerge, CR-SQLite, PGlite, ElectricSQL, Turso, PartyKit, Cloudflare Durable Objects
  • Опциональные хуки React и готовые компоненты (ui-react, ui-react-dom)
  • Встроенный инструмент разработчика для просмотра данных
  • Разработка с приоритетом локальных данных и поддержкой работы без сети
  • Компактная сборка без зависимостей
  • 100% покрытие тестами и подробная документация

Похожие ресурсы

Legend State

Эта мощная библиотека упрощает управление состоянием в приложениях и помогает легко справляться со сложной обработкой данных.

MobX

Это решение для управления состоянием позволяет легко интегрировать динамические данные в приложения и без труда адаптируется к изменениям.

Redux Toolkit

Комплексный набор инструментов, который упрощает и улучшает процесс разработки с Redux, помогая создавать предсказуемые и удобные в поддержке приложения.

valtio

Эта библиотека упрощает управление состоянием на основе прокси в современных приложениях, улучшая процесс разработки благодаря эффективному рендерингу и простому управлению состоянием.

TanStack DB

Реактивное клиентское хранилище с живыми запросами и оптимистичными мутациями для согласованных интерфейсов с откликом менее миллисекунды и синхронизацией в реальном времени.

Jotai

Мощное и легковесное решение для управления состоянием в React-приложениях на основе атомарного подхода.

MobX-State-Tree

Полнофункциональная библиотека, которая упрощает управление состоянием благодаря структурированному подходу к работе с изменяемым состоянием.

TanStack Router

Современная масштабируемая библиотека маршрутизации для React с упором на типобезопасность и эффективное управление данными.