Imagine that your components are cooks in the kitchen, assembling tasty dishes from ingredients. In this scenario, React is the waiter who puts in requests from customers and brings them their orders. This process of requesting and serving UI has three steps:
1. Triggering a render (delivering the guest’s order to the kitchen)
2. Rendering the component (preparing the order in the kitchen)
3. Committing to the DOM (placing the order on the table)
4. Browser painting - After rendering is done and the React updates the DOM the browser will repaint the screen.
React splits the work into a render and commit phase. The render phase calls components, reconciles the changes and can be asynchronous. While committing React modifies the host tree and it's always synchronous.
---
https://react.dev/learn/render-and-commit
https://overreacted.io/react-as-a-ui-runtime