matthewp/robot

🤖 A functional, immutable Finite State Machine library

JavaScript

2,202

325 commits

updated Oct 5, 2026

See the code

README

Robot

The Robot logo, with green background.

A small functional and immutable Finite State Machine library. Using state machines for your components brings the declarative programming approach to application state.

See regularhuman.dev for the main documentation.

import { createMachine, interpret, state, transition } from 'robot3';

let machine = createMachine({
  off: state(
    transition('toggle', 'on')
  ),
  on: state(
    transition('toggle', 'off')
  )
});

const service = interpret(machine, () => {
  render();
});

📚 Documentation

Testing

Tests are located in the test/ folder. Load test/test.html in your browser of choice with any HTTP server you like (I use http-server). Tests are written in QUnit and are simple to understand.

Integrations

Robot works with a variety of UI libraries, and includes integrations for React, Preact, Haunted, and more. See the documentation to learn more.

Tools

  • Visualization of robot state machines: robot3-viz

License

BSD-2-Clause

matthewp/robot

🤖 A functional, immutable Finite State Machine library

JavaScript

2,202

325 commits

updated Oct 5, 2026

See the code

README

Robot

The Robot logo, with green background.

A small functional and immutable Finite State Machine library. Using state machines for your components brings the declarative programming approach to application state.

See regularhuman.dev for the main documentation.

import { createMachine, interpret, state, transition } from 'robot3';

let machine = createMachine({
  off: state(
    transition('toggle', 'on')
  ),
  on: state(
    transition('toggle', 'off')
  )
});

const service = interpret(machine, () => {
  render();
});

📚 Documentation

Testing

Tests are located in the test/ folder. Load test/test.html in your browser of choice with any HTTP server you like (I use http-server). Tests are written in QUnit and are simple to understand.

Integrations

Robot works with a variety of UI libraries, and includes integrations for React, Preact, Haunted, and more. See the documentation to learn more.

Tools

  • Visualization of robot state machines: robot3-viz

License

BSD-2-Clause

Project health

Overall

4.8/10

Maintained

10/10

Code review

2/10
OpenSSF Scorecard

Significant stargazers

(top 24 of 30)

Mateusz Burzyński

2,324 followers · starred Sep 2019

Blaine Bublitz

1,026 followers · starred Jan 2022

Christian Murphy

218 followers · starred Sep 2019

Phil Pluckthun

1,853 followers · starred Jan 2022