Skip to content

Releases: leptos-rs/leptos

v0.9.0-beta

v0.9.0-beta Pre-release
Pre-release

Choose a tag to compare

@gbj gbj released this 18 Jul 18:59

This is a beta release from the leptos_0.9 branch, to give people an opportunity to start playing around.

I have not yet written up a full changelog but you can find the PR at #4522

Notable changes:

  • lazy feature: Lazy-loading/code-splitting is now gated behind a lazy flag on the leptos crate. This saves binary size for anyone who's not using lazy-loading; if you are, just enable the feature.
  • serde_qs 1.0: we've migrated to the 1.0 series of releases for our default server-function input encoding (form URL data). This should reduce the requirement for #[server(default)] and similar workarounds for empty collections.
  • on:toggle is now typed as a ToggleEvent rather than plain Event
  • Function-call syntax for signal reads is now supported on stable (i.e., let (foo, set_foo) = signal(42); set_foo(13); foo() should work on both stable and nightly)
  • Some of the trait implementations around signals have changed. Specifically, signals no longer implement the Fn() traits directly on nightly; instead, on both stable and nightly, they deref to a dyn Fn(). This means that you can call signals as functions on either nightly or stable. If you had props that took impl Fn() -> T previously (and could receive a signal or a closure on nightly), you can now take impl SignalOrFn<Output = T>. This is probably the biggest change in 0.9, so let me know if you encounter any issues.
  • A wide variety of semver-breaking changes that probably won't affect user code.

Many of the changes in this release are intended to smooth out various APIs and don't seem to cause significant breakage, but please let me know if they do. This is not intended to require meaningful migration; if you find that it's causing you to need to make significant changes to your code, please share some examples and we'll see if we can minimize the breakage.

