# Resources
These XState v4 docs are no longer maintained
XState v5 is out now! Read more about XState v5 (opens new window) and check out the XState v5 docs (opens new window).
Below is an incomplete collection of many resources for learning and applying XState in real-world applications. Check out the Awesome XState (opens new window) collection on GitHub for even more resources!
- Resource from a Stately member
# Courses
Official Course
Watch the official State Machines in JavaScript with XState (opens new window) course by @davidkpiano (opens new window) on Frontend Masters! In this course, you’ll learn the fundamentals of state machines and statecharts, from building your own without any libraries in pure JavaScript, up to using XState to take advantage of a wide variety of other features.
The workshop code examples are open-sourced and available on GitHub (opens new window).
There is also a follow-up course: State Modeling with React and XState (opens new window). Once you've gone through the first course, be sure to take this one too so you can learn how to apply state machines and statecharts to real-world apps and master advanced concepts such as spawning/invoking actors and model-based testing.
Catalogue
Explore a collection of professionally-designed state machines and statecharts in the XState Catalogue (opens new window). You can copy-paste these machines directly into your projects, as well as visualize them directly in the catalogue.
Other great courses and guides:
- Egghead - Introduction to State Machines Using XState (opens new window) by Kyle Shevlin (opens new window)
- Egghead - Construct Sturdy UIs with XState (opens new window) by Isaac Mann (opens new window)
- XState Guide (opens new window) by Brad Woods (opens new window)
- DevTrends: XState (opens new window) by Anthony Gore (opens new window)
# Podcasts
- Q&A on XState, Getting Comfortable with JavaScript, Managing WordPress Sites, and Background Images in CSS (opens new window) on 2021-10-04
- 🎙 (Modern Web) S07E20: Building State Machines using XState with David Khourshid (opens new window) on 2021-01-20
- 🎙 (React Podcast) 83: David Khourshid on XState, Statecharts, and the Future of Designer—Coder Collaboration (opens new window) on 2020-02-27
- 🎙 (Syntax.FM) 206: State Machines, CSS and Animations with David K Piano (opens new window) on 2019-12-18
- 🎙 (Egghead.io Podcast) 11: Introduction To State Machines And XState With Kyle Shevlin (opens new window) on 2019-12-17
- 🎙 (Full Stack Radio) 130: David Khourshid - Building Better UI Components with State Machines (opens new window) on 2019-12-11
- 🎙 (Chats with Kent) Make Your Apps Resilient Using Finite State Machines With David Khourshid (opens new window) on 2019-08-05
- 🎙 (React Round-Up) 069: The State Machines in React with David Khourshid (opens new window) on 2019-07-09
- 🎙 (ShopTalk Show) 327: Working with State Machines with Jon Bellah and David Khourshid (opens new window) on 2018-09-03
- 🎙 (React Podcast) 5: Finite State Machines with David Khourshid (opens new window) on 2018-04-03
# Articles
- Building iOS Stopwatch functionality using XState (opens new window) by Lakshya Thakur (opens new window) 2022-07-31
- Using State Machines in Front-End Development (opens new window) by Danielle Richter (opens new window) 2021-10-27
- Quick post: Modeling a video player with XState (opens new window) by Matías Hernández Arellano (opens new window) on 2021-10-25
- Getting Started with XState, React and Typescript (Part 2) (opens new window) by Santiago Kent (opens new window) on 2021-10-18
- Getting Started with XState, React and Typescript (Part 1) (opens new window) by Santiago Kent (opens new window) on 2021-01-05
- Untangling your Logic using State Machines (opens new window) by Roberto Ruiz (opens new window) on 2021-10-07
- The power of XState (opens new window) by Yanir Manor (opens new window) on 2021-10-04
- Building an acquisition Funnel in React with Xstate - Part 1 (opens new window) by Jb Rocher (opens new window)
- XState - Expero Night (opens new window) by Iván Trujillo
- Orchestrating Serverless from Serverless (opens new window) by Kjartan Rekdal Müller (opens new window) on 2021-09-20
- How to model application flows in React with finite state machines and XState (opens new window) by Andrew McDowell (opens new window) on 2021-07-23
- Testing XState machines in your React Native app (opens new window) by Simone D'Avico (opens new window) on 2021-07-15
- Using XState with Deno (opens new window) by Bruno Quaresma (opens new window) on 2021-06-24
- Use an XState Machine with React (opens new window) by Josh Branchaud (opens new window) on 2021-05-09
- XState: Should this be an action, or a service? (opens new window) by Matt Pocock (opens new window) on 2021-04-30
- State Machines: Should this be a state, or in context? (opens new window) by Matt Pocock (opens new window) on 2021-04-29
- XState: What's the difference between Machine and createMachine? (opens new window) by Matt Pocock (opens new window) on 2021-04-28
- How to Use Finite State Machines in React (opens new window) by Leonardo Maldonado (opens new window) on 2021-03-17
- Frontend is Rocket Science – Managing state in any JavaScript Application (opens new window) by Aleksej Dix (opens new window) on 2021-02-26
- Boost your React application's performance by XState (opens new window) by Alireza Valizade (opens new window) on 2021-02-24
- Rsvp to weddings with XState (opens new window) by Andrew Peterson (opens new window) on 2021-02-19
- An Introduction to XState in TypeScript (opens new window) by Neeraj Khosla (opens new window) on 2021-02-04
- An Introduction to Finite State Machines: Simplifying React State Management with State Machines (opens new window) by Bradley Kofi (opens new window) on 2021-02-02
- Integrate XState with React Native and React Navigation (opens new window) by Simone D'Avico (opens new window) on 2021-02-02
- Infinite Scrolling with Svelte 3, XState and IntersectionObserver (opens new window) by Gustavo Castillo (opens new window) on 2021-02-01
- Untangle complex flows in your React Native app with XState (opens new window) by Simone D'Avico (opens new window) on 2021-01-14
- "Just Use Props": An opinionated guide to React and XState (opens new window) by Matt Pocock (opens new window) on 2021-01-11
- Creating State Machines in JavaScript with XState (opens new window) by Dor Nisim (opens new window) on 2021-01-10
- Future of state management in React with XState (opens new window) by Jakub Skoneczny (opens new window) on 2021-01-05
- Learning XState by refactoring an old project (opens new window) by Florens Verschelde (opens new window) on 2021-01-01
- React context without context, using XState – CodeWithSwiz 14, 15 (opens new window) by @swizec (opens new window) on 2020-11-10
- State Machines Workshop with XState (opens new window) by Ademola (@ooade) (opens new window) on 2020-11-06
- Tes en Línea: React, TypeScript, XState, fp-ts & CSS Grid (esp) (opens new window) by Edgar Rodriguez (opens new window) on 2020-10-29
- How to write tests for XState (opens new window) by @swizec (opens new window) on 2020-10-13
- Create-React-App Template with XState (opens new window) by Kacper Wdowik (opens new window) on 2020-10-18
- XState Brain Teaser #1 - Auth Flow (opens new window) by Matt Pocock (opens new window) on 2020-10-09
- Refactoring a useReducer to XState, Part 1 (opens new window) by @swizec (opens new window) on 2020-10-08
- How State Machines Saved Our Bacon 🥓 (opens new window) by Ian Jones (opens new window) on approximately 2020-10-01
- Finite State Machines in React JS using XState JS (opens new window) by Sooraj (opens new window) on 2020-09-23
- My First Machine, Getting Started with XState and Angular (opens new window) by Caleb Ukle (opens new window) on 2020-09-11
- State Machines For Everyone (opens new window) by Alex Dodge (opens new window) on 2020-09-08
- State machines in Production (opens new window) by Ivan Kovic (opens new window) on 2020-09-02
- Testing XState with React Testing Library (opens new window) by Joe Purnell (opens new window) on 2020-08-27
- When your brain is breaking, try XState (opens new window) by @swizec (opens new window) on 2020-08-10
- Todo App with XState and Vue composition API (opens new window) by Jasmin Virdi (opens new window) on 2020-08-03
- Firebase authentication with XState and Svelte (opens new window) by @codechips (opens new window) on 2020-07-31
- SWR-Style Fetching with XState State Machines (opens new window) by Daniel Imfeld (opens new window) on 2020-07-21
- Hello XState Part 3: Writing my first state machines (and washing my hands) (opens new window) by by Eka (opens new window) on 2020-07-21
- Intro: XState and State Machines (React) (opens new window) by Dimitar Danailov (opens new window) on 2020-07-17
- XState, React, and TypeScript - how to get it working (opens new window) by Matt Pocock (opens new window) on 2020-07-17
- Hello XState Part 2: Exploring the XState Viz example (opens new window) by Eka (opens new window) on 2020-07-13
- Slides - Working with State Machines in Angular (opens new window) with XState by Stefanos Lignos (opens new window) on 2020-07-20
- Hello XState Part 1: Learning state machines for frontend web development (opens new window) by Eka (opens new window) on 2020-07-12
- Comparing state machines: XState vs. Robot (opens new window) by Samaila Bala (opens new window) on 2020-07-09
- Starting with State Machines and XState! (opens new window) by Jasmin Virdi (opens new window) on 2020-07-06
- Learn and Apply XState with Vonage Video (opens new window) by Kelly Andrews (opens new window) on 2020-07-01
- Introduction to XState (opens new window) by Flavio Copes (opens new window) on 2020-06-26
- Multistep form handling in React Native with Finite State Machines, Formik and TypeScript (opens new window) by Daniel Grychtoł (opens new window) on 2020-06-17
- Intro to XState - a true state management library for React (opens new window) by Pavlo Lompas (opens new window) on 2020-06-15
- Remake of the 100 squares game (opens new window) by @nikpundik (opens new window) on 2020-06-05
- ThoughtWorks - XState in the Technology Radar for Languages & Frameworks (opens new window) on 2020-05-19
- A front-end journey into XState (opens new window) by Robert Higdon (opens new window) on 2020-05-15
- GitHub - Stripe Machine Example (opens new window): An animated stripe checkout using XState and React by @JacobParis (opens new window) on 2020-05-08
- XState and Svelte: initial setup (opens new window) by @rveciana (opens new window) on 2020-05-08
- How To Build Finite State Machines using XState and React (opens new window) by Ibrahima Ndaw (opens new window) on 2020-04-21
- XState Minesweeper (opens new window) by @lednhatkhanh (opens new window) on 2020-04-16
- XState Chart Traffic Lights (opens new window) by @howardmann (opens new window) on 2020-04-16
- A simple calculator using React and XState (statecharts) (opens new window) by diegoperezm (opens new window) on 2020-04-15
- Modeling parallel states in XState (opens new window) by Jacob Paris (opens new window) on 2020-04-05
- Guidelines for State Machines and XState (opens new window) by Kyle Shevlin (opens new window) on 2020-04-03
- An Introduction to State Machines using XState (opens new window) by Mat Warger (opens new window) on 2020-03-30
- React Single File Components with XState (opens new window) by Robert (opens new window) on 2020-03-29
- State-driven interfaces with XState (opens new window) by Brad Woods (opens new window) on 2020-03-23
- Undo/Redo in React Using XState (opens new window) by Robert (opens new window) on 2020-03-22
- Working with non-user asynchronous events in model based tests with XState (opens new window) by John de Stigter (opens new window) on 2020-03-18
- Supervising XState Machines with Redux (opens new window) by John de Stigter (opens new window) on 2020-03-16
- Model based UI tests with XState, Cypress, Puppeteer & more (opens new window) by John de Stigter (opens new window) on 2020-03-12
- Thoughts on State Management with XState and ReactJS (opens new window) by John de Stigter (opens new window) on 2020-03-08
- XState: The new opportunity for web development (opens new window) by @mschulte (opens new window) on 2020-03-05
- Communicating with spawned and invoked XState actors in React (opens new window) by Ismayil Khayredinov on 2020-02-02
- Replacing Vuex with XState (opens new window) by Felix Guerin (opens new window) on 2020-01-28
- XState 状态管理 (opens new window) by 陈三 on 2019-12-31
- XState 新手教學 - Finite State Machine (opens new window) by Jerry Hong on 2019-12-08
- How to Effortlessly Model Async (React) with XState's Invoke (opens new window) by Matthew Jones on 2019-10-30
- Getting Started with XState (opens new window) by Viet Nguyen on 2019-10-09
- A series of examples showing how to model application state with statechart using xstate (opens new window) by @coodoo (opens new window) on 2019-09-27
- Finite State Machines in React JS using XState (opens new window) by Sooraj Nair (opens new window) on 2019-08-22
- Hyperapp demo with XState (opens new window) by @johnkazer (opens new window) on 2019-07-23
- My love letter to XState and statecharts ♥ (opens new window) by Tim Deschryver on 2019-07-08
- Creating a Complex IVR System with Ease with XState (opens new window) by Yonatan Mevorach on 2019-06-20
- StackOverflow: What is an actual difference between redux and a state machine (e.g. xstate)? (opens new window) by David Khourshid (opens new window) on 2019-02-04
- XState - a TypeScript state machine with a lot of features (opens new window) by Frank Quednau on 2019-01-30
- Vuex + XState (opens new window) by Brock Reece (opens new window) on 2017-09-17
# Videos
- ▶️ Design a polling state machine with XState (opens new window) by Josh Branchaud (opens new window)
- ▶️ You're a Wizard Form, Harry (Infobip Shift) (opens new window) by Erik Rasmussen (opens new window) on 2021-09-08
- ▶️ Making Application Logic Visually Collaborative (Infobip Shift) (opens new window) by David Khourshid (opens new window) on 2021-09-07
- ▶️ The Actor Model: a new mental model for React (React Finland) (opens new window) by Farzad Yousefzadeh (opens new window) on 2021-09-01
- ▶️ Make legacy code delightful with statecharts (React Finland) (opens new window) by Matt Pocock (opens new window) on 2021-09-01
- ▶️ Introducing state machines and statecharts (React Finland) (opens new window) by Laura Kalbag (opens new window) on 2021-09-01
- ▶️ The State of XState (React Finland) (opens new window) on 2021-08-30 by David Khourshid (opens new window)
- ▶️ Splitting the view and the brains in JS — state machines with XState (in French) (opens new window) by Aurelien Meunier (opens new window) on 2021-06-22
- ▶️ Front-end state management with XState (opens new window) by Amy Pellegrini (opens new window) on 2021-06-09
- ▶️ Maquinas de estado finito y gráficas de estado en React (opens new window) by José L Narajo on 2021-03-19
- ▶️ Use State Machines to Build a Queue for Custom Twitch Overlays — Learn With Jason (opens new window) by Jason Lengstorf (opens new window) on 2021-02-26
- ▶️ Getting Started with XState, React, and Typescript | Part 1 (opens new window) by Modus Create (opens new window) on 2021-02-18
- ▶️ Modelling application behaviour with the XState library (in React) (opens new window) by Marc Klefter (opens new window) on 2021-02-11
- ▶️ Custom Svelte Store: XState as Svelte store (opens new window) by lihautan (opens new window) on 2021-02-10
- ▶️ XState Introduction (opens new window) on For Those Who Code (opens new window) on 2021-02-08
- ▶️ XState - Global state in React (opens new window) by Matt Pocock (opens new window) on 2021-02-04
- ▶️ Finite State Machine on Frontend (opens new window) by Eugenia Zigisova (opens new window) on 2021-01-20
- ▶️ Typing XState in Vue 3 (opens new window) by JacoboCode (opens new window) on 2021-01-18
- ▶️ Infinite Scrolling con Svelte, IntersectionObserver & XState (en español) (opens new window) by GCD Coder (opens new window) on 2021-01-13
- ▶️ Getting Started with XState in Vue 3 (opens new window) by JacoboCode (opens new window) on 2021-01-05
- ▶️ Usando XState y React para hacer peticiones HTTP (en español) (opens new window) by GCD Coder (opens new window) on 2020-12-29
- ▶️ Modeling a Voicemail Widget with XState (opens new window) by Constantin Druc (opens new window) on 2020-12-20
- ▶️ React Wednesdays: XState and JavaScript State Machines (opens new window) on 2020-12-09
- ▶️ Frontend is Rocket Science - How to use XState in Vue 3 Now! (opens new window) by Aleksej Dix (opens new window) on 2020-11-06
- ▶️ Finite State Machines in Vue 3 (opens new window) by Sarah Dayan (opens new window) on 2020-11-06
- ▶️ Tutorial of C++ Code Generator for XState State Machine engine (opens new window) by Andrew Shuvalov (opens new window) on 2020-10-30
- ▶️ XState and React (opens new window) on Leniolabs (opens new window) on 2020-10-08
- ▶️ XState and State Machines in VueJS (opens new window) by Constantin Druc (opens new window) on 2020-09-30
- ▶️ Reducing state complexity with XState (opens new window) by Kishore on 2020-09-21
- ▶️ Refactoring with XState - Part 1 (opens new window) by VigsCodes (opens new window) on 2020-09-06
- ▶️ State-driven Interfaces with XState (opens new window) on Mozilla Indonesia (opens new window) on 2020-08-30
- ▶️ Easy Introduction to XState in React | States, Transitions, Guards, and (Actions (opens new window) by Bhargav Ponnapalli (opens new window) on 2020-08-28
- ▶️ Virtual Lunch & Learn: Let's build an app using Svelte, TypeScript, XState and Tailwind (opens new window) by Anders Bech Mellson on 2020-08-26
- ▶️ Mini Introducción a XState (opens new window) by Michell Ayala (opens new window) on 2020-08-14
- ▶️ Model Based Testing with XState | Why It's Great | Part 1 (opens new window) by John Bales (opens new window) on 2020-08-11
- ▶️ Managing UI Complexity with Statecharts (playlist) (opens new window) on 2020-08-01
- ▶️ XState Pizza Wizard! (opens new window) by Jack Herrington (opens new window) on 2020-07-22
- ▶️ Declarative and manageable state management with XState (opens new window) by Daniel Lemay (opens new window) on 2020-07-22
- ▶️ Learning XState with Lauren (opens new window) on 2020-07-17
- ▶️ The Actor Model | XState part 1 (opens new window) by @bisvarup (opens new window) on 2020-07-15
- ▶️ Part 1: Tic-tac-toe - Let's build (using JavaScript, React, Cypress and XState) (opens new window) by Dane Harnett on 2020-06-28
- ▶️ How to add an XState machine conf to a project (opens new window) by Diego Perez (opens new window) on 2020-06-26
- ▶️ Autocomplete, XState, and anything in between (opens new window) by Krzysztof Żuraw (opens new window) on 2020-06-24
- ▶️ Creating a
useAutoSave
Hook - Part 5: Using XState (opens new window) by Brooks Lybrand (opens new window) on 2020-05-08 - ▶️ Improving Application Predictability with XState (opens new window) by Sam Edwards (opens new window) on 2020-04-29
- ▶️ Webinar - Visualize Application State with XState in JavaScript (opens new window) by Dani Akash on 2020-04-02
- ▶️ Drag & Drop State Machine! Learning XState with David (opens new window) on the Keyframers (opens new window) on 2020-03-06
- ▶️ How to Build a simple React App with XState (opens new window) by Tim Ermilov on 2020-03-04
- ▶️ Authentication statechart in XState (opens new window) by Brooks Lybrand (opens new window) on 2020-02-07
- ▶️ Aplicaciones React usando XState (opens new window) by Luis César Contreras on 2020-01-21
- ▶️ Improving state representation by using XState in React (opens new window) by Jon Major Condon (opens new window) on 2019-10-03
- ▶️ Isaac && Zack Code Jam #2: State Machines and XState (opens new window) on 2019-10-03
- ▶️ XState and State Machines in Vue (opens new window)
- ▶️ Standing on the Shoulders of Giants. Development with XState (opens new window) by Brad Woods on 2019-09-11
- ▶️ Infinitely Better UIs with Finite Automata (React Rally) (opens new window) by David Khourshid (opens new window) on 2017-08-25
# Repositories
- Une UI dans tous ses états avec XState (A UI in all its states with XState) (opens new window) by Rodolphe Bung (opens new window)
- XState: Street Lights with Pedestrian Crossing using Vue.js (opens new window) by Kevin Warrington (opens new window)
- CodeSandbox - XState Login & Sign Up Forms (opens new window) by Jamie Mason (opens new window)
- Tic-Tac-Toe with Crank, XState, and TypeScript (opens new window) by @warger (opens new window) on 2020-04-17
- GitHub - Autocomplete example with XState (opens new window) by @krzysztofzuraw (opens new window) on 2020-04-06
- Github - XState with React and Angular in Nx Workspace (opens new window) by Chau Tran (opens new window) on 2020-03-08
- GitHub - XState Sample Kit (opens new window) by @rjdestigter (opens new window) on 2020-02-17
- GitLab - TDDing XState (opens new window) by Dan Bunea on 2020-02-13
- Tips and tricks of using XState for UI development (opens new window) by Farzad Yousefzadeh (opens new window) on 2020-01-24
- GitHub - Cypress Real-World App (opens new window) on 2020-01-07
- GitHub - a flipping cards game using XState (opens new window) by @lednhatkhanh (opens new window) on 2020-04-21
- GitHub - a Markdown Editor in Vue.js and XState (opens new window) by Sarah Dayan (opens new window) on 2020-02-15
- GitHub - A Pac Man game, built with React, TypeScript, MobX, styled-components, and XState (opens new window) by Stefan Wille (opens new window) on 2019-12-21
- GitHub - a small React, XState and Framer Motion demo (opens new window) by @tanem (opens new window) on 2019-09-29
- CodePen - XState Vue Login Page (opens new window) by Ryan Zola (opens new window) on 2019-07-19
- GitHub - Practical examples of statechart-based solutions with XState (opens new window) by @DevanB (opens new window) on 2019-09-07