React 19’s Change to Suspense Parallel Rendering and Its Performance Impact
The article explains how React 19 silently altered Suspense behavior by disabling parallel rendering of sibling components, turning data fetching into a waterfall pattern, which caused significant performance regressions for many sites, sparked community backlash, and was eventually rolled back after extensive discussion.
Two months ago the highly anticipated React 19 was released, bringing many new features and improvements, but a subtle change went unnoticed until last week: React 19 disables parallel rendering of sibling elements wrapped in the same <Suspense> and replaces it with a waterfall data‑fetching approach.
The change was highlighted by Dominik (TkDodo), a core maintainer of TanStack Query, who pointed out that React 19 no longer allows concurrent rendering of sibling components inside a single <Suspense> boundary, forcing data requests to happen sequentially.
Community reaction was intense, with numerous developers sharing screenshots of discussions on X (formerly Twitter) and expressing concerns about the performance impact on production sites that rely on Suspense for client‑side data fetching.
To illustrate the issue, the article presents a concrete example. In React 18, the following code triggers parallel data fetching for three components wrapped by a single <Suspense> :
function App() {
return (
<>
);
}
const ComponentThatFetchesData = ({ val }) => {
const result = fetchSomethingSuspense(val);
return
{result}
;
};When run on React 18, all three fetchSomethingSuspense calls start almost simultaneously, as shown by console logs.
Running the identical code on React 19 (canary) produces a waterfall effect: each data request starts only after the previous one finishes, dramatically slowing down page load.
The regression originates from PR #26380 , which altered the rendering algorithm so that React stops rendering sibling components inside the same Suspense once the first one suspends, waiting for its data before proceeding.
This new behavior not only affects Suspense data fetching but also impacts React.lazy and other patterns that rely on concurrent rendering.
After extensive community pushback and heated discussions, the React team decided to roll back the change, preserving the original parallel rendering semantics.
References:
React PR #26380
How React 19 Almost Made the Internet Slower
Live example on StackBlitz
IT Services Circle
Delivering cutting-edge internet insights and practical learning resources. We're a passionate and principled IT media platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.