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

+2
View File
@@ -13,6 +13,7 @@ keywords = ["dom", "ui", "gui", "react", "wasm"]
dioxus-lib = { workspace = true }
dioxus-history = { workspace = true }
dioxus-router-macro = { workspace = true }
dioxus-fullstack-hooks = { workspace = true, optional = true }
tracing = { workspace = true }
urlencoding = "2.1.3"
url = "2.3.1"
@@ -21,6 +22,7 @@ rustversion = "1.0.17"
[features]
default = []
streaming = ["dep:dioxus-fullstack-hooks"]
wasm-split = []
[dev-dependencies]
+5
View File
@@ -44,6 +44,11 @@ pub fn Router<R: Routable + Clone>(props: RouterProps<R>) -> Element {
provide_router_context(RouterContext::new(props.config.call(())));
});
#[cfg(feature = "streaming")]
use_after_suspense_resolved(|| {
dioxus_fullstack_hooks::commit_initial_chunk();
});
use_hook(|| {
provide_context(OutletContext::<R>::new());
});