Performance
Why components re-render, how reconciliation works, memo, useMemo, useCallback, the React Compiler, profiling, transitions, code splitting, big lists and Activity.
Most React apps are fast enough without any tuning. When one isn't, the cause is almost always one of a few things: components rendering far more often than needed, an expensive calculation repeated on every render, a huge list put into the DOM, or too much JavaScript downloaded up front. This phase teaches you to see each of these problems, measure it, and fix it with the right tool instead of guessing.
You'll start with the cost model: why a component renders, why rendering is not the same as updating the DOM, and how React's reconciliation compares trees using element types and keys. Then the classic tools: memo, useMemo and useCallback, and the React Compiler, which now adds most of that memoisation for you at build time. You'll measure with the React DevTools Profiler and the <Profiler> component before changing anything.
The last part is about keeping the app responsive while work happens: concurrent rendering with useTransition and useDeferredValue, code splitting with lazy, rendering huge lists with windowing, and the React 19.2 <Activity> component that hides part of the screen without losing its state. Every live example logs what React really does, so you can watch renders happen and disappear.
Practise this phase
Hands-on exercises: write the code, see your page live, and press Check to have it tested automatically.