thinking-in-react steps: break the UI into a component hierarchy build a static version in React find the minimal but complete representation of UI state identify where your state should live add inverse data flow