wandres.dev
FSM, statecharts y XState

Domina Máquinas de Estado
hasta nivel dios

Modelar el estado como una máquina: autómatas, statecharts de Harel, XState v5 a fondo, el actor model, testing basado en modelos y patrones reales.

La ruta

26 niveles, de novato a dios

Cada nivel construye sobre el anterior. Sin saltos, sin huecos.

Ontología Nivel 0 · El mapa de las máquinas

La visión aérea: autómatas, statecharts de Harel, XState y el actor model; por qué modelar el estado como una máquina elimina lo imposible.

Mapa mentalFSM

Máquinas finitas Nivel 1 · estados y transiciones

La FSM: un conjunto finito de estados, eventos que disparan transiciones, y por qué modelar así elimina estados imposibles.

FSMtransiciones

Statecharts Nivel 2 · jerarquía y paralelismo

Los statecharts de Harel: estados jerárquicos, regiones paralelas, historia, y cómo domestican la explosión combinatoria.

statechartsHarel

XState: el modelo Nivel 3 · createMachine

XState v5: definir una máquina con estados y transiciones; el modelo de configuración y la ejecución determinista.

XStatecreateMachine

XState: context y lógica Nivel 4 · guards y actions

El estado extendido (context), guards, actions de entrada/salida, y assign para actualizar el context.

contextguardsactions

XState: el actor model Nivel 5 · actores y mensajes

En XState v5 el actor es la unidad central: entidades vivas que se comunican por mensajes asíncronos; spawn e invoke.

actoresmensajes

XState: efectos Nivel 6 · invoke y promesas

Invocar promesas, observables, callbacks y otras máquinas como actores; su ciclo de vida, resultados y errores.

invokeasync

Máquinas en la UI Nivel 7 · React, Vue, Solid

Conectar una máquina a la UI con useMachine/useActor; renderizar según el estado y enviar eventos.

useMachineUI

Cuándo una máquina Nivel 8 · y cuándo no

El criterio: dónde brillan las máquinas de estado y dónde son sobreingeniería.

criteriotrade-offs

Teoría de autómatas Nivel 9 · la base formal

La base matemática: autómatas finitos deterministas y no deterministas, lenguajes regulares, y qué puede y no puede expresar una FSM.

autómatasDFAteoría

SCXML y el estándar Nivel 10 · la especificación

SCXML: el estándar W3C de statecharts que XState sigue; la semántica formal de las transiciones y por qué importa.

SCXMLW3Csemántica

XState v5: setup y tipos Nivel 11 · type-safety total

La API `setup` de XState v5: tipar context, eventos, actores y acciones; inferencia y errores en tiempo de compilación.

setupTypeScriptv5

Jerarquía en XState Nivel 12 · estados compuestos

Modelar estados anidados y paralelos en XState: submáquinas, regiones ortogonales, y las transiciones que cruzan niveles.

jerarquíaparallelanidado

Historia y finales Nivel 13 · recordar y terminar

Estados de historia (shallow y deep), estados finales, `onDone` y el output de una máquina que termina.

historyfinaloutput

Testing de máquinas Nivel 14 · model-based testing

Testear una máquina: transiciones puras, recorridos exhaustivos, y el model-based testing que genera casos desde el modelo.

testingmodel-basedcobertura

Visualizar Nivel 15 · Stately Studio

El diagrama como documentación viva: Stately Studio, el inspector, y diseñar la máquina visualmente antes de codificarla.

Statelyvisualizarinspect

Máquinas y datos Nivel 16 · combinar con el servidor

Coordinar una máquina con el estado del servidor: invocar fetches, cachear, y no duplicar lo que ya gestiona TanStack Query.

datosfetchcache

Máquinas en el backend Nivel 17 · procesos y workflows

Statecharts fuera de la UI: modelar procesos de negocio, workflows durables, y máquinas que viven en el servidor.

backendworkflowprocesos

Patrón: wizards Nivel 18 · flujos de varios pasos

El caso canónico: un asistente de varios pasos con validación, navegación hacia atrás, y estados de envío.

wizardformulariospasos

Patrón: media Nivel 19 · reproductores y carga

Modelar un reproductor (idle, cargando, reproduciendo, pausado, error) y cualquier recurso con ciclo de vida complejo.

mediaplayerciclo

Patrón: auth Nivel 20 · sesiones y permisos

La máquina de autenticación: anónimo, autenticando, autenticado, refrescando, expirado; el flujo completo sin booleanos sueltos.

authsesiónflujo

Actores distribuidos Nivel 21 · más allá de una máquina

Sistemas de actores: jerarquías, supervisión, y la herencia de Erlang/Akka en el modelo de XState.

actoresErlangsupervisión

Alternativas a XState Nivel 22 · Robot, Zag, a mano

Otras librerías (Robot, Zag.js) y la FSM escrita a mano; cuándo no necesitas todo el peso de XState.

RobotZaga mano

Máquinas en otros lenguajes Nivel 23 · Swift, Kotlin, Rust

El patrón fuera de JavaScript: enums con estado asociado en Swift y Rust, sealed classes en Kotlin, y el type-state pattern.

SwiftRusttype-state

Rendimiento y escala Nivel 24 · máquinas grandes

Cuando la máquina crece: dividir en submáquinas, actores independientes, y el coste real de la interpretación.

rendimientoescaladividir

Nivel Dios: síntesis Nivel 25 · pensar en máquinas

La síntesis: modelar cualquier dominio como estados y transiciones, decidir cuándo aplicarlo, y el futuro de los statecharts.

síntesismodeladoPhD
126lecciones
26niveles
0→∞de cero a dios

¿Listo para dominar Máquinas de Estado?

Empieza por los fundamentos y sube nivel a nivel hasta el dominio total.

Comenzar el camino →