HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
statelyai
xstate
TypeScript2017–2026
statelyai / xstate

xstate

State machines, statecharts, and actors for complex logic

23Distinct people
30Mentions
0Explicit recommenders
30.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

State machines, statecharts, and actors for complex logic

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year30 dated mentions

Observed mentions: 2017-08-26 17:03:05 UTC to 2026-04-26 11:52:03 UTC.

02462017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC110
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC514
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC413
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC725
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC312
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC211
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Actor-based state management & orchestration for complex app logic. → Documentation XState is a state management and orchestration solution for JavaScript and TypeScript apps. It has zero dependencies, and is useful for frontend and backend application logic. It uses event-driven programming, state machines, statecharts, and the actor model to handle complex logic in predictable, robust, and visual ways. XState provides a powerful and flexible way to manage application and workflow state by allowing developers to model logic as actors and state machines. ✨ Create state machines visually in Stately Studio → state.new 📖 Read the documentation ➡️ Create state machines with the Stately Editor 🖥 Download our VS Code extension 📑 Inspired by the SCXML specification 💬 Chat on the Stately Discord Community ✍️ Browse through the many XState examples Which package should I use? Pick based on what you need: @xstate/store: simple event-based state management and reactive atoms, with great TypeScript inference, similar in spirit to Redux/Zustand. Start here if you just need a store. xstate: state machines, statecharts, actors, effects, and orchestration for complex app logic. They work great together, but you don't need one to use the other. Sponsors Special thanks to the sponsors who support this open-source project: Templates Get started by forking one of these templates on CodeSandbox: Template 🤖 XState Template (CodeSandbox) XState v5 TypeScript No framework ⚛️ XState + React Template (CodeSandbox) React XState v5 TypeScript 💚 XState + Vue Template (CodeSandbox) Vue XState v5 TypeScript 🧡 XState + Svelte Template (CodeSandbox) Svelte XState v5 TypeScript Super quick start npm install xstate import { createMachine, createActor, assign } from 'xstate'; // State machine const toggleMachine = createMachine({ id: 'toggle', initial: 'inactive', context: { count: 0 }, states: { inactive: { on: { TOGGLE: { target: 'active' } } }, active: { entry: assign({ count: ({ context }) => context.count + 1 }), on: { TOGGLE: { target: 'inactive' } } } } }); // Actor (instance of the machine logic, like a store) const toggleActor = createActor(toggleMachine); toggleActor.subscribe((state) => console.log(state.value, state.context)); toggleActor.start(); // => logs 'inactive', { count: 0 } toggleActor.send({ type: 'TOGGLE' }); // => logs 'active', { count: 1 } toggleActor.send({ type: 'TOGGLE' }); // => logs 'inactive', { count: 1 } @xstate/store: simple state management Not every app needs all the features of state machines and statecharts. @xstate/store is a separate, extremely small event-based store with first-class TypeScript inference; similar to Redux or Zustand, but with less boilerplate. Use it on its own, or graduate to full XState machines when your logic gets more complex. npm install @xstate/store import { createStore } from '@xstate/store'; const donutStore = createStore({ context: { donuts: 0, favoriteFlavor: 'chocolate' }, on: { addDonut: (context) => ({ ...context, donuts: context.donuts + 1 }), changeFlavor: (context, event: { flavor: string }) => ({ ...context, favoriteFlavor: event.flavor }), eatAllDonuts: (context) => ({ ...context, donuts: 0 }) } }); donutStore.subscribe((snapshot) => { console.log(snapshot.context); }); donutStore.send({ type: 'addDonut' }); // => { donuts: 1, favoriteFlavor: 'chocolate' } donutStore.send({ type: 'changeFlavor', flavor: 'strawberry' }); // => { donuts: 1, favoriteFlavor: 'strawberry' } 📖 See the @xstate/store README for React/Solid bindings, selectors, and more. Stately Studio Visually create, edit, and collaborate on state machines Export to many formats, including XState v5 Test path & documentation autogeneration Deploy to Stately Sky Generate & modify machines with Stately AI state.new Why? Statecharts are a formalism for modeling stateful, reactive systems. This is useful for declaratively describing the behavior of your application, from the individual components to the overall application logic. Read 📽 the slides (🎥 video) or check out these resources for learning about the importance of finite state machines and statecharts in user interfaces: Statecharts - A Visual Formalism for Complex Systems by David Harel The World of Statecharts by Erik Mogensen Packages Package Description 🤖 xstate Core finite state machine and statecharts library + interpreter, including graph traversal and model-based testing utilities 🏪 @xstate/store Simple event-based state management and reactive atoms — standalone, works with or without xstate ⚛️ @xstate/react React hooks and utilities for using XState in React applications 💚 @xstate/vue Vue composition functions and utilities for using XState in Vue applications 🎷 @xstate/svelte Svelte utilities for using XState in Svelte applications 🥏 @xstate/solid Solid hooks and utilities for using XState in Solid applications 🔍 @statelyai/inspect Inspection utilities for XState Finite State Machines CodeStatechart import { createMachine, createActor } from 'xstate'; const lightMachine = createMachine({ id: 'light', initial: 'green', states: { green: { on: { TIMER: 'yellow' } }, yellow: { on: { TIMER: 'red' } }, red: { on: { TIMER: 'green' } } } }); const actor = createActor(lightMachine); actor.subscribe((state) => { console.log(state.value); }); actor.start(); // logs 'green' actor.send({ type: 'TIMER' }); // logs 'yellow' Open in Stately Studio Hierarchical (Nested) State Machines CodeStatechart import { createMachine, createActor } from 'xstate'; const pedestrianStates = { initial: 'walk', states: { walk: { on: { PED_TIMER: 'wait' } }, wait: { on: {
Read the full README on GitHub