What's Changed

  • fix: disable lazy hydration when not using lazy-loading to avoid binary-size cost by @gbj in #4438
  • Support ToggleEvent for on:toggle. by @azriel91 in #4362
  • Remove _with_handle suffix from functions by @mondeja in #4388
  • Remove redundant render_app_async_stream_with_context method by @alexisfontaine in #4309
  • Make ScopedFuture internals private by @zakstucke in #4274
  • change: migrate to serde_qs 1.0 (see #4014) by @gbj in #4237
  • fix!: Enable setting content type for server fn middleware errors by @spencewenski in #4249
  • Signal API tweaks by @gbj in #4523
  • feat: Allow customizing the status code of server fn error responses by @spencewenski in #4536
  • Adding feature for easy conversion from Params to ParamsMap by @cerdelen in #4553
  • Show unification by @maccesch in #4466
  • Update main and fix existing merge conflict in branch leptos_0.9 by @metatoaster in #4591
  • Full change to #4528 by @metatoaster in #4535
  • Merge main into leptos_0.9 by @metatoaster in #4624
  • fix: .into_reactive_value conversion for signal-function types on nightly (closes #4608) by @gbj in #4617
  • Don't force next axum state to be (). by @metatoaster in #4653
  • change: adopt deref-based fn call syntax on both stable and nightly by @gbj in #4654
  • Allow server_fn_macro to specify a default client type by @darakreqo in #4594
  • Remove IntoIterator bound from KeyedSubfield by @tysen in #4605
  • Tweaks to Suspense behavior by @gbj in #4691
  • fix(server_fn): make FormatType::into_encoded_string lossy instead of panicking by @sabify in #4719
  • fix(server_fn): avoid panic on malformed Content-Type in multipart codec by @sabify in #4718
  • fix: preserve sync chunk order in out-of-order SSR template by @tysen in #4716
  • fix(server_fn): use StreamingText::CONTENT_TYPE for StreamingText codec by @sabify in #4721
  • leptos_0.9: rust edition 2024 and upgrade deps by @sabify in #4717
  • fix(server_fn): use correct redirect header in reqwest client by @sabify in #4722
  • fix(server_fn): apply back-pressure in websocket forwarding loop by @sabify in #4725
  • fix(server_fn): browser and reqwest client prepend server_url for form_data and streaming requests by @sabify in #4720
  • fix(server_fn): avoid panic on invalid path bytes in error_response by @sabify in #4724
  • fix(server_fn_macro): quality of life fixes by @sabify in #4726
  • Fix HTML-injection (XSS) sinks in tachys and leptos_macro by @sabify in #4730
  • fix(CI): do not fail fast by @sabify in #4740
  • Fix several bugs in reactive_graph by @sabify in #4734
  • fix(CI): use official actions for toolchain and binary installs, #4740 follow up by @sabify in #4742
  • fix(CI): drop wretry wrapper from action steps by @sabify in #4743
  • Remove unused unstable FromWasmAbi bound by @ealmloff in #4741
  • Fix five bugs in the router by @sabify in #4731
  • Quality of life fixes for router_macro by @sabify in #4732
  • Quality of life fixes for leptos_macro by @sabify in #4738
  • Fix some oco_ref performance bugs by @sabify in #4744
  • Fix HTML injection (XSS) and other bugs in hydration_context by @sabify in #4747
  • Harden Leptos server integrations (axum): panics, info leaks, path traversal & resource leaks by @sabify in #4739
  • Fix several leptos_server correctness bugs by @sabify in #4753
  • Fix correctness bugs in any_error by @sabify in #4756
  • Fix any_spawner correctness bugs by @sabify in #4757
  • fix: ensure that nested cleanups happen in right order (closes #4758) by @gbj in #4762
  • fix+perf: server Url::origin() returns the real request origin by @sabify in #4760
  • perf(leptos_axum): cut per-render allocations in the SSR hot path by @sabify in #4761
  • Reintroduce auto live reload protocol option by @veigaribo in #4265
  • Performance optimizations for leptos by @sabify in #4763
  • Harden leptos actix server integrations by @sabify in #4755
  • perf(any_spawner): outline non-generic spawn dispatch tail by @sabify in #4766
  • fix(tachys): stop wrapping inert SVG children in a spurious by @sabify in #4767
  • fix(ci): include running wasm_bindgen tests in server_fn by @sabify in #4770
  • fix: defer owner drop in OwnedView (closes #4769) by @gbj in #4771
  • Fix bugs in reactive_stores and reactive_stores_macro by @sabify in #4735
  • feat(router): allow permanent redirects (301) by @Baptistemontan in #4775
  • Performance optimization for server_fn by @sabify in #4765
  • 0.9: fix MaybeProp fn deref by @gbj in #4779
  • Fix leptos_dom correctness bugs by @sabify in #4754
  • Performance optimization for tachys by @sabify in #4764
  • perf(router): optimize hot-path route matching by @sabify in #4778
  • feat(nonce): add Nonce::from_value for externally-supplied CSP nonces by @anagrius in #4786
  • feat(macro): collapse reactive child closure monomorphizations on --cfg erase_components by @skyf0l in #4711
  • docs(axum): remove unused LeptosOptions import from render_app_to_stream_with_context example by @SAY-5 in #4714
  • perf(hydration_context): optimize streaming and async SSR resource handling by @sabify in #4776
  • fix(tachys): pass FROM_SERVER=false in AnyAttribute::hydrate_from_template by @Noethix55555 in #4792
  • fix(router): propagate error instead of unwrapping in anchor click handler by @Noethix55555 in #4789
  • fix: notif...
Read more

v0.8.19

Choose a tag to compare

@gbj gbj released this 25 Jun 11:26

A patch release, mostly of bugfixes.

Note: one of these includes a behavior change, which is that the primary server function encodings now respect the Axum/Actix request body size limits, rather than ignoring them. If you are accustomed to sending very large data (for example, a POST request > 2mb) via server functions, you may need to increase the request body size limit via Actix PayloadConfig or Axum DefaultBodyLimit (see docs for each server framework.)

Multipart data (file uploads) are not affected.

What's Changed

  • chore: clippy by @gbj in #4685
  • Fix broken Trunk website link by @sunsetlover36 in #4687
  • chore(deps): bump actix-http from 3.11.2 to 3.12.1 by @dependabot[bot] in #4690
  • chore(deps): bump rustls-webpki from 0.103.8 to 0.103.13 by @dependabot[bot] in #4689
  • chore(deps): bump autofix-ci/action from 1.3.3 to 1.3.4 by @dependabot[bot] in #4686
  • chore(deps): bump pnpm/action-setup from 5 to 6 by @dependabot[bot] in #4681
  • Fix immediate effect memo recomputation by @alecmocatta in #4683
  • fix: broken link and change name in example by @NCura in #4704
  • fix: issues with nested keyed store field initialization (see #4697) by @gbj in #4699
  • chore: Remove regex dependency from leptos_config by @paul-hansen in #4696
  • fix(CI): do not fail fast by @sabify in #4740
  • fix(CI): use official actions for toolchain and binary installs, #4740 follow up by @sabify in #4742
  • fix(CI): drop wretry wrapper from action steps by @sabify in #4743
  • Remove unused unstable FromWasmAbi bound by @ealmloff in #4741
  • fix: ensure that nested cleanups happen in right order (closes #4758) by @gbj in #4762
  • fix: defer owner drop in OwnedView (closes #4769) by @gbj in #4771
  • feat(nonce): add Nonce::from_value for externally-supplied CSP nonces by @anagrius in #4786
  • feat(macro): collapse reactive child closure monomorphizations on --cfg erase_components by @skyf0l in #4711
  • docs(axum): remove unused LeptosOptions import from render_app_to_stream_with_context example by @SAY-5 in #4714
  • fix(tachys): pass FROM_SERVER=false in AnyAttribute::hydrate_from_template by @Noethix55555 in #4792
  • fix(router): propagate error instead of unwrapping in anchor click handler by @Noethix55555 in #4789
  • fix: notify when structure changes during keyed patch (closes #4806) by @gbj in #4807
  • feat: Add the #[prop(marker)] option by @Baptistemontan in #4774
  • feat(leptos_macro): Adding a lazy_preload macro by @edmondj in #4729
  • fix(router): reject over-long static segment instead of partial-matching by @Noethix55555 in #4790
  • fix(server_fn): don't panic in set_server_url if already set by @Noethix55555 in #4795
  • fix(router): return early in Form submit handler instead of panic by @Noethix55555 in #4798
  • chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #4808
  • chore: clean up some leptos_macro docs by @gbj in #4811
  • fix: respect Axum/Actix built-in body size limits by @gbj in #4813
  • Escaping fixes backported from 0.9 by @gbj in #4812

New Contributors

Full Changelog: v0.8.18...v0.8.19

v0.9.0-alpha

v0.9.0-alpha Pre-release
Pre-release

Choose a tag to compare

@gbj gbj released this 19 May 13:19
23999de

This is an alpha release from the leptos_0.9 branch, to give people an opportunity to start playing around.

I have not yet written up a full changelog but you can find the PR at #4522

Notable changes:

  • lazy feature: Lazy-loading/code-splitting is now gated behind a lazy flag on the leptos crate. This saves binary size for anyone who's not using lazy-loading; if you are, just enable the feature.
  • serde_qs 1.0: we've migrated to the 1.0 series of releases for our default server-function input encoding (form URL data). This should reduce the requirement for #[server(default)] and similar workarounds for empty collections.
  • on:toggle is now typed as a ToggleEvent rather than plain Event
  • Function-call syntax for signal reads is now supported on stable (i.e., let (foo, set_foo) = signal(42); set_foo(13); foo() should work on both stable and nightly)
  • Some of the trait implementations around signals have changed: in the worst case, if you have a component or function that takes impl Fn() -> T and you pass it a Signal<T> you may need to dereference it (foo=*signal rather than foo=signal). Let us know if there are any more noticeable breakages here.
  • A wide variety of semver-breaking changes that probably won't affect user code.

Again, this is a bit of a "canary": many of the changes in this release are intended to smooth out various APIs and don't seem to cause significant breakage, but please let me know if they do. This is not intended to require meaningful migration; if you find that it's causing you to need to make significant changes to your code, please share some examples and we'll see if we can minimize the breakage.

v0.8.18

Choose a tag to compare

@gbj gbj released this 16 Apr 17:41

What's Changed

  • doc(leptos_config): Improve docs readability; Add # Errors sections by @DanikVitek in #4593
  • feat(leptos_config): Implement LeptosOptions::css_path by @DanikVitek in #4592
  • fix: prevent circular reference in Action by using WeakOwner (closes #4602) by @gbj in #4603
  • Better implementation of css_path with that moved to css_file_path to better reflect/compliment underlying use cases by @metatoaster in #4615
  • feat: Extend either macro by @domwst in #4613
  • Update readme playground link to that of leptos.dev by @xiaogz in #4625
  • chore: update nightly toolchain and adjust trybuild stderr by @gbj in #4626
  • chore: actually test nightly in CI by @gbj in #4637
  • Fixes deriving Patch for Store where store attribute is being used. by @mskorkowski in #4620
  • Document getrandom/rand setup for wasm32 builds, closes #3979 by @ordokr in #4648
  • A few Store cleanup items by @gbj in #4645
  • Fix typo: occured -> occurred in leptos_config doc comment in #4657
  • fix: don't panic on invalid UTF-8 in paths (closes #4662) by @gbj in #4663
  • Deriving Store no longer generates warning about missing docs by @mskorkowski in #4671
  • chore(deps): bump pnpm/action-setup from 4 to 5 by @dependabot[bot] in #4658
  • feat(either_of): Add Either! convenience macro by @DanikVitek in #4627
  • chore: pull in latest wasm_split_helpers version by @gbj in #4684

New Contributors

Full Changelog: v0.8.17...v0.8.18

v0.8.17

Choose a tag to compare

@gbj gbj released this 01 Mar 02:11

What's Changed

  • feat: add bitcode 's serde integration codec by @rpfontana in #4585
  • fix iteration over keyed store fields (closes #4582) by @gbj in #4584
  • fix(tachys): replace opaque panic messages with actionable SSR feature diagnostic by @DrudgeDance in #4588
  • (wip): keyed patching for store fields by @gbj in #4544
  • fix: Remove the dependency on ::std in either_of by @DanikVitek in #4583
  • fix: apply server function lint attributes to original and generated fn by @LeoniePhiline in #4598

New Contributors

Full Changelog: v0.8.16...v0.8.17

v0.8.16

Choose a tag to compare

@gbj gbj released this 16 Feb 21:03

What's Changed

  • fix: do not show Transition fallback on 2nd change if 1st change resolved synchronously (closes #4492) by @gbj in #4495
  • fix: wrong path for IntoAnyAttribute in macro expansion from #4481 by @gbj in #4500
  • Fix untracked writes on keyed store fields by @gbj in #4501
  • chore(deps): bump the rust-dependencies group across 1 directory with 19 updates by @dependabot[bot] in #4499
  • chore(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in #4489
  • wip: fix issue with reading resources inside For child (closes #4503) by @gbj in #4504
  • fix: track parents when tracking keyed subfield (second half of #4475) by @gbj in #4510
  • fix: preserve existing attributes when rebuilding AnyViewWithAttrs (closes #4512) by @gbj in #4513
  • chore: fix nonsensical example in reactive_stores by @gbj in #4516
  • Allow argument names with suffixes in server functions by @aisuzuki in #4496
  • Implement Params derive macro without nightly by @luxalpa in #4514
  • chore: fix broken links in docs by @fbdb in #4505
  • chore(deps): bump the rust-dependencies group across 1 directory with 23 updates by @dependabot[bot] in #4515
  • fix: auto re-connect dev websocket live reload on close by @sabify in #4517
  • fix: add 'static return annotation for <A/> (closes #4525) by @gbj in #4531
  • fix: allow expect lint attribute in server fn macro by @mondeja in #4529
  • Fix issue with missing documentation parts on docs.rs by @ahlinc in #4526
  • chore: remove parking_lot (cf. #4410) by @gbj in #4520
  • fix: make server_fn Websocket protocol respect custom server URL by @adoyle0 in #4538
  • chore(deps): bump pnpm from 9.15.9 to 10.27.0 in /examples/counters/e2e in the npm_and_yarn group across 1 directory by @dependabot[bot] in #4532
  • Break up file_and_error_handler_with_context into tower services by @metatoaster in #4528
  • Fixed: Env inconsistent deserialization by @maeldroem in #4524
  • feat: Implement InnerHtmlValue for Oco<'static, str> by @pheki in #4554
  • fix: only install cargo-nextest with --locked by @gbj in #4560
  • Remove linear-map dependency by @alexisfontaine in #4563
  • Add closedby attribute to HtmlDialogElement by @bngo92 in #4549
  • fix: add transparent to Show/ShowLet to work around #4470 by @gbj in #4519
  • Codegen optimizations by @alexisfontaine in #4552
  • fix: Strip trailing _ to fix inert SVG use_ elements by @pheki in #4569
  • feat: rely on dependencies major versions with minor bounds by @sabify in #4568
  • chore(deps): bump autofix-ci/action from 1.3.2 to 1.3.3 by @dependabot[bot] in #4557
  • chore(deps): bump pnpm from 10.27.0 to 10.28.2 in /examples/counters/e2e in the npm_and_yarn group across 1 directory by @dependabot[bot] in #4551
  • Remove dashmap (cf #4408) by @gbj in #4521
  • Warn when trying to update a signal with an active read guard by @MarkusG in #4567
  • add IntoIterator implementantion for &ParamsMap by @jonnyso in #4565
  • Implement AttributeValue for MaybeProp by @QaidVoid in #4575
  • feat: impl Deserialize for Signal<T> (closes #4533) by @gbj in #4576
  • feat: add support for variable keyed collections in reactive_stores by @TiemenSch in #4473

New Contributors

Full Changelog: v0.8.15...v0.8.16

v0.8.15

Choose a tag to compare

@gbj gbj released this 19 Dec 15:36

What's Changed

  • ShowLet now accepts static Option values. by @maccesch in #4467
  • chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #4461
  • chore: resolve new warnings by @gbj in #4485
  • chore: add a regression test to ensure correct behavior for keyed store fields (see discussion in #4473) by @gbj in #4483
  • fix: use unkeyed paths for all store patching (closes #4486) by @gbj in #4487
  • Fixes missing import IntoAnyAttribute when using erase_components by @ToxicMushroom in #4481
  • chore: upgrade dependencies by @sabify in #4497

New Contributors

Full Changelog: v0.8.14...v0.8.15

v0.8.14

Choose a tag to compare

@gbj gbj released this 25 Nov 00:49

What's Changed

  • Resupport From<Fn() -> T> for Signal<T>, ArcSignal<T>, Callback<T, _> and similar by @zakstucke in #4273
  • chore: bump versions after recent release by @gbj in #4462

Full Changelog: v0.8.13...v0.8.14

v0.8.13

Choose a tag to compare

@gbj gbj released this 23 Nov 00:22
2e09f3d

What's Changed

  • add homepage to leptos cargo metadata by @tswast in #4417
  • examples: clarify behavior of upload-with-progress demo (closes #4397) by @gbj in #4420
  • Force cleanup even if there are other references to the root owner by @zakstucke in #4427
  • fix: check custom element tag name when rebuilding by @gbj in #4413
  • Relax Debug trait bound on tuples PossibleRouteMatch implementation by @alexisfontaine in #4428
  • fix: remove possibility of view-related SendWrapper errors on server (closes #4432, #4402) by @gbj in #4433
  • Add split to run command by @marcokuoni in #4440
  • Clean up warning behavior for resources that depend on other resources by @gbj in #4415
  • (wip) track resources in Suspense that are read conditionally behind other resource reads (see #4430) by @gbj in #4444
  • fix: improve marker-node filtering when using islands router (closes #4443) by @gbj in #4446
  • Removed duplicate cargo member oco by @agirorn in #4445
  • fix: do not unescape query and hash in URLs when clicking links (closes #4453, closes #4232) by @gbj in #4454
  • fix: Fixed to Add response headers for leptos_axum static files #4377 by @tqq1994516 in #4394
  • fix: make class attribute overwrite behavior consistent between SSR and CSR by @taearls in #4439

New Contributors

Full Changelog: v0.8.12...v0.8.13

v0.8.12

Choose a tag to compare

@gbj gbj released this 28 Oct 00:06

What's Changed

  • Replace vendored wasm-split with out-of-repository version by @WorldSEnder in #4369

Full Changelog: v0.8.11...v0.8.12