Что такое Hummbit

hummbit — иммутабельный менеджер состояния с двумя публичными entrypoint:
hummbit(framework-agnostic API + типизированныйinitStore)hummbit/react(React API +useSelector, без Provider)
Пакет поддерживает два режима работы:
- Store instance mode через
initStore(...)(рекомендуется для нового кода) - Global singleton mode через
getState/setState/mergeState
Как это работает на практике:
-
Store instance mode (
initStore)- Вы создаете отдельный экземпляр стора (
const userStore = initStore(...)), у которого свойinitialState, своиactions, своиselectors, своя подписка и своя версия state. - Такие сторы изолированы друг от друга: обновления в
userStoreникак не меняютcartStore. - В React-версии (
hummbit/react) экземпляр дополнительно получаетstore.useSelector, который подписывает компонент только на этот конкретный store instance. - Это лучший режим для модульной архитектуры: каждый домен (auth, cart, profile) имеет собственный typed store.
- Вы создаете отдельный экземпляр стора (
-
Global singleton mode (top-level API)
- Во всем приложении существует один общий store по умолчанию (singleton), к которому обращаются
getState,setState,mergeState,selectorи globaluseSelectorизhummbit/react. - Типизацию этого режима обычно делают через
declare module "hummbit" { interface RootState { ... } }. - Подходит, когда нужен один глобальный state без явного создания store-инстансов.
- Важно вызывать
configureGlobalStore(...)на старте приложения, до первых обновлений состояния.
- Во всем приложении существует один общий store по умолчанию (singleton), к которому обращаются
Когда что выбирать:
- Выбирайте Store instance mode, если важны изоляция, модульность, тестируемость и явные границы доменов.
- Выбирайте Global singleton mode, если приложение небольшое и вам удобнее один общий state-контейнер.
Краткий checklist
- Нужен изолированный доменный store? Используйте
initStore. - Нужен React без Provider? Используйте
hummbit/react+store.useSelector. - Нужен один глобальный store? Используйте augmentation + top-level API.
- Нужны DevTools/middleware? Конфигурируйте в bootstrap.

