The Idea That Makes Suspense Possible Series: How React Works Under the Hood Part 1: Motivation Behind React Fiber: Time Slicing & Suspense Part 2: Why React Had to Build Its Own Execution Engine Part 3: How React Finds What Actually Changed Prerequisites: Read Parts 1–3 first. A Question Before We Start Think about how you fetch data in a React component today. You probably do something like this: function UserProfile ({ id }) { const [ user , setUser ] = useState ( null ); const [ loading , setLoading ] = useState ( true ); useEffect (() => { fetchUser ( id ). then ( data => { setUser ( data ); setLoading ( false ); }); }, [ id ]); if ( loading ) return < Spinner />; return < div > { user . name } </ div >; } Enter fullscreen mode Exit fullscreen mode It works. But look at what you had to do: manage two pieces of state, write an effect, handle the loading condition manually, repeat this pattern in every component that fetches data.…