The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Updated
web-systo min version^0.3.89because of yanked versions ofjs-sys.
- @benwis
- Made things work with both, cfg flag
web_sys_unstable_apisenabled and disabled (thanks to @emilbonnek).
- @benwis
- Added
GeolocationPositionandGeolocationPositionErrorweb-sys features as dependencies for use_geolocation. - Updated
web-systo min version0.3.86because of Geolocation API changes.
- @benwis
Element(s)MaybeSignalis now internally sendwrapped for SSR robustness. Some automatic conversions have been removed when they can't really be made SSR safe likeSignal<web_sys::Element>. UseSignal<SendWrapper<web_sys::Element>>instead.OptionLocalSignalnow has a clone free.read()implementation (thanks to @luxalpa).
- There's now an
OptionLocalRwSignalfor dealing with non-Send/non-Syncvalues in an SSR safe manner (thanks to @luxalpa).
- @benwis
Huge thanks to @DrFlowerkick for all of this excellent work on this release.
- Updated Rust Edition to 2024
use_cookienow requires its value type to bePartialEqto be able to compare values to avoid infinite update loops.use_event_source(all thanks to @DrFlowerkick):- It now accepts its
urlparameter asimpl Into<Signal<String>> UseEventSourceReturnnow longer has the fieldsevent_source,eventordata. Instead there is now amessagefield which is aSignal<Option<UseEventSourceMessage>>. Please check the docs for more info.UseEventSourceOptionsnow accepts anon_eventgeneric event handler.UseEventSourceErrorhas changed (again => pls see docs).
- It now accepts its
use_websocketno longer returns access towsto prevent SSR issues (thanks to @DrFlowerkick).- A bunch of functions had local signals in their return types which could cause SSR issues.
These have been replaced by our new
OptionLocalSignalwhich is basically aSignal<Option<SendWrapper<T>>>. This solves the SSR issues (all thanks to @DrFlowerkick):use_broadcast_channeluse_geolocationuse_web_notificationuse_display_mediause_user_mediause_intl_number_format
use_screen_orientation
use_event_sourceSSR fixedElementsMaybeSignalandElementMaybeSignalcan now be successfully created from&strs (thanks to @fhgalano).- When using
&strs as selectors in these cases, internally it will create signals that wait for the selector to appear in the DOM if not found immediately.
- When using
- Fixed broken link in docs for
use_locale(thanks to @cocoliliace).
- @benwis
- Implemented
PartialEqforcore::Position
- Fixed effects running simultaneously in
use_cookie(thanks to @ cbishopvelti) - Fixed link to Leptos Getting Started in the book (thanks to @mbergkvist)
- Fixed SSR in
use_interval_fn(thanks to @johansmitsnl)
- @benwis
use_color_modefrontend-only logic behind feature gate to fixSendWrapperissues with SSR (thanks to @BakerNet)
- @benwis
- Removed version pin for
chrono - Made
chronooptional inCargo.toml(thanks to @emilbonnek)
- @benwis
- Updated dependency Leptos to version
0.8.0(thanks to @DerKnerd, @jaystile, @ifiokjr)
- Added
month_by_datetouse_calendar(thanks to @tomaszkubacki) - Added
target_offsettouse_draggable(thanks to @theredfish) UseRwSignalcan now be converted from anything that implements the respective reactive Leptos traits. This includes Signals, Memos, Store fields, ... meaning thesync_signalnow works with everything.ElementMaybeSignalcan be converted fromSignal<SendWrapper<web_sys::Element>>improving interop with other crates.
use_cookiewith SSR has been fixed. This fixes theuse_color_modeSSR issues as well.use_event_sourcewith infinity reconnect limit has been fixed.- Conversion of
ElementMaybeSignalfrom&strhas been fixed.
- @benwis
- Updated dependency Leptos to version
0.8.0(thanks to @DerKnerd, @jaystile)
- Added
target_offsettouse_draggableoptions for more flexible positioning (thanks to @theredfish)
- @benwis
- @spencewenski
- Updated dependency Leptos to version
0.8.0-beta(thanks to @ifiokjr)
- Added
month_by_datetouse_calendar(thanks to @tomaszkubacki)
- @benwis
- @spencewenski
- Removed the feature
spinand it's backend integration dependencyleptos-spin(thanks to @ifiokjr) - Updated dependency Leptos to version
0.8.0-alpha(thanks to @ifiokjr) - Updated dependency getrandom to version
0.3 - Updated dependency rand to version
0.9
- @spencewenski
- Added
month_by_datetouse_calendar(thanks to @tomaszkubacki) - Added
target_offsettouse_draggable(thanks to @theredfish) UseRwSignalcan now be converted from anything that implements the respective reactive Leptos traits. This includes Signals, Memos, Store fields, ... meaning thesync_signalnow works with everything.ElementMaybeSignalcan be converted fromSignal<SendWrapper<web_sys::Element>>improving interop with other crates.
use_cookiewith SSR has been fixed. This fixes theuse_color_modeSSR issues as well.use_event_sourcewith infinity reconnect limit has been fixed.- Conversion of
ElementMaybeSignalfrom&strhas been fixed.
- @benwis
- Updated codee version to 0.3.0 in line with the latest 0.7 Leptos versions
- @spencewenski
- Fixed
use_storageoverwriting stored values with SSR (thanks to @BakerNet).
- @spencewenski
sync_signalwithimmediate = truenow syncs the signals on the server once initially. This fixesuse_color_modewith cookies enabled to give wrong results during SSR.
- @spencewenski
- downgraded codee to 0.2.0 to be compatible with Leptos 0.7
- fixed
use_mutation_observer(thanks to @bpwarner)
- improxed DX: implemented
Clone + CopyforUseDropZoneReturn(thanks to @mahmoud-eltahawy)
- @spencewenski
use_calendar
- added
DebugtoSize(thanks to @Ahlman)
- @spencewenski
- Fixed path of
use_color_modecookie ElementMaybeSignalandElementsMaybeSignalare now properlyCloneandCopy
- @spencewenski
- Fixed
use_element_hovernot properly cancelling it's timeout (thanks to @jcold). - Fixed
use_storagenot writing default values. - Fixed unidirectional
sync_signalnot syncing properly.
- @spencewenski
- LeftClick
signal_throttledandsignal_debouncednow have..._localvariants (thanks to @bicarlsen)
use_storagenow accepts a Signal as it'skeyparameter (thanks to LeftClick)use_websocketnow supports sending heartbeats (thanks to LeftClick)
- Fixed
use_storageto actually remove the key whenremoveis called (thanks to @flaviopezzini)
- @spencewenski
- LeftClick
- Updated to Leptos 0.7
- Refactored
ElementMaybeSignalandElementsMaybeSignalto have a simpler implementation. For the vast majority of cases this should continue to work as before. - Almost everything returned from functions is now
Send + Sync.
- Updated Leptos to use stable 0.7 version
- Updated wasm-bindgen to 0.2.96
- Updated web-sys 0.3.73
Special thanks to our sponsor:
- @spencewenski
- fixed error messages for get_header
- added Send + Sync to storage return closure
Special thanks to our sponsor:
- @spencewenski
- Updated to Leptos 0.7.0-rc2
- Fixed WASM on the serverside (thanks to @GuillaumeDelorme)
- Fixed
use_storage. - Made all returned closures
Send + Sync.
Special thanks to our sponsor:
- @spencewenski
- Fixed potential SSR panic in use_locale(s) (thanks to @veigaribo)
- Make
use_localeprioritize user preferred locales over app preferred ones
- Updated to Leptos 0.7.0-rc1
- Updated to web-sys 0.3.72 and unpinned version (thanks to @sabify)
- Added dependabot (thanks to @sabify)
- Reverted use_user_media to have video enabled by default
- Fixed exponential increase on websocket reconnects
- Fixed MediaTrackConstraints dependency (thanks to @mollymorphous)
- Fixed warnings and tests (thanks to @SleeplessOne1917 and @jheuel)
- Unpinned the wasm-bindgen version (thanks to @jheuel)
- Latest changes up to version 0.13.7 ported
- Updated to Leptos 0.7.0-rc0
- Updated to Leptos 0.7.0-gamma3 by using
Signalinstead ofMaybeSignal
- Adapted to the latest changes in Leptos (thanks to @BakerNet and @nikessel)
- Fixed all the examples
use_active_elementporteduse_drop_zonenow returnsSignal<Vec<SendSignal<web_sys::File>>>instead ofSignal<Vec<web_sys::File>, LocalStorage>to make it easier to use with<For>
- Latest changes from version 0.13.4 and 0.13.5 ported
- Refactored
ElementMaybeSignalandElementsMaybeSignalto have a simpler implementation. For the vast majority of cases this should continue to work as before.
- Latest Leptos 0.7 beta changed the trigger trait method (thanks to @BakerNet)
- Latest changes from version 0.13.3 ported
Ported everything to Leptos 0.7 Some example don't run yet.
- Fixed path of
use_color_modecookie
Thanks to our generous sponsor:
- @spencewenski
- Updated web-sys version to 0.3.72
Thanks to our generous sponsor:
- @spencewenski
- Fixed potential SSR crash in
use_locale(s)(thanks to @veigaribo)
- Reverted use_user_media to have video enabled by default
- Fixed exponential increase on websocket reconnects
- Backported fixes from 0.14.0-rc1
- Added video and audio options to
use_user_media(thanks to @sauloco). - Fixed cookies in SSR (thanks to @jim-taylor-business).
- Updated leptos-spin version to 0.2 (thanks to @tqq1994516).
use_textarea_autosize
use_websocketnow returns a signal for the websocket instance so the user can actually use it. Before it always returnedNone.
- Fixed
use_color_modewith cookies enabled
- Fixed web-sys
unstable_apisflag foruse_web_lock
use_web_lockuse_window_size
UseWebsocket::protocolsnow supports a signal. It is read right beforeopenis called. (thanks to @zakstucke)
use_toggleuse_prefers_reduced_motion(thanks to @hcandelaria)
use_websocketnow supports different types for sending and receiving messagesSyncSignalOptionsnow can take now either transformations or assignment functions but not both.- updated to
codeeversion 0.2.0
use_websocketfixed error with cleanup and reconnect (thanks to @BakerNet).
- There is now a feature for almost every function to get better compile and rust-analyzer times.
use_web_notificationnow supports thevibrateoption (thanks to @hcandelaria).UseDocumentnow supports a whole bunch of methods more fromdocument(thanks to @luckynumberke7in).
Make sure you also update
cargo-leptosto the latest version if you use that.
- Updated to web_sys 0.3.70 which unfortunately is breaking some things.
use_clipboarddoesn't need the unstable flags anymore.use_localenow usesunic_langid::LanguageIdentifierand proper locale matching (thanks to @mondeja).- Removed
UseMouseEventExtractorDefaultand reworkedUseMouseCoordType(thanks to @carloskiki) use_preferred_darkanduse_color_modenow try to read theSec-CH-Prefers-Color-Schemeheader in SSR. This brings the necessity to enable an additional feature for them (axum/actix/spin).
- Fixed the codec chapter in the book to refer to crate
codee.
use_web_notificationnow supports the optionsrenotify,silentandimage(thanks to @hcandelaria).sync_signalno supports the optionsassign_ltrandassign_rtl.
- Made
use_timeout_fnSSR-safe
use_localehas now a supported locale list.
use_locale(thanks to @BrandonDyer64)use_locales(thanks to @BrandonDyer64)header– Standard implementations for reading a header on the server.
use_user_media
-
Codecs:
- All codecs now live in their own crate
codee - There are now binary codecs in addition to string codecs.
FromToBytesCodecWebpackSerdeCodecBincodeSerdeCodecProstCodec(see also the section "Breaking Changes 🛠" below)
- Every binary codec can be used as a string codec with the
Base64wrapper which encodes the binary data as a base64 string.- This required feature
base64 - It can be wrapped for example like this:
Base64<WebpackSerdeCodec>.
- This required feature
- There is now an
OptionCodecwrapper that allows to wrap any string codec that encodesTto encodeOption<T>.- Use it like this:
OptionCodec<FromToStringCodec<f64>>.
- Use it like this:
- All codecs now live in their own crate
-
ElementMaybeSignalis now implemented forwebsys::HtmlElement(thanks to @blorbb). -
UseStorageOptionsnow hasdelay_during_hydrationwhich has to be used when you conditionally show parts of the DOM controlled by a value from storage. This leads to hydration errors which can be fixed by setting this new option totrue. -
cookie::SameSiteis now re-exported -
Changing the signal returned by
use_cookienow tries and changes the headers during SSR. -
New book chapter about codecs
-
The macro
use_derive_signal!is now exported (thanks to @mscofield0).
UseStorageOptionsandUseEventSourceOptionsno longer accept acodecvalue because this is already provided as a generic parameter to the respective function calls.- Codecs have been refactored. There are now two traits that codecs implement:
EncoderandDecoder. The traitStringCodecis gone. The methods are now associated methods and their params now always take references.JsonCodechas been renamed toJsonSerdeCodec.- The feature to enable this codec is now called
json_serdeinstead of justserde. ProstCodecnow encodes as binary data. If you want to keep using it with string data you can wrap it like this:Base64<ProstCodec>.- All of these structs, traits and features now live in their own crate called
codee - A bunch of new codecs are available. Have a look at the docs for crate
codee.
use_websocket:UseWebsocketOptionshas been renamed toUseWebSocketOptions(uppercase S) to be consistent with the return type.UseWebSocketOptions::reconnect_limitandUseEventSourceOptions::reconnect_limitis nowReconnectLimitinstead ofu64. UseReconnectLimit::Infinitefor infinite retries orReconnectLimit::Limited(...)for limited retries.use_websocketnow uses codecs to send typed messages over the network.- When calling you have give type parameters for the message type and the
codec:
use_websocket::<String, WebpackSerdeCodec> - You can use binary or string codecs.
- The
UseWebSocketReturn::sendclosure now takes a&Twhich is encoded using the codec. - The
UseWebSocketReturn::messagesignal now returns anOption<T>which is decoded using the codec. UseWebSocketReturn::send_bytesandUseWebSocketReturn::message_bytesare gone.UseWebSocketOptions::on_messageandUseWebSocketOptions::on_message_byteshave been renamed toon_message_rawandon_message_raw_bytes.- The new
UseWebSocketOptions::on_messagetakes a&T. UseWebSocketOptions::on_errornow takes aUseWebSocketErrorinstead of aweb_sys::Event.
- When calling you have give type parameters for the message type and the
codec:
use_storagenow always saves the default value to storage if the key doesn't exist yet.- Renamed
BreakpointsSematictoBreakpointsSemanticandbreakpoints_sematictobreakpoints_semantic(note then) (thanks to @mondeja).
- Fixed auto-reconnect in
use_websocket - Fixed typo in compiler error messages in
use_cookie(thanks to @SleeplessOne1917). - Fixed potential signal out of scope issue with
use_raf_fn
- Better links in docs that work both in the book and in rustdoc (thanks to @mondeja).
- Better CI/CD (thanks to @EstebanBorai).
- Added compile-time warning when you use
ssrfeature withwasm32. You can enablewasm_ssrto remove the warning.
- Fixed
use_color_modewithout cookies and make cookies sync properly with local storage - Fixed
use_infinite_scrolledge case bug with disposed signals
use_cookienow supports Spin out of the box (thanks to @javierEd).
sync_signal
use_color_modenow supports cookies.
- Corrected docs of
use_cookie'smax-ageunit to milliseconds (thanks to @sify21). - Fixed setting multiple cookies in the browser (thanks to @sbking).
- Fixed SSR detection from an url query parameter for
use_color_mode(thanks to @mondeja).
use_event_source
- Wrapped callbacks in a non-reactive zone to remove potential warnings.
- Updated SSR chapter in the book to make it more clear and beginner-friendly (thanks to @flupke).
use_oruse_anduse_not
- Removed signal warnings from
use_websocket'ssend...methods.
use_color_modenow supports detection from an url query parameter. (thanks to @mondeja)
use_permissionuse_clipboarduse_timeout_fn
- Fixed docs.rs build
use_broadcast_channeluse_cookie(thanks to @rakshith-ravi)use_mouse_in_elementuse_device_orientation(thanks to @mondeja)use_device_pixel_ratio(thanks to @mondeja)use_element_bounding
- The
leptosversion is now 0.6 - The trait
Codechas been renamed toStringCodecand has been moved toutil::StringCodec.- The struct
StringCodechas been renamed toFromToStringCodecand has been moved toutil::FromToStringCodec. - The structs
JsonCodecandProstCodechave been moved toutilas well.
- The struct
- The function
use_storagenow requires type parameters for the stored type and the codec like all the other...storage...functions.
- Fixed
use_geolocationSSR compile issue - Fixed
use_intl_number_formatmaximum fraction digits option
- The
UseMouseReturnsignalsx,y, andsource_typeare now of typeSignal<f64>instead ofReadSignal<f64>. - You can now convert
leptos::html::HtmlElement<T>intoElement(s)MaybeSignal. This should make functions a lot easier to use in directives. - There's now a chapter in the book especially for
Element(s)MaybeSignal. - Throttled or debounced callbacks (in watch__ or __fn) no longer are called after the containing scope was cleaned up.
- The document returned from
use_documentnow supports the methodsquery_selectorandquery_selector_all.
use_display_media(thanks to @seanaye)
- (@feral-dot-io) The use
use_<type>_storagefunctions have been rewritten to useCodecs instead of always requiringserde.- This also removes the feature
storage - By default the
StringCodecis used which relies on types implementingFromString + ToString - If you want to use
JsonCodecyou have to enable the featureserde - If you want to use
ProstCodec(new!) you have to enable the featureprost.
- This also removes the feature
- (@feral-dot-io) The Rust flag
--cfg=web_sys_unstable_apisis not needed anymore since relevantweb_sysAPIs are now stable. This affects in particularuse_element_sizeuse_resize_observer
use_raf_fnanduse_timestampno longer spam warnings because ofgetting signals outside of reactive contexts.use_infinite_scrollno longer calls the callback twice for the same eventuse_scrollnow usestry_get_untrackedin the debounced callback to avoid panics if the context has been destroyed while the callback was waiting to be called.use_idleworks properly now (no more idles too early).use_web_notificationdoesn't panic on the server anymore.
- Fixed SSR for
- use_timestamp
- use_raf_fn
- use_idle
- Using strings for
ElementMaybeSignalandElementsMaybeSignalis now SSR safe.- This fixes specifically
use_color_modeto work on the server.
- This fixes specifically
use_web_notification(thanks to @centershocks44)use_infinite_scrolluse_service_worker(thanks to @lpotthast)
use_scrollreturnsimpl Fn(T) + Cloneinstead ofBox<dyn Fn(T)>.
UseScrollReturnis now documented
- Some functions still used
window()which could lead to panics in SSR. This is now fixed. Specifically foruse_draggable.
use_sorted
use_timestampuse_idleuse_documentuse_windowuse_geolocationsignal_debouncedsignal_throttled
- Leptos version is now 0.5
- No
cx: Scopeparams are supported/needed anymore because of the changes in Leptos. Please check the release notes of Leptos 0.5 for how to upgrade. watchis now deprecated in favor ofleptos::watchand will be removed in a future release.watch_with_optionswill continue to exist.use_event_listener_with_optionsnow takes aUseEventListenerOptionsinstead of aweb_sys::AddEventListenerOptions.use_mutation_observer_with_optionsnow takes aUseMutationObserverOptionsinstead of aweb_sys::MutationObserverInit.use_websocket:- takes now a
&strinstead of aStringas itsurlparameter. - same for the returned
sendmethod. - The
ready_statereturn type is now renamed toConnectionReadyStateinstead ofUseWebSocketReadyState. - The returned signals
ready_state,message,message_byteshave now the typeSignal<...>instead ofReadSignal<...>to make them more consistent with other functions. - The options
reconnect_limitandreconnect_intervalnow take au64instead ofOption<u64>to improve DX. - The option
manualhas been renamed toimmediateto make it more consistent with other functions. To port please note thatimmediateis the inverse ofmanual(immediate=!manual). - Added documentation how pass it ergonomically as context.
- takes now a
use_color_mode:- The optional
on_changedhandler parameters have changed slightly. Please refer to the docs for more details.
- The optional
- Throttled or debounced functions cannot be
FnOnceanymore. - All traits
ClonableFn...have been removed.
use_websocketcan use relative urls now- Callbacks in options don't require to be cloneable anymore
- Callback in
use_raf_fndoesn't require to be cloneable anymore - All (!) functions can now be safely called on the server. Specifically this includes the following that before
panicked on the server:
use_scrolluse_event_listeneruse_element_hoveron_click_outsideuse_drop_zoneuse_element_sizeuse_element_visibilityuse_resize_observeruse_intersection_observeruse_mutation_observer
use_element_visibilitydidn't work in some cases on Chrome properly. This has been fixed.
use_websocketpanicked after unmount
use_event_listener_with_optionsremoves the handlers now correctly.
use_storagenow uses.get_untracked()to avoid warnings.
use_draggableuse_to_stringis_erris_okis_noneis_someuse_raf_fn
- The following functions now accept a
MaybeRwSignalas their initial/default value which means you can use a synchronizedRwSignalin those places.use_color_modeuse_cycle_listuse_faviconuse_storageuse_local_storageuse_session_storage
- Instead of returning
ReadSignal, the following functions now returnSignal.use_color_modeuse_faviconuse_storageuse_local_storageuse_session_storage
use_drop_zonenow uses.get_untracked()in event handlers
use_drop_zoneuse_websocket(thanks @sectore)use_intl_number_format
- Crate is ready for Server-Side Rendering. Enable feature
ssrlike you do forleptos.
use_window_focususe_window_scrolluse_document_visibility
- Required
leptosversion is now 0.4 - Following the changes in
leptosthere is no longer astablecrate feature required in order to use this library with a stable toolchain. If you want to use it with a nightly toolchain you have to enable thenightlyfeature only onleptosdirectly. No change is required forleptos-useitself.
use_color_modeuse_cycle_listuse_active_element
- You can now use this crate with the
stabletoolchain (thanks @lpotthast) - Set leptos dependency to
default-features = falsein order to enable SSR.
use_css_varuse_element_hover
use_interval_fnuse_interval
use_event_listenerno longer returns aBox<dyn Fn()>but aimpl Fn() + Clone
- You can now specify a
&strorSignal<String>with CSS selectors wherever a node ref is accepted - Callbacks of the following functions no longer require
Cloneuse_resize_observeruse_intersection_observer
- These functions now also accept multiple target elements in addition to a single one:
use_resize_observeruse_intersection_observer
wheneveruse_mutation_observeruse_abson_click_outside
use_intersection_observeruse_element_visibility
watchdoesn't acceptimmediateas a direct argument anymore. This is only provided by the option variant.watchhas now variantwatch_with_optionswhich allows for debouncing and throttling.
use_storageuse_local_storageuse_session_storagewatch_debouncedwatch_throttledwatch_pausableuse_ceiluse_rounduse_media_queryuse_preferred_darkuse_preferred_contrastuse_faviconuse_breakpoints
- Function count badge in readme
- Fixed documentation and doc tests running for functions behind
#[cfg(web_sys_unstable_apis)]
use_element_size
- Fixed documentation so all feature are documented
use_flooruse_maxuse_min
- New feature:
maththat has to be activated in order to use the math functions.
use_supporteduse_resize_observerwatchuse_mouse
- Use the crate
default-struct-builderto provide ergonimic function options.
use_scrolluse_debounce_fn
- Better and more beautiful demo integration into the guide.