What Hacker News says

30 sources
Glad to see statecharts still getting attention! I created XState, a JS/TS library for authoring, executing, and visualizing state machines/statecharts: https://github.com/statelyai/xstate I've been working on it for 10+ years. The main thing I've learned is that statecharts are most valuable when they're treated as executable behavior, not just documentation. That doesn't mean you need to use them everywhere or model everything with them. They're most useful when you have behavior where the answer to "what happens next?" depends on both the current state & the event. A statechart can act as an oracle for questions like: "Given I'm in this state, when this event happens, what is the next state, and what effects should run?" I'm close to releasing an alpha of the next major version of XState, focused on better ergonomics, type safety, and
Read the rest
composability, as well as a new visualizer/editor. There's also an open-source basic statechart visualizer here: https://sketch.stately.ai For the formal/spec side, SCXML is worth reading: https://www.w3.org/TR/scxml Also worth reading the original paper by David Harel: https://www.weizmann.ac.il/math/harel/sites/math.harel/files...
In Statecharts: hierarchical state machines
Statecharts[1] predate UML, and became part of UML[2]. From the time of their invention to the present, people have devised systems for serializing (i.e. as data structures and code) statecharts and translating them to (or interpreting them as) executable programs[3]. While they may not be all the rage and take some discipline to learn and use effectively (what software tool/concept doesn't?), they can be a valuable tool for building reactive systems: A typical reactive system exhibits the following distinctive characteristics: It continuously interacts with its environment, using inputs and outputs that are either continuous in time or discrete. The inputs and outputs are often asynchronous, meaning that they may arrive or change values unpredictably at any point in time. This should be contrasted with transformatio
Read the rest
nal systems, in which the timing of the inputs and outputs is much more predictable. A transformational system repeatedly waits for all its inputs to arrive, carries out some processing, and outputs the results when the processing is done. It must be able to respond to interrupts, that is, high-priority events, even when it is busy doing something else. Its operation and reaction to inputs often reflects stringent time requirements. It has many possible operational scenarios, depending on the current mode of operation and the current values of its data as well as its past behavior. It is very often based on interacting processes that operate in parallel. Examples of reactive systems include on-line interactive systems, such as automatic teller machines (ATMs) and flight reservation systems; computer-embedded systems, such as avionics, automotive, and telecommunication systems; and control systems, such as chemical and manufacturing systems. — Harel and Politi, Modeling Reactive Systems with Statecharts: The STATEMATE Approach (1998) [4] [1] https://www.inf.ed.ac.uk/teaching/courses/seoc/2005_2006/res... [2] https://en.wikipedia.org/wiki/UML_state_machine [3] https://userweb.cs.txstate.edu/~rp31/papersSP/stateMate.pdf [&] https://www.w3.org/TR/scxml/ [&] https://github.com/jbeard4/SCION [&] https://github.com/statelyai/xstate [&] https://www.rtsys.informatik.uni-kiel.de/en/archive/kieler [&] search the web and you'll find more [4] https://www.wisdom.weizmann.ac.il/~harel/reactive_systems.ht...
In Sequence diagrams, the only good thing UML brought to software development
1. XState is open-source and MIT-licensed: https://github.com/statelyai/xstate, as well as the extension https://github.com/statelyai/xstate-vscode and various other tooling. The editor is closed-source. 2. Really good example – yes, the Stately editor is intended to be the tool for that! Whether it's just diagramming, in the same way you would use any other diagramming tool, to going even further and simulating those diagrams or even using them directly in your code, the editor is meant to be a tool for making executable diagrams where you can also document and share complex logic.
In Stately Editor Public Beta
Well, here’s the thing, the pragmatic developer is not his market. It’s the newbies or those who are deeply associating their new career with the identity of a ‘legit’ developer. This is the group that will pay him. It’s really none of my business, one can spend their time and money however they like. But, they do show up to work and advocate for these types of setups and that leads to bad codebases. I’m not sure how any of us can solve it since Frontend is the port of entry for vast swaths of career-changers and new grads. Then again, I also see the over-engineering on devops, a group that should be a little more experienced. I don’t know where people get these ideas, so we might all be correct in shaking our fist at the Kent C Dobb types for fundamentally being a bad influence. Just taking a look at one part of the stack, Xstate, how an
Read the rest
yone can advocate for this is, I really just don’t know. This is a simple todo list example from it’s docs: https://github.com/statelyai/xstate/tree/main/examples/todo-... Eh, I give up. I really have no words for any of this.
In How I built a modern website in 2021

Showing the 15 most recent of 30 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.