This issue involves React 19.2 suspense boundary SSR behavior in Next.js, which may require deep React internals knowledge.
The issue reproduces a React 19.2 suspense boundary SSR bug in Next.js, where fallback content is incorrectly rendered in server HTML. The fix likely requires understanding React's SSR behavior and suspense boundaries, potentially involving upstream React changes.
https://github.com/jaslong/next-react-19.2-suspense-boundary-ssr
Run the dev server and open http://localhost:3000 (app router) or https://localhost:3000/pages (pages router) with devtools open.
You can see the server HTML in the network tab of the GET request or with JavaScript disabled.
This repo reproduces a React 19.2 suspense boundary SSR issue in Next.js facebook/react issue #35460. You'll see suspense boundaries containing large HTML content that can't possibly throw/suspend, yet the fallback is rendered in the server HTML.
npx next info main 640174a
Operating System:
Platform: darwin
Arch: arm64
Version: Darwin Kernel Version 25.3.0: Wed Jan 28 20:54:55 PST 2026; root:xnu-12377.91.3~2/RELEASE_ARM64_T6031
Available memory (MB): 36864
Available CPU cores: 14
Binaries:
Node: 24.4.0
npm: 11.4.2
Yarn: 1.22.22
pnpm: 10.8.0
Relevant Packages:
next: 16.2.1-canary.4 // There is a newer canary version (16.2.1-canary.5) available, please upgrade!
eslint-config-next: N/A
react: 19.2.4
react-dom: 19.2.4
typescript: 5.9.3
Next.js Config:
output: N/A
⚠ There is a newer canary version (16.2.1-canary.5) available, please upgrade!
Please try the latest canary version (`npm install next@canary`) to confirm the issue still exists before creating a new issue.
Read more - https://nextjs.org/docs/messages/opening-an-issue
React
next dev (local), next build (local), next
Claim this issue to let others know you're working on it. You'll earn 35 points when you complete it!