Skip to content

Commit

Permalink
Don't modify keyPath until right before recursive renderNode call
Browse files Browse the repository at this point in the history
Currently, if a component suspends, the keyPath has already been modified to
include the identity of the component itself; the path is set before the
component body is called (akin to the begin phase in Fiber). An accidental
consequence is that when the promise resolves and component is retried, the
identity gets appended to the keyPath again, leading to a duplicate node in
the path.

To address this, we should only modify contexts after any code that may suspend.
For maximum safety, this should occur as late as possible: right before the
recursive renderNode call, before the children are rendered.
  • Loading branch information
acdlite committed Sep 13, 2023
1 parent 7a3cb8f commit e03c96d
Showing 1 changed file with 94 additions and 19 deletions.
Loading

0 comments on commit e03c96d

Please sign in to comment.