# Design State, Action, Effect And AsyncOp

> Learn the app's state-machine vocabulary through the DRE pattern.

- URL: https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/03-state-machine-mvvm/lesson-02-design-state-action-effect-asyncop
- Course: [Mobile Action Pro](https://dantech.academy/en/courses/kotlin-accelerator.md)
- Module: State Machine and MVVM
- Duration: 10 min
- Difficulty: intermediate
- Access: Enrolled students
- Tiếng Việt: https://dantech.academy/courses/kotlin-accelerator/engineer-builder/03-state-machine-mvvm/lesson-02-design-state-action-effect-asyncop.md

## Objectives

- Split a feature contract into the State, Action, Effect, AsyncOp and UI event lanes
- Tell a reducer Effect apart from a one-time UI event that a handler emits

## In this lesson

1. Lesson Goal
2. Part 1: Read A Contract
3. Part 2: The 5 Lanes Of A Feature Contract
4. Part 3: Trace The Sign-In Flow Through The 5 Lanes
5. Part 4: An Action Is Not An Async Operation
6. Part 5: An Effect Differs From A UI Event
7. Code Reading Path
8. Bad Smells
9. Key Takeaways

## Study with an AI agent

The full lesson is for students of this course. Students open the lesson on the web and press **Markdown** to copy all of it, then paste it into Claude, ChatGPT, Cursor or whichever agent you use. Faster: mint a token at `/profile/ai-agents` and your agent reads lessons over MCP.

- [Join the course](https://dantech.academy/en/kotlin-accelerator/checkout)

---

- Previous lesson: [Why Is A Reducer Useful?](https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/03-state-machine-mvvm/lesson-01-understand-why-reducers-help.md)
- Next lesson: [Read The Game State Machine's Real Reducer](https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/03-state-machine-mvvm/lesson-03-read-game-state-machine.md)
