Skip to content

Commit

Permalink
[Fizz] Support aborting with Postpone (facebook#28183)
Browse files Browse the repository at this point in the history
Semantically if you make your reason for aborting a Postpone instance
the render should not hit the error pathways but should instead follow
the postpone pathways. It's awkward today to actually get your hands on
a Postpone instance because you have to catch the throw from postpone
and then pass that into `abort()` or `AbortController.abort()`
(depending on the renderer API you are using)

This change makes it so that in most circumstances if you abort with a
postpone the `onPostpone` handler will be called and the Suspense
boundaries still pending will be put into client render mode with the
appropriate postpone digest to avoid trigger recoverable error pathways
on the client.

Similar to postponing in the shell during a resume or render however if
you abort before the shell is complete in a resume or render we will
fatally error. The fatal error is contextualized by React to avoid
passing the postpone object itself to the `onError` and related options.
  • Loading branch information
gnoff authored and AndyPengc12 committed Apr 15, 2024
1 parent 68f1daf commit bbca2eb
Show file tree
Hide file tree
Showing 3 changed files with 494 additions and 5 deletions.
Loading

0 comments on commit bbca2eb

Please sign in to comment.