> A React application can be thought of as modeling a state machine. Each render takes a state and produces the UI for that state. This is the famous UI = f(state) mental model of React. But, for complex applications, formally enumerating a transition table is often not feasible. When the number of possible states is not finite, a table will not suffice and we must instead define a mapping: a conceptual function which takes in a state and returns the set of valid transitions for that state.<p>Not really, though. While you <i>can</i> model any program as a state machine, doing so typically adds nothing to your understanding of the program.<p>State-machine diagrams are especially useless. A diagram is only useful if it has about a dozen things in it, maybe two dozen, maximum. But that doesn't mean you can model a dozen <i>states</i> in a state-machine diagram; in these diagrams, the <i>transitions</i>, the arrows between the states, are at least as important as the states themselves. So the diagrams are useless when the number of states + the number of transitions between them are greater than a few dozen. Typically that means state diagrams are only with a handful of states with a few transitions hanging off of each.<p>But, if your problem is simple enough that you can represent it with a handful of states with two or three transitions each, then you have a <i>very</i> trivial problem, so trivial that the state-machine diagram likely added nothing at all to your understanding of it.<p>This is why no popular UI frameworks actually <i>do</i> model UI as a set of states with transitions. It's easier to model the <i>state diagram</i> as a <i>function</i> and then just forget about the state diagram.<p>That's what React is all about! A pure function, UI = f(state). It's <i>better</i> than a state diagram.<p>This article is saying: "Hey, you could think of React, something conceptually simple, as something unnecessarily complicated, instead!" Gee, thanks?