Skip to content

matthewp/robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a17a3c3 · Feb 5, 2025
Feb 5, 2025
Dec 14, 2024
Sep 18, 2019
Dec 14, 2024
Feb 5, 2025
Jan 29, 2023
Sep 21, 2019
Sep 21, 2019
Jan 29, 2023
Jan 14, 2025
Jan 14, 2025
Dec 13, 2024

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 thisrobot.life 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();
});

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 integrations page to learn more.

Tools

  • Visualization of robot state machines: robot3-viz

License

BSD-2-Clause