Leptos Web Framework Releases Version 0.9.0-rc1
Leptos 0.9.0-rc1 introduces behavioral updates for server functions, API changes for signals, and improvements to the reactive system and routing.
Leptos v0.9.0-rc1 arrived on 31 October as the second release candidate for version 0.9 of the Rust web framework, with most applications expected to upgrade from 0.8 without code changes despite a few behavioral differences.
Server functions now honor the server's request body-size limit for multipart form data and file uploads. For Axum, which defaults to 2 megabytes, you must configure a higher limit globally or via middleware per function. Lazy-loading and code-splitting now require enabling the lazy feature flag on the leptos crate to reduce binary size for unused projects. Default server-function input encoding now uses serde_qs 1.0, reducing workarounds for empty collections.
Several API updates alter typing and signals. on:toggle uses ToggleEvent instead of Event. Function-call syntax like foo() and set_foo(13) for reading and writing signals now compiles on stable Rust alongside nightly. Signal trait changes mean you may need to dereference Signal<T> with foo=*signal when passing to functions taking impl Fn() -> T.
Since v0.9.0-rc0, server functions keep browser fetches abortable until body reading finishes and apply corrected streaming body limits. Reactive-system fixes cancel async polling on owner disposal and prune dead subscribers. Additional fixes allow Suspense inside ErrorBoundary, correct <Title/> rebuilding, remove duplicated hydration IDs, and keep route data alive until view replacement. The islands router now disposes island state upon removal and sends hydration scripts once, while ParamsMap adds decoded insert and replace variants.
First-time contributors include wdceng, emilbonnek, kittyandrew, Kanrinin-sama, philippedev101, and DefectingCat.
