Lesson 21 of 80
The reconciliation lesson covers what React decides to re-render; Fiber is the data structure that lets React pause that work partway through, something the old algorithm genuinely couldn't do.
15 min read
Every option explains itself — why the right one is right, and why each wrong one is wrong. Miss one and it comes back later on a spaced-repetition schedule.
Question 1 of 2
What specific limitation of pre-Fiber (React 15 and earlier) reconciliation did the Fiber architecture solve?
Hints without spoilers, and a plain explanation of why a wrong answer was wrong — answered only from this lesson. Free account, no card.
Sign up freeWhat interviewers actually ask about this, and what a strong answer has to cover.
A strong answer covers
Likely follow-ups
Before React 16, reconciliation walked the component tree recursively — once started, that walk could not be paused. A big tree meant one long, uninterruptible stretch of work that could block the browser from responding to a keystroke or a scroll.
Fiber re-architected reconciliation around a different data structure: instead of a recursive call stack, each component becomes a "fiber" — a JS object forming a linked list/tree that React can walk incrementally, one unit of work at a time, checking after each unit whether something more urgent (a keystroke) needs the main thread instead.
Pre-Fiber: reconciliation was one long recursive walk down the tree — once started, it could not pause.
const [isPending, startTransition] = useTransition();
function handleChange(e) {
setQuery(e.target.value); // urgent: keep the input responsive
startTransition(() => {
setResults(filterHugeList(e.target.value)); // low-priority: can be interrupted
});
}
startTransition marks the expensive re-render as low priority — if the user types again before it finishes, React can abandon that in-progress render and start fresh with the latest input, instead of finishing a now-stale render first. isPending lets you show a loading indicator while that lower-priority work is still catching up.
useTransition/useDeferredValue possible at all.At senior levels, "what changed in React 16's Fiber architecture, and why does it matter?" tests whether you understand why concurrent features like useTransition exist at all — not just that they're new hooks to memorize the API for.