v3.2.0 Released → Zero-runtime types

State management,
simplified.

Predictable, type-safe, and blazingly fast. Build complex UIs without boilerplate. Designed for modern frameworks and edge environments.

store.ts
import { createStore } from "@divisions/state"; const useAuth = createStore<AuthSlice>((set, get) => { return { user: null, login: (token: string) => set({ user: parseToken(token) }), logout: () => set({ user: null }), refresh: () => { // Auto-retries with exponential backoff return api.refreshToken().then(res => get().login(res.token)) } } })

Engineered for Scale

Every feature is designed to reduce cognitive load while maximizing performance.

🔒

Zero-Runtime Types

Full TypeScript inference without runtime overhead. Types are stripped at build time for production.

Reactive Selectors

Granular subscriptions mean components only re-render when their exact slice of state changes.

🔌

Middleware Pipeline

Compose async logic, logging, and persistence with a clean, Redux-like middleware system.

🌐

SSR/Edge Ready

Hydration-safe by default. Works seamlessly with Next.js, Nuxt, SvelteKit, and Cloudflare Workers.

🛠️

Built-in DevTools

Time-travel debugging, action logging, and state diffing out of the box. No extra packages needed.

📦

Tiny Bundle

Only 2.4kb gzipped. Tree-shakeable and framework-agnostic. Zero dependencies.

Works With Your Stack

Unified API across JavaScript, TypeScript, React, Vue, and Svelte.

import { createStore } from "@divisions/state"; interface TodoState { items: Todo[]; add: (text: string) => void; } const useTodos = createStore<TodoState>((set) => { return { items: [], add: (text) => set((state) => ({ items: [...state.items, { text, done: false }]) } })
import { useSelector } from "@divisions/state/react"; import { useTodos } from "./store"; function TodoList() { // Only re-renders when `items` change const items = useSelector(useTodos, (s) => s.items); return ( <ul> {items.map((item, i) => <li key={i}>{item.text}</li>)} </ul> ) }
import { useStore } from "@divisions/state/vue"; import { useTodos } from "./store"; const store = useStore(useTodos); const items = computed(() => store.items); // Auto-reactive in templates <template> <ul> <li v-for="item in items" :key="item.id">{{ item.text }}</li> </ul> </template>
import { useStore } from "@divisions/state/svelte"; import { useTodos } from "./store"; const { items, add } = useStore(useTodos); <button on:click={() => add("New task")}> Add Todo </button> <ul> {#each items as item} <li>{item.text}</li> {/each} </ul>


Benchmarks That Speak

Measured on M2 MacBook Pro, 10k concurrent updates, cold start.

2.4kb
Gzipped Bundle
0.8ms
10k Updates
0
Dependencies
100%
Tree-shakeable

Loved by Engineers

"We replaced a bloated state library with #divisions. Bundle size dropped 60% and our team stopped fighting over boilerplate. The DX is genuinely next-level."
JK
James Kim
Staff Engineer, Vercel
"Type inference works exactly as advertised. I migrated our entire dashboard in a weekend. The devtools alone saved us hours of debugging every sprint."
EP
Elena Petrov
Lead Frontend, Stripe
"Finally, a state manager that doesn't force you to choose between performance and simplicity. The reactive selectors are lightning fast."
TN
Tom Nguyen
Open Source Maintainer

Open Core, Enterprise Ready

Start free. Scale when you need advanced tooling and SLAs.

Community
$0 / forever
Perfect for indie devs and small teams.
  • Full core API access
  • MIT License
  • Community Discord support
  • Public docs & examples
Enterprise
Custom
Security, compliance, and dedicated support.
  • Everything in Pro
  • SSO & RBAC
  • 99.9% SLA & priority routing
  • On-prem / private registry deploy
  • Dedicated success manager

Common Questions

How is this different from Redux, Zustand, or Jotai? +
#divisions/state focuses on zero-runtime types, framework-agnostic reactivity, and a significantly smaller bundle. Unlike Redux, it requires no boilerplate or configuration. Compared to Zustand, it offers built-in devtools and a more robust middleware pipeline out of the box.
Does it support Server-Side Rendering? +
Yes. The store is hydration-safe by default. We provide built-in utilities for Next.js, Nuxt, and SvelteKit to ensure state initializes correctly without hydration mismatches or memory leaks.
Can I use it in a micro-frontend architecture? +
Absolutely. The store can be split into isolated domains, and we provide a cross-app pub/sub bridge for secure state sharing between micro-frontends without tight coupling.
What's the bundle size impact? +
The core package is 2.4kb gzipped with zero dependencies. Thanks to full tree-shaking support, you only ship the exact selectors and slices your app uses.

Stop fighting your state.
Start building.

Join thousands of developers who've simplified their architecture. Free forever, no credit card required.