Streaming
Deferred #[load(stream)] handlers let SSR flush the shell immediately while slow data streams in.
Stream loader
#[load(stream)]
async fn home(req: &FlowRequest) -> HomeData {
// Slow DB query — does not block initial HTML
db::home(req).await
}Page pattern
pub fn page(_req: FlowRequest) -> View {
match use_home_load() {
LoadValue::Pending => view! {
<article>
<h1>"Home"</h1>
{stream_slot("home")}
</article>
},
LoadValue::Ok(data) => home_view(&data),
LoadValue::Err(e) => error_page(&FlowError::Loader(e)),
}
}
fn home_view(data: &HomeData) -> View {
view! {
<article>
<h1>{data.title.clone()}</h1>
<p>{data.body.clone()}</p>
</article>
}
}stream_slot
stream_slot(name) marks where deferred HTML is inserted when the loader completes. Enable streaming on FlowApp:
FlowApp::new()
.streaming(true)
.auto_pages("src/pages", PagesRegistry)
.serve(FlowServeOptions::default())
.awaitCookbook
See Streaming loaders cookbook for a complete deferred pattern.