v0.8.21

leptos-rs/leptosv0.8.21Sep 26, 2026by gbj

Upgrading?

AI Summary

This release focuses on fixing critical rendering bugs in `<For/>` components and Suspense, alongside improvements to the Islands router and wasm-split prefetch machinery. It includes dependency updates, macro refactoring, and introduces a simplified `use_nonce()` API.

Key Highlights

  • Fixed `<For/>` key handling and hydration order to ensure correct rendering
  • Resolved concurrency issues with Suspense and error boundary notifications
  • Fixed Islands router branch marker and wasm-split prefetch panic
  • Refactored macros to use syn diagnostics instead of proc-macro-error2
  • Always expose `use_nonce()` function for nonces

New Features

  • Always expose `use_nonce()`
  • Convert subfield into MaybeProp in reactive stores

Full Release Notes

## What's Changed
* chore(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in https://github.com/leptos-rs/leptos/pull/4822
* fix: handle `<For/>` keys correctly in non-async HTML rendering (see #4780, #4833) by @gbj in https://github.com/leptos-rs/leptos/pull/4834
* fix: notify error boundaries in LocalResource-only Suspense (closes #4826) by @gbj in https://github.com/leptos-rs/leptos/pull/4827
* feat(leptos): always expose use_nonce() (simplified version of #4825) by @Ofenhed in https://github.com/leptos-rs/leptos/pull/4828
* chore: make sure failing tests in CI actually cause failures by @gbj in https://github.com/leptos-rs/leptos/pull/4840
* fix: include submit input value in FormData when submitting Form by @dav-wolff in https://github.com/leptos-rs/leptos/pull/4836
* Fix/islands router branch marker off by one by @seanaye in https://github.com/leptos-rs/leptos/pull/4832
* Fix two concurrency issues with Suspense by @gbj in https://github.com/leptos-rs/leptos/pull/4853
* fix: don't panic in the wasm-split prefetch machinery when its lock is unavailable by @JohnHarrison in https://github.com/leptos-rs/leptos/pull/4830
* Assorted islands-router fixes by @gbj in https://github.com/leptos-rs/leptos/pull/4855
* fix: check for resource reads inside Signal/Memo used as attribute values (see #4856) by @gbj in https://github.com/leptos-rs/leptos/pull/4859
* fix(reactive_graph): ignore dropped local-resource listener by @adrianncovaci in https://github.com/leptos-rs/leptos/pull/4856
* feat(reactive_stores): convert a subfield into MaybeProp by @svieujot in https://github.com/leptos-rs/leptos/pull/4867
* fix(leptos): nonce incorrectly generated for wasm preload by @Ofenhed in https://github.com/leptos-rs/leptos/pull/4844
* fix: UnsyncCallback/Callback comments by @geovie in https://github.com/leptos-rs/leptos/pull/4868
* fix(examples): prevent Trunk auto-reload during browser tests by @larstobi in https://github.com/leptos-rs/leptos/pull/4872
* fix(examples): await the add-1000-counters click by @larstobi in https://github.com/leptos-rs/leptos/pull/4871
* fix(ci): use locked dependencies when installing Trunk by @larstobi in https://github.com/leptos-rs/leptos/pull/4877
* refactor(macros): replace direct proc-macro-error2 usage with syn diagnostics by @larstobi in https://github.com/leptos-rs/leptos/pull/4862
* chore(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in https://github.com/leptos-rs/leptos/pull/4841
* chore(deps): bump actions-rust-lang/setup-rust-toolchain from 1 to 2 by @dependabot[bot] in https://github.com/leptos-rs/leptos/pull/4876
* fix: hydrate `<For>` children in the same order we SSR them (closes #4881) by @gbj in https://github.com/leptos-rs/leptos/pull/4882

## New Contributors
* @dav-wolff made their first contribution in https://github.com/leptos-rs/leptos/pull/4836
* @adrianncovaci made their first contribution in https://github.com/leptos-rs/leptos/pull/4856
* @svieujot made their first contribution in https://github.com/leptos-rs/leptos/pull/4867
* @larstobi made their first contribution in https://github.com/leptos-rs/leptos/pull/4872

**Full Changelog**: https://github.com/leptos-rs/leptos/compare/v0.8.19...v0.8.20

Related Repositories