A component suspends when it reads a promise that has not settled. React walks up to the nearest Suspense boundary, shows its fallback until the promise resolves, then renders the real content. In React 19 you read a promise with the use hook, normally created in a Server Component or a cache and passed down. Suspense coordinates loading states; it does not fetch anything itself.
Why interviewers ask this
Plenty of people can describe Suspense as a loading spinner wrapper. The interviewer wants to know whether you understand the mechanism, that suspending is a throw and retry model, and the important detail that the framework or library does the fetching. They are also checking that you know where to place boundaries so a slow panel does not blank out a whole page.
How to structure your answer
- Say what suspending means and what the boundary does.
- Name where the promise should come from, and where it must not.
- Explain boundary placement and streaming.
- Mention the waterfall risk and how you avoid it.
Example answer
Suspense is a coordination primitive, not a data layer. When a component reads a promise that has not resolved, it suspends, React finds the nearest boundary above it, renders that fallback, and retries the subtree when the promise settles. In React 19 the way you read one is the use hook, and the important rule is that the promise cannot be created during the render of the component calling use, otherwise you make a fresh promise every attempt and it never settles. So in practice the promise starts in a Server Component or comes out of a cache and gets passed down. On the server side that pairs with streaming: the shell goes out immediately, and slower sections stream in as their data lands. For boundary placement I try to wrap the smallest thing a user would accept seeing a skeleton for, so a slow recommendations panel does not hold up the product details. The trap is sequential awaits creating a waterfall, so I kick off independent fetches together before I await them.
Walking into this interview soon? GhostPilot listens to your live call, spots the question the moment it is asked, and puts a structured answer on your screen in real time. Try it on your next mock, or grab a $29 Session Pass, no subscription, for the real thing.
See how it worksFollow-up questions to expect
- Why should you not create the promise inside the component that calls use?
- How do Suspense boundaries interact with streaming server rendering?
- How do you avoid a request waterfall across nested components?
Related react developer questions
Your interviewer will ask their own version of this. Paste your actual job description into the free Question Predictor and get the 20 questions that role is most likely to ask, with what each one is really probing.
Predict my questions