A model that defines all possible conditions of a UI component or flow — its states, the events that trigger transitions between them, and the actions that occur during those transitions. Designing with a state machine mindset prevents undefined states from appearing in the implemented product and forces explicit decisions about every possible scenario, including error and loading states.