Wait for the suspense boundary above the router to resolve before sending the first streaming chunk (#3891)

* Change the suspense streaming context after suspense is resolved in the router

* Wait for the suspense context before streaming the first chunk in ssr

* forward more response parts

* warn

* extract the hydration format into a crate

* Fix hydration when no data is sent

* forward web and server features

* Fix suspense that starts on the client

* fix use_server_future on the client

* Add documentation for fullstack hooks and protocol

* downgrade rust edition

* fix clippy

* fix tests

* fix clippy

* Fix pure web compile

* undo changes to the fullstack router example

* fix formatting
This commit is contained in:
Evan Almloff authored and GitHub committed 2025-04-08 16:01:21 -05:00
1 parent 4f74ef81d1
commit 84221f55a0
45 files changed
+988 -533

No files matched your search

@@ -107,6 +107,9 @@ async fn server_error() -> Result<String, ServerFnError> {
#[component]
fn Errors() -> Element {
// Make the suspense boundary below happen during streaming
use_hook(commit_initial_chunk);
rsx! {
// This is a tricky case for suspense https://github.com/DioxusLabs/dioxus/issues/2570
// Root suspense boundary is already resolved when the inner suspense boundary throws an error.
@@ -132,7 +135,7 @@ fn Errors() -> Element {
pub fn ThrowsError() -> Element {
use_server_future(server_error)?
.unwrap()
.map_err(|err| RenderError::Aborted(CapturedError::from_display(err)))?;
.map_err(CapturedError::from_display)?;
rsx! {
"success"
}