XState는 JavaScript 및 TypeScript에서 유한 상태 기계(Finite State Machine)와 상태 차트(Statecharts)를 기반으로 동작하는 상태 관리 라이브러리
복잡한 애플리케이션 상태를 체계적이고 예측 가능하게 관리하기 위해 만들어졌으며, 선언형 방식으로 상태를 정의함
상태 관리 복잡성 해소
기존 상태 관리 도구(Redux, Context API 등)는 상태 전이와 부작용 관리가 점점 어려워짐
→ XState는 전이와 상태를 명확하게 설계할 수 있도록 돕는 모델 제공
형식적 모델링 필요성
소프트웨어 시스템의 행동을 수학적으로 모델링하는 FSM(Finite State Machine)을 프론트엔드에 도입
시각화 도구 지원
상태 차트를 통해 상태 전이 흐름을 도식화하고 문서화 가능
→ 공식 도구: Stately Visualizer
예측 가능한 상태 전이
유효한 상태 전이만 정의되어 예외 상태 감소
→ 모든 전이 조건과 결과가 코드로 명확히 표현됨
| 항목 | 설명 |
|---|---|
| 선언형 상태 관리 | 명시적인 상태 및 전이 정의 가능 |
| 예측 가능성 | 불가능한 상태 전이를 방지 |
| 시각화 가능 | 상태 흐름을 도식화하여 문서화 |
| TypeScript 지원 | 정적 타입 검사 가능 |
| 프레임워크 독립적 | React, Vue 등과 통합 사용 가능 |
import { createMachine } from 'xstate';
const toggleMachine = createMachine({
id: 'toggle',
initial: 'inactive',
states: {
inactive: {
on: { TOGGLE: 'active' }
},
active: {
on: { TOGGLE: 'inactive' }
}
}
});