Fix overlapping replay slots after a prerender abort #37850

Merged
gnoff opened 5:38pm on October 14, 2026 wanted to merge 82 ฮ” into facebook/react main from
jstory/fizz-overlapping-postpones
Diff Delta:
82
About 91 Diff Delta/hour
Classified as:  Bug Fix

gnoff's Description of Work

Summary

A prerender can abort during a retry after the retried task has spawned a suspended child. Abort cleanup records a replay slot for the whole task, then tries to record a child slot at the same key path. Resuming the parent already renders that child, so the existing assertion turns a resumable abort into a prerender error. This surfaced after the abort unwind change in #37710.

Keep the parent slot and ignore the redundant child slot. The regression test verifies that both children render after resuming.

How did you test this change?



  • yarn test ReactDOMFizzStaticBrowser --runInBand (36 passed)


  • yarn test ReactDOMFizzStaticBrowser --prod --runInBand (36 passed)

  • yarn linc

  • node scripts/prettier/index.js check-changed

2 total changed files
Loading changes...
Loading changes...
Review complete ๐Ÿ’ช
Thus concludes todayโ€™s episode of โ€œJust One Small Changeโ€