How React Decides to Re-render
Renders are not DOM updates. Understand what actually triggers a render, what reconciliation does, and when memoization earns its keep.
Category
15 articles
Renders are not DOM updates. Understand what actually triggers a render, what reconciliation does, and when memoization earns its keep.
How React server actions let forms work before JavaScript loads, and the patterns needed to layer client-side validation and pending state on top.
A practical guide to using the React DevTools Profiler to find unnecessary re-renders and expensive commits before reaching for memoization.
How React portals render outside the DOM tree while events still bubble through React's component hierarchy, and what that means for event handling.
How windowing libraries keep React lists fast at thousands of rows by rendering only what's visible, and where the technique breaks down.
Practical TanStack Query patterns for query keys, cache invalidation, and optimistic updates that hold up in real React applications.
How to place error boundaries strategically in a React tree so a single failing widget degrades gracefully instead of blanking the entire page.
How React 19's actions and the use() hook simplify pending state, error handling, and reading promises or context inside components.
Concurrent rendering lets React interrupt its own work for something more urgent. Transitions are how you tell React which updates can wait.
Testing Library's core rule — the more your tests resemble how software is used, the more confidence they give you — changes what a good React test looks like.
Controlled inputs became the reflexive default in React, but uncontrolled forms are often simpler, faster, and closer to how the platform already works.
The state management debate settled into a layered answer: different tools for local, cross-cutting, and server state, not one library for everything.
Suspense is a coordination mechanism for async UI, not a spinner component. Understanding what it actually catches changes how you structure data fetching.
Most useEffect bugs come from using it as a general-purpose lifecycle hook. Here's how to tell when you actually need it — and when you don't.
RSCs are not server-side rendering with a new name. They change where component code runs at all, and that changes what you can safely do in a component.