@hookstate/core vs xstate

xstate is downloaded 44.8× more often than @hookstate/core (20,263,809 vs 452,718 per month), so it has the larger community and more answered questions online. @hookstate/core ships 57% less gzipped JavaScript (6.0 kB vs 14.1 kB), which matters if bundle size is a priority. xstate has been updated more recently, a sign of more active maintenance.

Metric@hookstate/corexstate
Weekly downloads84,8484,469,231✓
Monthly downloads452,71820,263,809✓
GitHub stars1,65629,666✓
Minified size23.4 kB✓44.7 kB
Minified + gzipped6.0 kB✓14.1 kB
Dependencies00
Open issues32✓123
Last commit2025-03-202026-06-01✓
Latest version4.0.25.32.0
LicenseMITMIT

When to choose which

@hookstate/core

Nested state via proxies with a plugin system.

Choose it when: You manage deeply nested state and want fine-grained updates plus plugins (persistence, validation).

  • + Fine-grained nested updates
  • + Plugin system
  • - Small community
  • - Less momentum than peers

xstate

Explicit state machines and statecharts.

Choose it when: Complex flows (wizards, async sequences, UI with many states) where you want logic that is explicit, testable and visualizable.

  • + Impossible states become impossible
  • + Visualizable logic
  • + Framework-agnostic
  • - Steepest learning curve here
  • - Overkill for simple state

Feature comparison

Feature@hookstate/corexstate
ParadigmProxy storeState machines
First-class TypeScript✓ Yes✓ Yes
Works outside ReactPartial✓ Yes
Dedicated devtools✓ Yes✓ Yes
Built-in async / server stateManual✓ Yes
BoilerplateLowHigh

@hookstate/core

The flexible, fast and extendable state management for React that is based on hooks and state usage tracking.

xstate

Finite State Machines and Statecharts for the Modern Web.

Related comparisons

Embed this comparison

A live badge for your README — it updates as the numbers change.

@hookstate/core vs xstate downloads
[![@hookstate/core vs xstate](https://devcompare.dev/badge/hookstate-core-vs-xstate.svg)](https://devcompare.dev/compare/hookstate-core-vs-xstate)

Data from npm, Bundlephobia and GitHub. Last updated 2026-06-02.