React 19 + TanStack Start
@bemedev/app & @bemedev/app-reactjs

Self Machine Tester

Test and inspect real-time state machine transitions with useService from @bemedev/app-reactjs.

Auto reset the full-state in 15 seconds
Interpreter Status
idle
{
  "initial": "idle",
  "on": {
    "TOGGLE_LOG_EXPAND": {
      "actions": [
        "toggleLogExpand"
      ]
    }
  },
  "states": {
    "idle": {
      "tags": [
        "idle_state"
      ],
      "on": {
        "START": {
          "target": "/active",
          "actions": [
            "log"
          ]
        }
      }
    },
    "active": {
      "initial": "speed_low",
      "tags": [
        "active_state"
      ],
      "states": {
        "speed_low": {
          "tags": [
            "mode_eco",
            "low_speed"
          ]
        },
        "speed_high": {
          "tags": [
            "mode_turbo",
            "high_speed"
          ]
        }
      },
      "on": {
        "INC": {
          "actions": [
            "increment",
            "log"
          ]
        },
        "DEC": {
          "actions": [
            "decrement",
            "log"
          ]
        },
        "ACCELERATE": {
          "target": "/active/speed_high",
          "actions": [
            "accelerate",
            "log"
          ]
        },
        "DECELERATE": {
          "target": "/active/speed_low",
          "actions": [
            "decelerate",
            "log"
          ]
        },
        "STOP": {
          "target": "/final",
          "actions": [
            "log"
          ]
        }
      }
    },
    "final": {
      "tags": [
        "completed"
      ],
      "on": {
        "RESET": {
          "target": "/idle",
          "actions": [
            "log"
          ]
        }
      }
    }
  }
}

State Inspector
"idle"

Current hierarchical state value and active tags

State 1
idle
Initial State
State 2 (Nested)
active
"idle"
State 3
final
Terminal State
Active Tags:
#idle_state
Context Counter
0

Dispatch Events

Send events to trigger machine state transitions

useService Hook Selectors

Demonstrates selective reactive re-rendering with options.selector

useService(service, { selector: s => s.context.count })
Extracted Count: 0
useService(service, { selector: s => s.context.speed })
Extracted Speed: 1
useService(service, { selector: s => s.value })
State Value: "idle"
{
  "status": "idle",
  "context": {
    "count": 0,
    "speed": 1,
    "logs": []
  },
  "event": {
    "type": "machine$$init",
    "payload": {}
  },
  "value": "idle",
  "tags": [
    "idle_state"
  ]
}

Transition Log
New 0 Events

No transitions logged yet. Start service and send events!