From 5f3f60ca6bd9b2467bff6a2b42210e4ce494e322 Mon Sep 17 00:00:00 2001
From: Maccesch <maccesch@synphonyte.com>
Date: Tue, 7 May 2024 12:41:44 +0100
Subject: [PATCH] work to port to leptos 0.7

---
 Cargo.toml                                    | 12 +++----
 README.md                                     |  6 ++--
 docs/book/src/element_parameters.md           | 12 ++++---
 docs/book/src/get_started.md                  |  6 ++--
 docs/book/src/server_side_rendering.md        |  2 +-
 examples/on_click_outside/src/main.rs         |  4 +--
 examples/signal_debounced/src/main.rs         |  4 +--
 examples/signal_throttled/src/main.rs         |  4 +--
 examples/ssr/src/app.rs                       |  6 ++--
 examples/ssr/src/error_template.rs            |  2 +-
 examples/ssr/src/fileserv.rs                  |  2 +-
 examples/ssr/src/lib.rs                       |  2 +-
 examples/ssr/src/main.rs                      |  2 +-
 examples/sync_signal/src/main.rs              |  6 ++--
 examples/use_abs/src/main.rs                  |  4 +--
 examples/use_active_element/src/main.rs       |  2 +-
 examples/use_and/src/main.rs                  |  6 ++--
 examples/use_breakpoints/src/main.rs          |  2 +-
 examples/use_broadcast_channel/src/main.rs    |  4 +--
 examples/use_ceil/src/main.rs                 |  4 +--
 examples/use_clipboard/src/main.rs            |  4 +--
 examples/use_color_mode/src/main.rs           |  2 +-
 examples/use_cookie/src/main.rs               |  2 +-
 examples/use_css_var/src/main.rs              |  4 +--
 examples/use_cycle_list/src/main.rs           |  2 +-
 examples/use_debounce_fn/src/main.rs          |  6 ++--
 examples/use_device_orientation/src/main.rs   | 34 +++++++++----------
 examples/use_device_pixel_ratio/src/main.rs   |  2 +-
 examples/use_display_media/src/main.rs        |  2 +-
 examples/use_document_visibility/src/main.rs  |  4 +--
 examples/use_draggable/src/main.rs            |  2 +-
 examples/use_drop_zone/src/main.rs            |  4 +--
 examples/use_element_bounding/src/main.rs     |  2 +-
 examples/use_element_hover/src/main.rs        |  2 +-
 examples/use_element_size/src/main.rs         |  2 +-
 examples/use_element_visibility/src/main.rs   |  2 +-
 examples/use_event_listener/src/main.rs       |  4 +--
 examples/use_favicon/src/main.rs              |  2 +-
 examples/use_floor/src/main.rs                |  4 +--
 examples/use_geolocation/src/main.rs          |  2 +-
 examples/use_idle/src/main.rs                 |  2 +-
 examples/use_infinite_scroll/src/main.rs      |  4 +--
 .../use_intersection_observer/src/main.rs     |  4 +--
 examples/use_interval/src/main.rs             |  2 +-
 examples/use_interval_fn/src/main.rs          |  8 ++---
 examples/use_intl_number_format/src/main.rs   |  4 +--
 examples/use_media_query/src/main.rs          |  2 +-
 examples/use_mouse/src/main.rs                |  2 +-
 examples/use_mouse_in_element/src/main.rs     |  2 +-
 examples/use_mutation_observer/src/main.rs    |  8 ++---
 examples/use_not/src/main.rs                  |  4 +--
 examples/use_or/src/main.rs                   |  6 ++--
 examples/use_permission/src/main.rs           |  2 +-
 examples/use_raf_fn/src/main.rs               |  4 +--
 examples/use_resize_observer/src/main.rs      |  4 +--
 examples/use_round/src/main.rs                |  4 +--
 examples/use_scroll/src/main.rs               |  4 +--
 examples/use_service_worker/src/main.rs       |  2 +-
 examples/use_sorted/src/main.rs               |  2 +-
 examples/use_storage/src/main.rs              |  2 +-
 examples/use_throttle_fn/src/main.rs          |  6 ++--
 examples/use_timeout_fn/src/main.rs           |  4 +--
 examples/use_timestamp/src/main.rs            |  2 +-
 examples/use_web_notification/src/main.rs     |  2 +-
 examples/use_websocket/src/main.rs            |  6 ++--
 examples/use_webtransport/src/log_display.rs  |  2 +-
 examples/use_webtransport/src/main.rs         |  8 ++---
 examples/use_webtransport/src/stream_bidir.rs |  4 +--
 examples/use_webtransport/src/stream_send.rs  |  4 +--
 .../client/src/log_display.rs                 |  2 +-
 .../client/src/main.rs                        |  8 ++---
 .../client/src/stream_bidir.rs                |  4 +--
 .../client/src/stream_send.rs                 |  4 +--
 examples/use_window_focus/src/main.rs         |  4 +--
 examples/use_window_scroll/src/main.rs        |  2 +-
 examples/watch_debounced/src/main.rs          |  6 ++--
 examples/watch_pausable/src/main.rs           |  6 ++--
 examples/watch_throttled/src/main.rs          |  6 ++--
 src/core/element_maybe_signal.rs              |  5 +--
 src/core/elements_maybe_signal.rs             |  3 +-
 src/core/maybe_rw_signal.rs                   |  6 ++--
 src/core/storage.rs                           |  2 +-
 src/core/url.rs                               |  2 +-
 src/core/use_rw_signal.rs                     |  2 +-
 src/docs/boolean_display.rs                   |  2 +-
 src/docs/demo.rs                              |  2 +-
 src/docs/note.rs                              |  2 +-
 src/is_err.rs                                 |  7 ++--
 src/is_none.rs                                |  7 ++--
 src/is_ok.rs                                  |  6 ++--
 src/is_some.rs                                |  7 ++--
 src/math/use_abs.rs                           |  7 ++--
 src/math/use_and.rs                           |  9 ++---
 src/math/use_ceil.rs                          |  7 ++--
 src/math/use_floor.rs                         |  7 ++--
 src/math/use_max.rs                           |  7 ++--
 src/math/use_min.rs                           |  7 ++--
 src/math/use_not.rs                           |  7 ++--
 src/math/use_or.rs                            |  9 ++---
 src/math/use_round.rs                         |  7 ++--
 src/on_click_outside.rs                       |  6 ++--
 src/signal_debounced.rs                       | 11 +++---
 src/signal_throttled.rs                       | 11 +++---
 src/storage/use_local_storage.rs              |  3 +-
 src/storage/use_session_storage.rs            |  3 +-
 src/storage/use_storage.rs                    |  5 +--
 src/sync_signal.rs                            | 26 +++++++-------
 src/use_active_element.rs                     |  7 ++--
 src/use_breakpoints.rs                        |  9 ++---
 src/use_broadcast_channel.rs                  | 22 ++++++------
 src/use_clipboard.rs                          |  9 ++---
 src/use_color_mode.rs                         | 13 +++----
 src/use_cookie.rs                             | 21 ++++++------
 src/use_css_var.rs                            | 14 ++++----
 src/use_cycle_list.rs                         |  5 +--
 src/use_debounce_fn.rs                        |  4 +--
 src/use_device_orientation.rs                 | 13 +++----
 src/use_device_pixel_ratio.rs                 |  7 ++--
 src/use_display_media.rs                      |  7 ++--
 src/use_document.rs                           |  4 +--
 src/use_document_visibility.rs                |  7 ++--
 src/use_draggable.rs                          |  8 +++--
 src/use_drop_zone.rs                          |  9 ++---
 src/use_element_bounding.rs                   | 21 ++++++------
 src/use_element_hover.rs                      |  7 ++--
 src/use_element_size.rs                       |  7 ++--
 src/use_element_visibility.rs                 |  7 ++--
 src/use_event_listener.rs                     | 10 +++---
 src/use_event_source.rs                       | 22 ++++++------
 src/use_favicon.rs                            |  7 ++--
 src/use_geolocation.rs                        | 11 +++---
 src/use_idle.rs                               | 11 +++---
 src/use_infinite_scroll.rs                    | 10 +++---
 src/use_intersection_observer.rs              |  8 ++---
 src/use_interval.rs                           |  6 ++--
 src/use_interval_fn.rs                        |  6 ++--
 src/use_intl_number_format.rs                 | 16 ++++-----
 src/use_media_query.rs                        |  6 ++--
 src/use_mouse.rs                              | 14 ++++----
 src/use_mouse_in_element.rs                   | 18 +++++-----
 src/use_mutation_observer.rs                  |  6 ++--
 src/use_permission.rs                         |  6 ++--
 src/use_preferred_contrast.rs                 |  4 +--
 src/use_preferred_dark.rs                     |  4 +--
 src/use_raf_fn.rs                             |  8 ++---
 src/use_resize_observer.rs                    |  4 +--
 src/use_scroll.rs                             | 20 +++++------
 src/use_service_worker.rs                     | 15 ++++----
 src/use_sorted.rs                             |  6 ++--
 src/use_supported.rs                          |  4 +--
 src/use_throttle_fn.rs                        |  4 +--
 src/use_timeout_fn.rs                         |  6 ++--
 src/use_timestamp.rs                          |  8 ++---
 src/use_to_string.rs                          |  6 ++--
 src/use_web_notification.rs                   |  8 ++---
 src/use_websocket.rs                          | 14 ++++----
 src/use_webtransport.rs                       | 14 ++++----
 src/use_window.rs                             |  4 +--
 src/use_window_focus.rs                       |  6 ++--
 src/use_window_scroll.rs                      |  8 ++---
 src/utils/codecs/string/from_to_string.rs     |  2 +-
 src/utils/codecs/string/json.rs               |  6 ++--
 src/utils/codecs/string/prost.rs              |  2 +-
 src/utils/filters/debounce.rs                 |  2 +-
 src/utils/filters/pausable.rs                 |  4 +--
 src/utils/filters/throttle.rs                 |  2 +-
 src/utils/pausable.rs                         |  2 +-
 src/utils/signal_filtered.rs                  |  2 +-
 src/watch_debounced.rs                        | 10 +++---
 src/watch_pausable.rs                         |  8 ++---
 src/watch_throttled.rs                        |  8 ++---
 src/watch_with_options.rs                     | 14 ++++----
 src/whenever.rs                               | 16 ++++-----
 .../src/main.ffizer.hbs.rs                    |  2 +-
 .../{{ function_name }}.ffizer.hbs.rs         |  4 +--
 175 files changed, 575 insertions(+), 527 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 2679d07..1708d18 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -20,16 +20,16 @@ cfg-if = "1"
 cookie = { version = "0.18", features = ["percent-encode"] }
 default-struct-builder = "0.5"
 futures-util = "0.3"
-gloo-timers = { version = "0.3.0", features = ["futures"] }
-gloo-utils = { version = "0.2.0" }
+gloo-timers = { version = "0.3", features = ["futures"] }
+gloo-utils = { version = "0.2" }
 http1 = { version = "1", optional = true, package = "http" }
 http0_2 = { version = "0.2", optional = true, package = "http" }
 js-sys = "0.3"
 lazy_static = "1"
-leptos = "0.6"
-leptos_axum = { version = "0.6", optional = true }
+leptos = "0.7.0-preview2"
+leptos_axum = { version = "0.7.0-preview2", optional = true }
 leptos_actix = { version = "0.6", optional = true }
-leptos-spin = { version = "0.1", optional = true }
+leptos-spin = { version = "0.2", optional = true }
 num = { version = "0.4", optional = true }
 paste = "1"
 prost = { version = "0.12", optional = true }
@@ -133,7 +133,7 @@ features = [
 
 [dev-dependencies]
 getrandom = { version = "0.2", features = ["js"] }
-leptos_meta = "0.6"
+leptos_meta = "0.7.0-preview2"
 rand = "0.8"
 
 [features]
diff --git a/README.md b/README.md
index 57516cc..13ff7c3 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,6 @@
 <br/>
 <br/>
 
-
 ## Usage
 
 [![Docs](https://docs.rs/leptos-use/badge.svg)](https://docs.rs/leptos-use/)
@@ -29,7 +28,7 @@
 [![Discord](https://img.shields.io/discord/1031524867910148188?color=%237289DA&label=discord)](https://discord.com/channels/1031524867910148188/1121154537709895783)
 
 ```rust
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::{use_mouse, UseMouseReturn};
 
 #[component]
@@ -82,7 +81,8 @@ python3 post_build.py use_storage
 
 ### New Function Template
 
-To scaffold a new function quickly you can run `template/createfn.sh`. It requires that [`ffizer`](https://ffizer.github.io/) and Python 3 is installed.
+To scaffold a new function quickly you can run `template/createfn.sh`. It requires
+that [`ffizer`](https://ffizer.github.io/) and Python 3 is installed.
 This will create the function file in the src directory, scaffold an example directory and an entry in the book.
 
 ## Leptos compatibility
diff --git a/docs/book/src/element_parameters.md b/docs/book/src/element_parameters.md
index 086e48c..94deb7a 100644
--- a/docs/book/src/element_parameters.md
+++ b/docs/book/src/element_parameters.md
@@ -35,14 +35,16 @@ pub fn some_directive(el: HtmlElement<AnyElement>) {
 Signal of Strings: `Signal<String>`, `ReadSignal<String>`, `RwSignal<String>`, `Memo<String>`; also works with `&str`:
 
 ```rust
-let (str_signal, set_str_signal) = create_signal("div > p.some-class".to_string());
+let (str_signal, set_str_signal) = signal("div > p.some-class".to_string());
 use_element_size(str_signal);
 ```
 
-Signals of Elements: `Signal<web_sys::Element>`, `ReadSignal<web_sys::Element>`, `RwSignal<web_sys::Element>`, `Memo<web_sys::Element>`; also works with `Option<web_sys::Element>`:
+Signals of
+Elements: `Signal<web_sys::Element>`, `ReadSignal<web_sys::Element>`, `RwSignal<web_sys::Element>`, `Memo<web_sys::Element>`;
+also works with `Option<web_sys::Element>`:
 
 ```rust
-let (el_signal, set_el_signal) = create_signal(document().query_selector("div > p.some-class").unwrap());
+let (el_signal, set_el_signal) = signal(document().query_selector("div > p.some-class").unwrap());
 use_element_size(el_signal); 
 ```
 
@@ -61,7 +63,7 @@ types for `ElementMaybeSignal`.
 
 Some functions work on one or more elements. Take [`use_resize_observer`](elements/use_resize_observer.md) for example.
 This works very much the same way as described above but instead of `Into<ElementMaybeSignal>`
-it takes an `Into<ElementsMaybeSignal>` (note the plural). This means you can use it exactly in 
+it takes an `Into<ElementsMaybeSignal>` (note the plural). This means you can use it exactly in
 the same ways as you saw with the singular `ElementMaybeSignal`. Only this time, when you use
 `String` or `&str` it will be interpreted as CSS selector with `query_selector_all`.
 
@@ -83,7 +85,7 @@ use_resize_observer(vec![node_ref1, node_ref2].as_slice());
 
 ## Usage in Options
 
-Some functions have options that take `Element(s)MaybeSignal`. 
+Some functions have options that take `Element(s)MaybeSignal`.
 They can be used in the same way.
 
 ```rust
diff --git a/docs/book/src/get_started.md b/docs/book/src/get_started.md
index dfdf5f8..501a38b 100644
--- a/docs/book/src/get_started.md
+++ b/docs/book/src/get_started.md
@@ -15,7 +15,7 @@ cargo add leptos-use
 Simply import the functions you need from `leptos-use`
 
 ```rust,noplayground
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::{use_mouse, UseMouseReturn};
 
 #[component]
@@ -32,6 +32,6 @@ Please refer to the [functions list](functions.md) for more details.
 
 ## Stable Rust
 
-Just like `leptos` this library can be safely run on stable rust. 
-In the [Getting Started section](https://leptos-rs.github.io/leptos/02_getting_started.html) 
+Just like `leptos` this library can be safely run on stable rust.
+In the [Getting Started section](https://leptos-rs.github.io/leptos/02_getting_started.html)
 of the `leptos` docs you can read more about what this means.
\ No newline at end of file
diff --git a/docs/book/src/server_side_rendering.md b/docs/book/src/server_side_rendering.md
index 6c4cc37..a61d69d 100644
--- a/docs/book/src/server_side_rendering.md
+++ b/docs/book/src/server_side_rendering.md
@@ -66,7 +66,7 @@ a new-type-wrapped `Option<web_sys::Window>` or `Option<web_sys::Document>` resp
 used safely on the server. The following code works on both the client and the server:
 
 ```rust
-use leptos::*;
+use leptos::prelude::*;
 use leptos::ev::keyup;
 use leptos_use::{use_event_listener, use_window};
 
diff --git a/examples/on_click_outside/src/main.rs b/examples/on_click_outside/src/main.rs
index aad7606..5588c3f 100644
--- a/examples/on_click_outside/src/main.rs
+++ b/examples/on_click_outside/src/main.rs
@@ -1,11 +1,11 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::on_click_outside;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (show_modal, set_show_modal) = create_signal(false);
+    let (show_modal, set_show_modal) = signal(false);
     let modal_ref = create_node_ref::<Div>();
 
     let _ = on_click_outside(modal_ref, move |_| set_show_modal.set(false));
diff --git a/examples/signal_debounced/src/main.rs b/examples/signal_debounced/src/main.rs
index cce81fc..07f4c26 100644
--- a/examples/signal_debounced/src/main.rs
+++ b/examples/signal_debounced/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::signal_debounced;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (input, set_input) = create_signal("".to_string());
+    let (input, set_input) = signal("".to_string());
     let debounced: Signal<String> = signal_debounced(input, 1000.0);
 
     view! {
diff --git a/examples/signal_throttled/src/main.rs b/examples/signal_throttled/src/main.rs
index 0fc9058..7468ade 100644
--- a/examples/signal_throttled/src/main.rs
+++ b/examples/signal_throttled/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::signal_throttled;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (input, set_input) = create_signal("".to_string());
+    let (input, set_input) = signal("".to_string());
     let throttled: Signal<String> = signal_throttled(input, 1000.0);
 
     view! {
diff --git a/examples/ssr/src/app.rs b/examples/ssr/src/app.rs
index 9b4e6f0..1ab9506 100644
--- a/examples/ssr/src/app.rs
+++ b/examples/ssr/src/app.rs
@@ -1,6 +1,6 @@
 use crate::error_template::{AppError, ErrorTemplate};
 use leptos::ev::{keypress, KeyboardEvent};
-use leptos::*;
+use leptos::prelude::*;
 use leptos_meta::*;
 use leptos_router::*;
 use leptos_use::storage::use_local_storage;
@@ -49,14 +49,14 @@ fn HomePage() -> impl IntoView {
 
     let zh_count = nf.format::<i32>(count);
 
-    let (key, set_key) = create_signal("".to_string());
+    let (key, set_key) = signal("".to_string());
 
     // window() doesn't work on the server so we provide use_window()
     let _ = use_event_listener(use_window(), keypress, move |evt: KeyboardEvent| {
         set_key(evt.key())
     });
 
-    let (debounce_value, set_debounce_value) = create_signal("not called");
+    let (debounce_value, set_debounce_value) = signal("not called");
 
     let debounced_fn = use_debounce_fn(
         move || {
diff --git a/examples/ssr/src/error_template.rs b/examples/ssr/src/error_template.rs
index 83cbbe3..a0245bc 100644
--- a/examples/ssr/src/error_template.rs
+++ b/examples/ssr/src/error_template.rs
@@ -1,6 +1,6 @@
 use cfg_if::cfg_if;
 use http::status::StatusCode;
-use leptos::*;
+use leptos::prelude::*;
 use thiserror::Error;
 
 #[cfg(feature = "ssr")]
diff --git a/examples/ssr/src/fileserv.rs b/examples/ssr/src/fileserv.rs
index 6cb34a3..9eee59f 100644
--- a/examples/ssr/src/fileserv.rs
+++ b/examples/ssr/src/fileserv.rs
@@ -10,7 +10,7 @@ cfg_if! { if #[cfg(feature = "ssr")] {
     use axum::response::Response as AxumResponse;
     use tower::ServiceExt;
     use tower_http::services::ServeDir;
-    use leptos::*;
+    use leptos::prelude::*;
     use crate::app::App;
 
     pub async fn file_and_error_handler(uri: Uri, State(options): State<LeptosOptions>, req: Request<Body>) -> AxumResponse {
diff --git a/examples/ssr/src/lib.rs b/examples/ssr/src/lib.rs
index 91f1c26..f2deee8 100644
--- a/examples/ssr/src/lib.rs
+++ b/examples/ssr/src/lib.rs
@@ -4,7 +4,7 @@ pub mod error_template;
 pub mod fileserv;
 
 cfg_if! { if #[cfg(feature = "hydrate")] {
-    use leptos::*;
+    use leptos::prelude::*;
     use wasm_bindgen::prelude::wasm_bindgen;
     use crate::app::*;
 
diff --git a/examples/ssr/src/main.rs b/examples/ssr/src/main.rs
index 4d92392..911c6d4 100644
--- a/examples/ssr/src/main.rs
+++ b/examples/ssr/src/main.rs
@@ -3,7 +3,7 @@
 async fn main() {
     use axum::{routing::post, Router};
     use leptos::logging::log;
-    use leptos::*;
+    use leptos::prelude::*;
     use leptos_axum::{generate_route_list, LeptosRoutes};
     use leptos_use_ssr::app::*;
     use leptos_use_ssr::fileserv::file_and_error_handler;
diff --git a/examples/sync_signal/src/main.rs b/examples/sync_signal/src/main.rs
index 8fdb931..10ec8da 100644
--- a/examples/sync_signal/src/main.rs
+++ b/examples/sync_signal/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::sync_signal;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (a, set_a) = create_signal(String::new());
-    let (b, set_b) = create_signal(String::new());
+    let (a, set_a) = signal(String::new());
+    let (b, set_b) = signal(String::new());
 
     let _ = sync_signal((a, set_a), (b, set_b));
 
diff --git a/examples/use_abs/src/main.rs b/examples/use_abs/src/main.rs
index b396c55..3570c0d 100644
--- a/examples/use_abs/src/main.rs
+++ b/examples/use_abs/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::math::use_abs;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (value, set_value) = create_signal(-32.25);
+    let (value, set_value) = signal(-32.25);
 
     let result: Signal<f64> = use_abs(value);
 
diff --git a/examples/use_active_element/src/main.rs b/examples/use_active_element/src/main.rs
index 8678475..f8bea4a 100644
--- a/examples/use_active_element/src/main.rs
+++ b/examples/use_active_element/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::use_active_element;
 
diff --git a/examples/use_and/src/main.rs b/examples/use_and/src/main.rs
index d6d4c1c..703646f 100644
--- a/examples/use_and/src/main.rs
+++ b/examples/use_and/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::math::use_and;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (a, set_a) = create_signal(false);
-    let (b, set_b) = create_signal(false);
+    let (a, set_a) = signal(false);
+    let (b, set_b) = signal(false);
 
     let a_and_b = use_and(a, b);
 
diff --git a/examples/use_breakpoints/src/main.rs b/examples/use_breakpoints/src/main.rs
index 16aa495..cb4eb67 100644
--- a/examples/use_breakpoints/src/main.rs
+++ b/examples/use_breakpoints/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::{breakpoints_tailwind, use_breakpoints, BreakpointsTailwind};
 
diff --git a/examples/use_broadcast_channel/src/main.rs b/examples/use_broadcast_channel/src/main.rs
index 749ae88..cbec90e 100644
--- a/examples/use_broadcast_channel/src/main.rs
+++ b/examples/use_broadcast_channel/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::utils::FromToStringCodec;
 use leptos_use::{use_broadcast_channel, UseBroadcastChannelReturn};
@@ -13,7 +13,7 @@ fn Demo() -> impl IntoView {
         ..
     } = use_broadcast_channel::<String, FromToStringCodec>("leptos-use-demo-channel");
 
-    let (input_value, set_input_value) = create_signal(String::new());
+    let (input_value, set_input_value) = signal(String::new());
 
     view! {
         <p>Please open this page in at least two tabs</p>
diff --git a/examples/use_ceil/src/main.rs b/examples/use_ceil/src/main.rs
index 773150a..ebff67d 100644
--- a/examples/use_ceil/src/main.rs
+++ b/examples/use_ceil/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::math::use_ceil;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (value, set_value) = create_signal(4.15);
+    let (value, set_value) = signal(4.15);
 
     let result: Signal<f64> = use_ceil(value);
 
diff --git a/examples/use_clipboard/src/main.rs b/examples/use_clipboard/src/main.rs
index e7852b3..d54195a 100644
--- a/examples/use_clipboard/src/main.rs
+++ b/examples/use_clipboard/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{use_clipboard, use_permission, UseClipboardReturn};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (input, set_input) = create_signal("".to_owned());
+    let (input, set_input) = signal("".to_owned());
 
     let UseClipboardReturn {
         is_supported,
diff --git a/examples/use_color_mode/src/main.rs b/examples/use_color_mode/src/main.rs
index ca6beb7..513d2ef 100644
--- a/examples/use_color_mode/src/main.rs
+++ b/examples/use_color_mode/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::html;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{
     use_color_mode_with_options, use_cycle_list_with_options, ColorMode, UseColorModeOptions,
diff --git a/examples/use_cookie/src/main.rs b/examples/use_cookie/src/main.rs
index 0429b28..ffff3ff 100644
--- a/examples/use_cookie/src/main.rs
+++ b/examples/use_cookie/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_cookie;
 use leptos_use::utils::FromToStringCodec;
diff --git a/examples/use_css_var/src/main.rs b/examples/use_css_var/src/main.rs
index 58ed393..b715b28 100644
--- a/examples/use_css_var/src/main.rs
+++ b/examples/use_css_var/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_css_var_with_options, UseCssVarOptions};
 
@@ -17,7 +17,7 @@ fn Demo() -> impl IntoView {
     };
 
     let elv = create_node_ref::<Div>();
-    let (key, set_key) = create_signal("--color".to_string());
+    let (key, set_key) = signal("--color".to_string());
     let (color_val, _) = use_css_var_with_options(key, UseCssVarOptions::default().target(elv));
     let change_var = move |_| {
         if key.get() == "--color" {
diff --git a/examples/use_cycle_list/src/main.rs b/examples/use_cycle_list/src/main.rs
index 4fcb600..a82d240 100644
--- a/examples/use_cycle_list/src/main.rs
+++ b/examples/use_cycle_list/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_cycle_list, UseCycleListReturn};
 
diff --git a/examples/use_debounce_fn/src/main.rs b/examples/use_debounce_fn/src/main.rs
index 08d5dbf..2073eba 100644
--- a/examples/use_debounce_fn/src/main.rs
+++ b/examples/use_debounce_fn/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{use_debounce_fn_with_options, DebounceOptions};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (click_count, set_click_count) = create_signal(0);
-    let (debounced_count, set_debounced_count) = create_signal(0);
+    let (click_count, set_click_count) = signal(0);
+    let (debounced_count, set_debounced_count) = signal(0);
 
     let debounced_fn = use_debounce_fn_with_options(
         move || set_debounced_count.set(debounced_count.get_untracked() + 1),
diff --git a/examples/use_device_orientation/src/main.rs b/examples/use_device_orientation/src/main.rs
index a3e3173..115c164 100644
--- a/examples/use_device_orientation/src/main.rs
+++ b/examples/use_device_orientation/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_device_orientation;
 
@@ -7,22 +7,22 @@ fn Demo() -> impl IntoView {
     let orientation = use_device_orientation();
 
     view! {
-        <pre>
-            {move || format!(
-                concat!(
-                    "is_supported: {}\n",
-                    "absolute: {}\n",
-                    "alpha: {:?}\n",
-                    "beta: {:?}\n",
-                    "gamma: {:?}\n",
-                ),
-                orientation.is_supported.get(),
-                orientation.absolute.get(),
-                orientation.alpha.get(),
-                orientation.beta.get(),
-                orientation.gamma.get(),
-            )}
-        </pre> }
+    <pre>
+        {move || format!(
+            concat!(
+                "is_supported: {}\n",
+                "absolute: {}\n",
+                "alpha: {:?}\n",
+                "beta: {:?}\n",
+                "gamma: {:?}\n",
+            ),
+            orientation.is_supported.get(),
+            orientation.absolute.get(),
+            orientation.alpha.get(),
+            orientation.beta.get(),
+            orientation.gamma.get(),
+        )}
+    </pre> }
 }
 
 fn main() {
diff --git a/examples/use_device_pixel_ratio/src/main.rs b/examples/use_device_pixel_ratio/src/main.rs
index fb3e6f7..7a7461a 100644
--- a/examples/use_device_pixel_ratio/src/main.rs
+++ b/examples/use_device_pixel_ratio/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_device_pixel_ratio;
 
diff --git a/examples/use_display_media/src/main.rs b/examples/use_display_media/src/main.rs
index d1d50d8..f069e32 100644
--- a/examples/use_display_media/src/main.rs
+++ b/examples/use_display_media/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_display_media, UseDisplayMediaReturn};
 
diff --git a/examples/use_document_visibility/src/main.rs b/examples/use_document_visibility/src/main.rs
index bb84247..8db909a 100644
--- a/examples/use_document_visibility/src/main.rs
+++ b/examples/use_document_visibility/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_document_visibility;
 use std::time::Duration;
@@ -6,7 +6,7 @@ use std::time::Duration;
 #[component]
 fn Demo() -> impl IntoView {
     let start_message = "💡 Minimize the page or switch tab then return";
-    let (message, set_message) = create_signal(start_message);
+    let (message, set_message) = signal(start_message);
     let visibility = use_document_visibility();
 
     let _ = watch(
diff --git a/examples/use_draggable/src/main.rs b/examples/use_draggable/src/main.rs
index f7cec80..6613e34 100644
--- a/examples/use_draggable/src/main.rs
+++ b/examples/use_draggable/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::Position;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_draggable_with_options, use_window, UseDraggableOptions, UseDraggableReturn};
diff --git a/examples/use_drop_zone/src/main.rs b/examples/use_drop_zone/src/main.rs
index 52f31d4..23ea9ec 100644
--- a/examples/use_drop_zone/src/main.rs
+++ b/examples/use_drop_zone/src/main.rs
@@ -1,11 +1,11 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::{use_drop_zone_with_options, UseDropZoneOptions, UseDropZoneReturn};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (dropped, set_dropped) = create_signal(false);
+    let (dropped, set_dropped) = signal(false);
 
     let drop_zone_el = create_node_ref::<Div>();
 
diff --git a/examples/use_element_bounding/src/main.rs b/examples/use_element_bounding/src/main.rs
index 48ab2e4..6bb9b8d 100644
--- a/examples/use_element_bounding/src/main.rs
+++ b/examples/use_element_bounding/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Textarea;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{use_element_bounding, UseElementBoundingReturn};
 
diff --git a/examples/use_element_hover/src/main.rs b/examples/use_element_hover/src/main.rs
index a847134..c819687 100644
--- a/examples/use_element_hover/src/main.rs
+++ b/examples/use_element_hover/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Button;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_element_hover_with_options, UseElementHoverOptions};
 
diff --git a/examples/use_element_size/src/main.rs b/examples/use_element_size/src/main.rs
index 1986084..3069754 100644
--- a/examples/use_element_size/src/main.rs
+++ b/examples/use_element_size/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Textarea;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{use_element_size, UseElementSizeReturn};
 
diff --git a/examples/use_element_visibility/src/main.rs b/examples/use_element_visibility/src/main.rs
index 4e7eddf..6fa448b 100644
--- a/examples/use_element_visibility/src/main.rs
+++ b/examples/use_element_visibility/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay, Note};
 use leptos_use::use_element_visibility;
 
diff --git a/examples/use_event_listener/src/main.rs b/examples/use_event_listener/src/main.rs
index 76c2f62..191ebd7 100644
--- a/examples/use_event_listener/src/main.rs
+++ b/examples/use_event_listener/src/main.rs
@@ -1,7 +1,7 @@
 use leptos::ev::{click, keydown};
 use leptos::html::A;
 use leptos::logging::log;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::{use_event_listener, use_window};
 
 #[component]
@@ -21,7 +21,7 @@ fn Demo() -> impl IntoView {
         evt.prevent_default();
     });
 
-    let (cond, set_cond) = create_signal(true);
+    let (cond, set_cond) = signal(true);
 
     view! {
         <p>"Check in the dev tools console"</p>
diff --git a/examples/use_favicon/src/main.rs b/examples/use_favicon/src/main.rs
index a021e80..ef5fdca 100644
--- a/examples/use_favicon/src/main.rs
+++ b/examples/use_favicon/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_favicon_with_options, UseFaviconOptions};
 
diff --git a/examples/use_floor/src/main.rs b/examples/use_floor/src/main.rs
index 48b304d..a38d377 100644
--- a/examples/use_floor/src/main.rs
+++ b/examples/use_floor/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::math::use_floor;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (value, set_value) = create_signal(5.95);
+    let (value, set_value) = signal(5.95);
 
     let result: Signal<f64> = use_floor(value);
 
diff --git a/examples/use_geolocation/src/main.rs b/examples/use_geolocation/src/main.rs
index 895aa7e..8df2f9c 100644
--- a/examples/use_geolocation/src/main.rs
+++ b/examples/use_geolocation/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_geolocation, UseGeolocationReturn};
 
diff --git a/examples/use_idle/src/main.rs b/examples/use_idle/src/main.rs
index 26fb5af..a69aec4 100644
--- a/examples/use_idle/src/main.rs
+++ b/examples/use_idle/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay, Note};
 use leptos_use::{use_idle, use_timestamp_with_options, UseIdleReturn, UseTimestampOptions};
 
diff --git a/examples/use_infinite_scroll/src/main.rs b/examples/use_infinite_scroll/src/main.rs
index 57121ca..fbd5e3c 100644
--- a/examples/use_infinite_scroll/src/main.rs
+++ b/examples/use_infinite_scroll/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_infinite_scroll_with_options, UseInfiniteScrollOptions};
 
@@ -7,7 +7,7 @@ use leptos_use::{use_infinite_scroll_with_options, UseInfiniteScrollOptions};
 fn Demo() -> impl IntoView {
     let el = create_node_ref::<Div>();
 
-    let (data, set_data) = create_signal(vec![1, 2, 3, 4, 5, 6]);
+    let (data, set_data) = signal(vec![1, 2, 3, 4, 5, 6]);
 
     let _ = use_infinite_scroll_with_options(
         el,
diff --git a/examples/use_intersection_observer/src/main.rs b/examples/use_intersection_observer/src/main.rs
index aa69103..af905d1 100644
--- a/examples/use_intersection_observer/src/main.rs
+++ b/examples/use_intersection_observer/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::{
     use_intersection_observer_with_options, UseIntersectionObserverOptions,
@@ -10,7 +10,7 @@ use leptos_use::{
 fn Demo() -> impl IntoView {
     let root = create_node_ref::<Div>();
     let target = create_node_ref::<Div>();
-    let (is_visible, set_visible) = create_signal(false);
+    let (is_visible, set_visible) = signal(false);
 
     let UseIntersectionObserverReturn {
         is_active,
diff --git a/examples/use_interval/src/main.rs b/examples/use_interval/src/main.rs
index f6dbfbd..d3102df 100644
--- a/examples/use_interval/src/main.rs
+++ b/examples/use_interval/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_interval, UseIntervalReturn};
 
diff --git a/examples/use_interval_fn/src/main.rs b/examples/use_interval_fn/src/main.rs
index b46d655..ec5afe7 100644
--- a/examples/use_interval_fn/src/main.rs
+++ b/examples/use_interval_fn/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_interval_fn;
 use leptos_use::utils::Pausable;
@@ -18,9 +18,9 @@ fn Demo() -> impl IntoView {
         "Привет",
     ];
 
-    let (word, set_word) = create_signal(greetings[0]);
-    let (interval, set_interval) = create_signal(500_u64);
-    let (index, set_index) = create_signal(0);
+    let (word, set_word) = signal(greetings[0]);
+    let (interval, set_interval) = signal(500_u64);
+    let (index, set_index) = signal(0);
 
     let Pausable {
         pause,
diff --git a/examples/use_intl_number_format/src/main.rs b/examples/use_intl_number_format/src/main.rs
index db01751..6ecbe59 100644
--- a/examples/use_intl_number_format/src/main.rs
+++ b/examples/use_intl_number_format/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_intl_number_format, NumberStyle, UseIntlNumberFormatOptions};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (number, set_number) = create_signal(123456.78);
+    let (number, set_number) = signal(123456.78);
 
     let de_nf = use_intl_number_format(
         UseIntlNumberFormatOptions::default()
diff --git a/examples/use_media_query/src/main.rs b/examples/use_media_query/src/main.rs
index 5a86e75..b5bfc54 100644
--- a/examples/use_media_query/src/main.rs
+++ b/examples/use_media_query/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::use_media_query;
 
diff --git a/examples/use_mouse/src/main.rs b/examples/use_mouse/src/main.rs
index 7269145..1874478 100644
--- a/examples/use_mouse/src/main.rs
+++ b/examples/use_mouse/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{
     use_mouse, use_mouse_with_options, UseMouseCoordType, UseMouseEventExtractor, UseMouseOptions,
diff --git a/examples/use_mouse_in_element/src/main.rs b/examples/use_mouse_in_element/src/main.rs
index a0ba237..7cdbfcc 100644
--- a/examples/use_mouse_in_element/src/main.rs
+++ b/examples/use_mouse_in_element/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_mouse_in_element, UseMouseInElementReturn};
 
diff --git a/examples/use_mutation_observer/src/main.rs b/examples/use_mutation_observer/src/main.rs
index d4ca625..f624643 100644
--- a/examples/use_mutation_observer/src/main.rs
+++ b/examples/use_mutation_observer/src/main.rs
@@ -1,5 +1,5 @@
 use leptos::html::Div;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_mutation_observer_with_options, UseMutationObserverOptions};
 use std::time::Duration;
@@ -7,9 +7,9 @@ use std::time::Duration;
 #[component]
 fn Demo() -> impl IntoView {
     let el = create_node_ref::<Div>();
-    let (messages, set_messages) = create_signal(vec![]);
-    let (class_name, set_class_name) = create_signal(String::new());
-    let (style, set_style) = create_signal(String::new());
+    let (messages, set_messages) = signal(vec![]);
+    let (class_name, set_class_name) = signal(String::new());
+    let (style, set_style) = signal(String::new());
 
     use_mutation_observer_with_options(
         el,
diff --git a/examples/use_not/src/main.rs b/examples/use_not/src/main.rs
index bde6acd..1a7f1af 100644
--- a/examples/use_not/src/main.rs
+++ b/examples/use_not/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::math::use_not;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (a, set_a) = create_signal(false);
+    let (a, set_a) = signal(false);
     let not_a = use_not(a);
 
     view! {
diff --git a/examples/use_or/src/main.rs b/examples/use_or/src/main.rs
index b724cf7..8c18730 100644
--- a/examples/use_or/src/main.rs
+++ b/examples/use_or/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::math::use_or;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (a, set_a) = create_signal(false);
-    let (b, set_b) = create_signal(false);
+    let (a, set_a) = signal(false);
+    let (b, set_b) = signal(false);
 
     let a_or_b = use_or(a, b);
 
diff --git a/examples/use_permission/src/main.rs b/examples/use_permission/src/main.rs
index afa5889..64ede19 100644
--- a/examples/use_permission/src/main.rs
+++ b/examples/use_permission/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_permission;
 
diff --git a/examples/use_raf_fn/src/main.rs b/examples/use_raf_fn/src/main.rs
index 5c8b14f..b658481 100644
--- a/examples/use_raf_fn/src/main.rs
+++ b/examples/use_raf_fn/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_raf_fn, utils::Pausable};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (count, set_count) = create_signal(0);
+    let (count, set_count) = signal(0);
 
     let Pausable {
         pause,
diff --git a/examples/use_resize_observer/src/main.rs b/examples/use_resize_observer/src/main.rs
index 7394bbb..2d40199 100644
--- a/examples/use_resize_observer/src/main.rs
+++ b/examples/use_resize_observer/src/main.rs
@@ -1,12 +1,12 @@
 use leptos::html::Textarea;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::use_resize_observer;
 
 #[component]
 fn Demo() -> impl IntoView {
     let el = create_node_ref::<Textarea>();
-    let (text, set_text) = create_signal("".to_string());
+    let (text, set_text) = signal("".to_string());
 
     use_resize_observer(el, move |entries, _| {
         let rect = entries[0].content_rect();
diff --git a/examples/use_round/src/main.rs b/examples/use_round/src/main.rs
index fa84815..1929d77 100644
--- a/examples/use_round/src/main.rs
+++ b/examples/use_round/src/main.rs
@@ -1,10 +1,10 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::math::use_round;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (value, set_value) = create_signal(5.95);
+    let (value, set_value) = signal(5.95);
 
     let result: Signal<f64> = use_round(value);
 
diff --git a/examples/use_scroll/src/main.rs b/examples/use_scroll/src/main.rs
index a70b87e..b5206ae 100644
--- a/examples/use_scroll/src/main.rs
+++ b/examples/use_scroll/src/main.rs
@@ -1,6 +1,6 @@
 use leptos::html::Div;
 use leptos::logging::log;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::{use_scroll_with_options, ScrollBehavior, UseScrollOptions, UseScrollReturn};
 
@@ -9,7 +9,7 @@ use web_sys::Event;
 #[component]
 fn Demo() -> impl IntoView {
     let el = create_node_ref::<Div>();
-    let (smooth, set_smooth) = create_signal(false);
+    let (smooth, set_smooth) = signal(false);
     let behavior = Signal::derive(move || {
         if smooth.get() {
             ScrollBehavior::Smooth
diff --git a/examples/use_service_worker/src/main.rs b/examples/use_service_worker/src/main.rs
index 93dc1fa..91e4167 100644
--- a/examples/use_service_worker/src/main.rs
+++ b/examples/use_service_worker/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::{use_document, use_service_worker, UseServiceWorkerReturn};
 use web_sys::HtmlMetaElement;
diff --git a/examples/use_sorted/src/main.rs b/examples/use_sorted/src/main.rs
index 4ffb11d..9a05f3d 100644
--- a/examples/use_sorted/src/main.rs
+++ b/examples/use_sorted/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_sorted;
 
diff --git a/examples/use_storage/src/main.rs b/examples/use_storage/src/main.rs
index 0d38d7b..4ae5423 100644
--- a/examples/use_storage/src/main.rs
+++ b/examples/use_storage/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::storage::use_local_storage;
 use leptos_use::utils::JsonCodec;
diff --git a/examples/use_throttle_fn/src/main.rs b/examples/use_throttle_fn/src/main.rs
index fbf5bf4..0e70cd8 100644
--- a/examples/use_throttle_fn/src/main.rs
+++ b/examples/use_throttle_fn/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::use_throttle_fn;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (click_count, set_click_count) = create_signal(0);
-    let (throttled_count, set_throttled_count) = create_signal(0);
+    let (click_count, set_click_count) = signal(0);
+    let (throttled_count, set_throttled_count) = signal(0);
 
     let throttled_fn = use_throttle_fn(
         move || set_throttled_count.set(throttled_count.get_untracked() + 1),
diff --git a/examples/use_timeout_fn/src/main.rs b/examples/use_timeout_fn/src/main.rs
index 53e4842..e45df3c 100644
--- a/examples/use_timeout_fn/src/main.rs
+++ b/examples/use_timeout_fn/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_timeout_fn, UseTimeoutFnReturn};
 
@@ -6,7 +6,7 @@ use leptos_use::{use_timeout_fn, UseTimeoutFnReturn};
 fn Demo() -> impl IntoView {
     const DEFAULT_TEXT: &str = "Please wait for 3 seconds";
 
-    let (text, set_text) = create_signal(DEFAULT_TEXT.to_string());
+    let (text, set_text) = signal(DEFAULT_TEXT.to_string());
     let UseTimeoutFnReturn {
         start, is_pending, ..
     } = use_timeout_fn(
diff --git a/examples/use_timestamp/src/main.rs b/examples/use_timestamp/src/main.rs
index f67a8eb..d275859 100644
--- a/examples/use_timestamp/src/main.rs
+++ b/examples/use_timestamp/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_timestamp;
 
diff --git a/examples/use_web_notification/src/main.rs b/examples/use_web_notification/src/main.rs
index bc717bb..cf2f310 100644
--- a/examples/use_web_notification/src/main.rs
+++ b/examples/use_web_notification/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, BooleanDisplay};
 use leptos_use::{
     use_web_notification_with_options, NotificationDirection, ShowOptions,
diff --git a/examples/use_websocket/src/main.rs b/examples/use_websocket/src/main.rs
index d7fef69..6374e13 100644
--- a/examples/use_websocket/src/main.rs
+++ b/examples/use_websocket/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{
     core::ConnectionReadyState, use_websocket, use_websocket_with_options, UseWebSocketOptions,
@@ -9,7 +9,7 @@ use web_sys::{CloseEvent, Event};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (history, set_history) = create_signal(vec![]);
+    let (history, set_history) = signal(vec![]);
 
     fn update_history(&history: &WriteSignal<Vec<String>>, message: String) {
         let _ = &history.update(|history: &mut Vec<_>| history.push(message));
@@ -68,7 +68,7 @@ fn Demo() -> impl IntoView {
     // use_websocket_with_options
     // ----------------------------
 
-    let (history2, set_history2) = create_signal(vec![]);
+    let (history2, set_history2) = signal(vec![]);
 
     let on_open_callback = move |e: Event| {
         set_history2.update(|history: &mut Vec<_>| {
diff --git a/examples/use_webtransport/src/log_display.rs b/examples/use_webtransport/src/log_display.rs
index 7d9e71f..7622cd7 100644
--- a/examples/use_webtransport/src/log_display.rs
+++ b/examples/use_webtransport/src/log_display.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 
 #[component]
 pub fn LogDisplay(#[prop(into)] log: Signal<Vec<String>>) -> impl IntoView {
diff --git a/examples/use_webtransport/src/main.rs b/examples/use_webtransport/src/main.rs
index 52bd825..a182f8c 100644
--- a/examples/use_webtransport/src/main.rs
+++ b/examples/use_webtransport/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::ConnectionReadyState;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_webtransport_with_options, UseWebTransportOptions};
@@ -13,7 +13,7 @@ use stream_send::*;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (datagrams_log, set_datagrams_log) = create_signal(vec![]);
+    let (datagrams_log, set_datagrams_log) = signal(vec![]);
 
     let id = store_value(0);
 
@@ -28,7 +28,7 @@ fn Demo() -> impl IntoView {
             }),
     );
 
-    let (text, set_text) = create_signal("".to_string());
+    let (text, set_text) = signal("".to_string());
 
     let on_send_datagrams = {
         let transport = transport.clone();
@@ -56,7 +56,7 @@ fn Demo() -> impl IntoView {
         false,
     );
 
-    let (bidir_streams, set_bidir_streams) = create_signal(vec![]);
+    let (bidir_streams, set_bidir_streams) = signal(vec![]);
 
     let on_open_bidir_stream = {
         let transport = transport.clone();
diff --git a/examples/use_webtransport/src/stream_bidir.rs b/examples/use_webtransport/src/stream_bidir.rs
index 98fcccc..43788fb 100644
--- a/examples/use_webtransport/src/stream_bidir.rs
+++ b/examples/use_webtransport/src/stream_bidir.rs
@@ -1,5 +1,5 @@
 use crate::{LogDisplay, StreamSend};
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::ConnectionReadyState;
 use leptos_use::BidirStream;
 
@@ -8,7 +8,7 @@ pub fn StreamBidir(
     #[prop(into)] ready_state: Signal<ConnectionReadyState>,
     stream: BidirStream,
 ) -> impl IntoView {
-    let (log, set_log) = create_signal(vec![]);
+    let (log, set_log) = signal(vec![]);
 
     let on_send = move |msg| {
         set_log.update(|log| log.push(format!("Sent: '{}'", msg)));
diff --git a/examples/use_webtransport/src/stream_send.rs b/examples/use_webtransport/src/stream_send.rs
index dd4f5e9..b10ab23 100644
--- a/examples/use_webtransport/src/stream_send.rs
+++ b/examples/use_webtransport/src/stream_send.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::ConnectionReadyState;
 use leptos_use::SendableStream;
 
@@ -12,7 +12,7 @@ where
     S: SendableStream + 'static,
     F: Fn(String) + 'static,
 {
-    let (text, set_text) = create_signal("".to_string());
+    let (text, set_text) = signal("".to_string());
 
     let on_send = {
         move |_| {
diff --git a/examples/use_webtransport_with_server/client/src/log_display.rs b/examples/use_webtransport_with_server/client/src/log_display.rs
index 7d9e71f..7622cd7 100644
--- a/examples/use_webtransport_with_server/client/src/log_display.rs
+++ b/examples/use_webtransport_with_server/client/src/log_display.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 
 #[component]
 pub fn LogDisplay(#[prop(into)] log: Signal<Vec<String>>) -> impl IntoView {
diff --git a/examples/use_webtransport_with_server/client/src/main.rs b/examples/use_webtransport_with_server/client/src/main.rs
index c7dd8c7..7b0689c 100644
--- a/examples/use_webtransport_with_server/client/src/main.rs
+++ b/examples/use_webtransport_with_server/client/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::ConnectionReadyState;
 use leptos_use::docs::demo_or_body;
 use leptos_use::{use_webtransport_with_options, UseWebTransportOptions};
@@ -13,8 +13,8 @@ use stream_send::*;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (datagrams_log, set_datagrams_log) = create_signal(vec![]);
-    let (bidir_streams, set_bidir_streams) = create_signal(vec![]);
+    let (datagrams_log, set_datagrams_log) = signal(vec![]);
+    let (bidir_streams, set_bidir_streams) = signal(vec![]);
 
     let id = store_value(0);
 
@@ -37,7 +37,7 @@ fn Demo() -> impl IntoView {
             }),
     );
 
-    let (text, set_text) = create_signal("".to_string());
+    let (text, set_text) = signal("".to_string());
 
     let on_send_datagrams = {
         let transport = transport.clone();
diff --git a/examples/use_webtransport_with_server/client/src/stream_bidir.rs b/examples/use_webtransport_with_server/client/src/stream_bidir.rs
index 949d4b7..be2c7cb 100644
--- a/examples/use_webtransport_with_server/client/src/stream_bidir.rs
+++ b/examples/use_webtransport_with_server/client/src/stream_bidir.rs
@@ -1,5 +1,5 @@
 use crate::{LogDisplay, StreamSend};
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::ConnectionReadyState;
 use leptos_use::{BidirStream, CloseableStream, StreamState};
 
@@ -9,7 +9,7 @@ pub fn StreamBidir(
     stream: BidirStream,
     opened_by: &'static str,
 ) -> impl IntoView {
-    let (log, set_log) = create_signal(vec![]);
+    let (log, set_log) = signal(vec![]);
 
     let on_send = move |msg| {
         set_log.update(|log| log.push(format!("Sent: '{}'", msg)));
diff --git a/examples/use_webtransport_with_server/client/src/stream_send.rs b/examples/use_webtransport_with_server/client/src/stream_send.rs
index 7cffe86..73707f4 100644
--- a/examples/use_webtransport_with_server/client/src/stream_send.rs
+++ b/examples/use_webtransport_with_server/client/src/stream_send.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::core::ConnectionReadyState;
 use leptos_use::{SendableStream, StreamState};
 
@@ -13,7 +13,7 @@ where
     S: SendableStream + 'static,
     F: Fn(String) + 'static,
 {
-    let (text, set_text) = create_signal("".to_string());
+    let (text, set_text) = signal("".to_string());
 
     let on_send = {
         move |_| {
diff --git a/examples/use_window_focus/src/main.rs b/examples/use_window_focus/src/main.rs
index f97ab80..2269608 100644
--- a/examples/use_window_focus/src/main.rs
+++ b/examples/use_window_focus/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use::use_window_focus;
 
@@ -6,7 +6,7 @@ use leptos_use::use_window_focus;
 fn Demo() -> impl IntoView {
     let start_message = "💡 Click somewhere outside of the document to unfocus.";
 
-    let (message, set_message) = create_signal(start_message);
+    let (message, set_message) = signal(start_message);
 
     let focused = use_window_focus();
 
diff --git a/examples/use_window_scroll/src/main.rs b/examples/use_window_scroll/src/main.rs
index f659c54..775d349 100644
--- a/examples/use_window_scroll/src/main.rs
+++ b/examples/use_window_scroll/src/main.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::use_window_scroll;
 
diff --git a/examples/watch_debounced/src/main.rs b/examples/watch_debounced/src/main.rs
index 4a7d40a..f19f52a 100644
--- a/examples/watch_debounced/src/main.rs
+++ b/examples/watch_debounced/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{watch_debounced_with_options, WatchDebouncedOptions};
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (input, set_input) = create_signal("".to_string());
-    let (updated, set_updated) = create_signal(0);
+    let (input, set_input) = signal("".to_string());
+    let (updated, set_updated) = signal(0);
 
     let _ = watch_debounced_with_options(
         move || input.get(),
diff --git a/examples/watch_pausable/src/main.rs b/examples/watch_pausable/src/main.rs
index 0e450ec..9d3f0e1 100644
--- a/examples/watch_pausable/src/main.rs
+++ b/examples/watch_pausable/src/main.rs
@@ -1,13 +1,13 @@
 use leptos::html::Input;
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::{watch_pausable, WatchPausableReturn};
 
 #[component]
 fn Demo() -> impl IntoView {
     let input = create_node_ref::<Input>();
-    let (log, set_log) = create_signal("".to_string());
-    let (source, set_source) = create_signal("".to_string());
+    let (log, set_log) = signal("".to_string());
+    let (source, set_source) = signal("".to_string());
 
     let WatchPausableReturn {
         pause,
diff --git a/examples/watch_throttled/src/main.rs b/examples/watch_throttled/src/main.rs
index c332fe4..e8dd004 100644
--- a/examples/watch_throttled/src/main.rs
+++ b/examples/watch_throttled/src/main.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::{demo_or_body, Note};
 use leptos_use::watch_throttled;
 
 #[component]
 fn Demo() -> impl IntoView {
-    let (input, set_input) = create_signal("".to_string());
-    let (updated, set_updated) = create_signal(0);
+    let (input, set_input) = signal("".to_string());
+    let (updated, set_updated) = signal(0);
 
     let _ = watch_throttled(
         move || input.get(),
diff --git a/src/core/element_maybe_signal.rs b/src/core/element_maybe_signal.rs
index 7ef0c98..904e9e3 100644
--- a/src/core/element_maybe_signal.rs
+++ b/src/core/element_maybe_signal.rs
@@ -1,7 +1,8 @@
 use crate::{UseDocument, UseWindow};
 use cfg_if::cfg_if;
-use leptos::html::ElementDescriptor;
-use leptos::*;
+use leptos::html::HtmlElement;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 use std::ops::Deref;
 
diff --git a/src/core/elements_maybe_signal.rs b/src/core/elements_maybe_signal.rs
index e1f7f7b..2f5479e 100644
--- a/src/core/elements_maybe_signal.rs
+++ b/src/core/elements_maybe_signal.rs
@@ -2,7 +2,8 @@ use crate::core::ElementMaybeSignal;
 use crate::{UseDocument, UseWindow};
 use cfg_if::cfg_if;
 use leptos::html::ElementDescriptor;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 use std::ops::Deref;
 
diff --git a/src/core/maybe_rw_signal.rs b/src/core/maybe_rw_signal.rs
index f1e8bac..867b21e 100644
--- a/src/core/maybe_rw_signal.rs
+++ b/src/core/maybe_rw_signal.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use std::fmt::Debug;
 
 pub enum MaybeRwSignal<T>
@@ -91,7 +91,7 @@ impl<T: Clone> MaybeRwSignal<T> {
     pub fn into_signal(self) -> (Signal<T>, WriteSignal<T>) {
         match self {
             Self::DynamicRead(s) => {
-                let (r, w) = create_signal(s.get_untracked());
+                let (r, w) = signal(s.get_untracked());
 
                 create_effect(move |_| {
                     w.update(move |w| {
@@ -103,7 +103,7 @@ impl<T: Clone> MaybeRwSignal<T> {
             }
             Self::DynamicRw(r, w) => (r, w),
             Self::Static(v) => {
-                let (r, w) = create_signal(v.clone());
+                let (r, w) = signal(v.clone());
                 (Signal::from(r), w)
             }
         }
diff --git a/src/core/storage.rs b/src/core/storage.rs
index 8390217..e78e3f9 100644
--- a/src/core/storage.rs
+++ b/src/core/storage.rs
@@ -1,4 +1,4 @@
-use leptos::window;
+use leptos::prelude::*;
 use wasm_bindgen::JsValue;
 
 /// Local or session storage or a custom store that is a `web_sys::Storage`.
diff --git a/src/core/url.rs b/src/core/url.rs
index efb4bc3..f8d6665 100644
--- a/src/core/url.rs
+++ b/src/core/url.rs
@@ -1,4 +1,4 @@
-use leptos::window;
+use leptos::prelude::*;
 
 #[cfg_attr(feature = "ssr", allow(dead_code))]
 fn get() -> web_sys::Url {
diff --git a/src/core/use_rw_signal.rs b/src/core/use_rw_signal.rs
index 83601b8..eef2675 100644
--- a/src/core/use_rw_signal.rs
+++ b/src/core/use_rw_signal.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 
 pub enum UseRwSignal<T: 'static> {
     Separate(Signal<T>, WriteSignal<T>),
diff --git a/src/docs/boolean_display.rs b/src/docs/boolean_display.rs
index 33322d6..b47faba 100644
--- a/src/docs/boolean_display.rs
+++ b/src/docs/boolean_display.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 
 #[component]
 pub fn BooleanDisplay(
diff --git a/src/docs/demo.rs b/src/docs/demo.rs
index 5ff446e..a3172c0 100644
--- a/src/docs/demo.rs
+++ b/src/docs/demo.rs
@@ -1,4 +1,4 @@
-use leptos::document;
+use leptos::prelude::*;
 use wasm_bindgen::JsCast;
 
 pub fn demo_or_body() -> web_sys::HtmlElement {
diff --git a/src/docs/note.rs b/src/docs/note.rs
index 356e62f..5b5e4ae 100644
--- a/src/docs/note.rs
+++ b/src/docs/note.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 
 #[component]
 pub fn Note(#[prop(optional, into)] class: String, children: Children) -> impl IntoView {
diff --git a/src/is_err.rs b/src/is_err.rs
index 95102b3..13c1a66 100644
--- a/src/is_err.rs
+++ b/src/is_err.rs
@@ -1,5 +1,6 @@
 use crate::utils::use_derive_signal;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 use_derive_signal!(
     /// Reactive `Result::is_err()`.
@@ -7,12 +8,12 @@ use_derive_signal!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::is_err;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (example, set_example) = create_signal(
+    /// let (example, set_example) = signal(
     ///     if js_sys::Math::random() < 0.5 { Ok("Example") } else { Err(()) }
     /// );
     ///
diff --git a/src/is_none.rs b/src/is_none.rs
index d70ff97..d803185 100644
--- a/src/is_none.rs
+++ b/src/is_none.rs
@@ -1,5 +1,6 @@
 use crate::utils::use_derive_signal;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 use_derive_signal!(
     /// Reactive `Option::is_none()`.
@@ -7,12 +8,12 @@ use_derive_signal!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::is_none;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (example, set_example) = create_signal(
+    /// let (example, set_example) = signal(
     ///     if js_sys::Math::random() < 0.5 { Some("Example") } else { None }
     /// );
     ///
diff --git a/src/is_ok.rs b/src/is_ok.rs
index 38cefcb..5b6a449 100644
--- a/src/is_ok.rs
+++ b/src/is_ok.rs
@@ -1,5 +1,5 @@
 use crate::utils::use_derive_signal;
-use leptos::*;
+use leptos::prelude::*;
 
 use_derive_signal!(
     /// Reactive `Result::is_ok()`.
@@ -7,12 +7,12 @@ use_derive_signal!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::is_ok;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (example, set_example) = create_signal(
+    /// let (example, set_example) = signal(
     ///     if js_sys::Math::random() < 0.5 { Ok("Example") } else { Err(()) }
     /// );
     ///
diff --git a/src/is_some.rs b/src/is_some.rs
index c75ec07..f1edefc 100644
--- a/src/is_some.rs
+++ b/src/is_some.rs
@@ -1,5 +1,6 @@
 use crate::utils::use_derive_signal;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 use_derive_signal!(
     /// Reactive `Option::is_some()`.
@@ -7,12 +8,12 @@ use_derive_signal!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::is_some;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (example, set_example) = create_signal(
+    /// let (example, set_example) = signal(
     ///     if js_sys::Math::random() < 0.5 { Some("Example") } else { None }
     /// );
     ///
diff --git a/src/math/use_abs.rs b/src/math/use_abs.rs
index 2c6e00c..1e64ec9 100644
--- a/src/math/use_abs.rs
+++ b/src/math/use_abs.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_simple_math;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use num::Float;
 use paste::paste;
 
@@ -13,12 +14,12 @@ use_simple_math!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_abs;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (value, set_value) = create_signal(-32.25);
+    /// let (value, set_value) = signal(-32.25);
     /// let result: Signal<f64> = use_abs(value); // 32.25
     /// #
     /// # assert_eq!(result.get(), 32.25);
diff --git a/src/math/use_and.rs b/src/math/use_and.rs
index 9ce76ed..d77dd03 100644
--- a/src/math/use_and.rs
+++ b/src/math/use_and.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_binary_logic;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use paste::paste;
 
 use_binary_logic!(
@@ -12,13 +13,13 @@ use_binary_logic!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_and;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (a, set_a) = create_signal(true);
-    /// let (b, set_b) = create_signal(false);
+    /// let (a, set_a) = signal(true);
+    /// let (b, set_b) = signal(false);
     ///
     /// let a_and_b = use_and(a, b);
     /// #
diff --git a/src/math/use_ceil.rs b/src/math/use_ceil.rs
index 0ddcba3..60d3c8a 100644
--- a/src/math/use_ceil.rs
+++ b/src/math/use_ceil.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_simple_math;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use num::Float;
 use paste::paste;
 
@@ -13,12 +14,12 @@ use_simple_math!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_ceil;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (value, set_value) = create_signal(44.15);
+    /// let (value, set_value) = signal(44.15);
     /// let result: Signal<f64> = use_ceil(value); // 45
     /// #
     /// # assert_eq!(result.get(), 45.0);
diff --git a/src/math/use_floor.rs b/src/math/use_floor.rs
index 9079260..d0ec1a5 100644
--- a/src/math/use_floor.rs
+++ b/src/math/use_floor.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_simple_math;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use num::Float;
 use paste::paste;
 
@@ -13,12 +14,12 @@ use_simple_math!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_floor;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (value, set_value) = create_signal(45.95);
+    /// let (value, set_value) = signal(45.95);
     /// let result: Signal<f64> = use_floor(value); // 45
     /// #
     /// # assert_eq!(result.get(), 45.0);
diff --git a/src/math/use_max.rs b/src/math/use_max.rs
index 4fb6ac3..b41478c 100644
--- a/src/math/use_max.rs
+++ b/src/math/use_max.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_partial_cmp;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::cmp::Ordering;
 
 use_partial_cmp!(
@@ -14,12 +15,12 @@ use_partial_cmp!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_max;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (values, set_values) = create_signal(vec![1.0, 2.0, 3.0, f32::NAN, 4.0, 5.0]);
+    /// let (values, set_values) = signal(vec![1.0, 2.0, 3.0, f32::NAN, 4.0, 5.0]);
     /// let result = use_max::<Vec<f32>, _, _>(values); // Some(5.0)
     /// #
     /// # assert_eq!(result.get(), Some(5.0));
diff --git a/src/math/use_min.rs b/src/math/use_min.rs
index 9dcaaf1..6bf1ab1 100644
--- a/src/math/use_min.rs
+++ b/src/math/use_min.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_partial_cmp;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::cmp::Ordering;
 
 use_partial_cmp!(
@@ -14,12 +15,12 @@ use_partial_cmp!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_min;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (values, set_values) = create_signal(vec![1.0, 2.0, 3.0, f32::NAN, 4.0, 5.0]);
+    /// let (values, set_values) = signal(vec![1.0, 2.0, 3.0, f32::NAN, 4.0, 5.0]);
     /// let result = use_min::<Vec<f32>, _, _>(values); // Some(1.0)
     /// #
     /// # assert_eq!(result.get(), Some(1.0));
diff --git a/src/math/use_not.rs b/src/math/use_not.rs
index 8b534c7..c9b8c8b 100644
--- a/src/math/use_not.rs
+++ b/src/math/use_not.rs
@@ -1,4 +1,5 @@
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive `NOT` condition.
 ///
@@ -9,12 +10,12 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::math::use_not;
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (a, set_a) = create_signal(true);
+/// let (a, set_a) = signal(true);
 ///
 /// let not_a = use_not(a);
 /// #
diff --git a/src/math/use_or.rs b/src/math/use_or.rs
index 6c975b0..09a36e4 100644
--- a/src/math/use_or.rs
+++ b/src/math/use_or.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_binary_logic;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use paste::paste;
 
 use_binary_logic!(
@@ -12,13 +13,13 @@ use_binary_logic!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_or;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (a, set_a) = create_signal(true);
-    /// let (b, set_b) = create_signal(false);
+    /// let (a, set_a) = signal(true);
+    /// let (b, set_b) = signal(false);
     ///
     /// let a_or_b = use_or(a, b);
     /// #
diff --git a/src/math/use_round.rs b/src/math/use_round.rs
index a322ef4..bdf2c98 100644
--- a/src/math/use_round.rs
+++ b/src/math/use_round.rs
@@ -1,5 +1,6 @@
 use crate::math::shared::use_simple_math;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use num::Float;
 use paste::paste;
 
@@ -13,12 +14,12 @@ use_simple_math!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::math::use_round;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (value, set_value) = create_signal(45.95);
+    /// let (value, set_value) = signal(45.95);
     /// let result: Signal<f64> = use_round(value); // 46
     /// #
     /// # assert_eq!(result.get(), 46.0);
diff --git a/src/on_click_outside.rs b/src/on_click_outside.rs
index def8aa8..a313f00 100644
--- a/src/on_click_outside.rs
+++ b/src/on_click_outside.rs
@@ -3,7 +3,7 @@ use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
-    use leptos::*;
+    use leptos::prelude::*;
     use crate::utils::IS_IOS;
     use crate::{use_event_listener, use_event_listener_with_options, UseEventListenerOptions};
     use leptos::ev::{blur, click, pointerdown};
@@ -26,7 +26,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos::html::Div;
 /// # use leptos_use::on_click_outside;
@@ -54,7 +54,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// Use this to ignore clicks on certain elements.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos::html::Div;
 /// # use leptos_use::{on_click_outside_with_options, OnClickOutsideOptions};
diff --git a/src/signal_debounced.rs b/src/signal_debounced.rs
index 71da1d1..06fe8e3 100644
--- a/src/signal_debounced.rs
+++ b/src/signal_debounced.rs
@@ -1,6 +1,7 @@
 use crate::utils::signal_filtered;
 use crate::{use_debounce_fn_with_options, DebounceOptions};
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use paste::paste;
 
 signal_filtered!(
@@ -13,12 +14,12 @@ signal_filtered!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::signal_debounced;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (input, set_input) = create_signal("");
+    /// let (input, set_input) = signal("");
     /// let debounced: Signal<&'static str> = signal_debounced(input, 1000.0);
     /// #
     /// # view! { }
@@ -30,12 +31,12 @@ signal_filtered!(
     /// The usual debounce option `max_wait` is available.
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::{signal_debounced_with_options, DebounceOptions};
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (input, set_input) = create_signal("");
+    /// let (input, set_input) = signal("");
     /// let debounced: Signal<&'static str> = signal_debounced_with_options(
     ///     input,
     ///     1000.0,
diff --git a/src/signal_throttled.rs b/src/signal_throttled.rs
index 9040d10..0554b2c 100644
--- a/src/signal_throttled.rs
+++ b/src/signal_throttled.rs
@@ -1,6 +1,7 @@
 use crate::utils::signal_filtered;
 use crate::{use_throttle_fn_with_options, ThrottleOptions};
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use paste::paste;
 
 signal_filtered!(
@@ -13,12 +14,12 @@ signal_filtered!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::signal_throttled;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (input, set_input) = create_signal("");
+    /// let (input, set_input) = signal("");
     /// let throttled: Signal<&'static str> = signal_throttled(input, 1000.0);
     /// #
     /// # view! { }
@@ -30,12 +31,12 @@ signal_filtered!(
     /// The usual throttle options `leading` and `trailing` are available.
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::{signal_throttled_with_options, ThrottleOptions};
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (input, set_input) = create_signal("");
+    /// let (input, set_input) = signal("");
     /// let throttled: Signal<&'static str> = signal_throttled_with_options(
     ///     input,
     ///     1000.0,
diff --git a/src/storage/use_local_storage.rs b/src/storage/use_local_storage.rs
index 2e9d375..290facb 100644
--- a/src/storage/use_local_storage.rs
+++ b/src/storage/use_local_storage.rs
@@ -1,6 +1,7 @@
 use super::{use_storage_with_options, StorageType, UseStorageOptions};
 use crate::utils::StringCodec;
-use leptos::signal_prelude::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [LocalStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).
 ///
diff --git a/src/storage/use_session_storage.rs b/src/storage/use_session_storage.rs
index 55c963b..f030036 100644
--- a/src/storage/use_session_storage.rs
+++ b/src/storage/use_session_storage.rs
@@ -1,6 +1,7 @@
 use super::{use_storage_with_options, StorageType, UseStorageOptions};
 use crate::utils::StringCodec;
-use leptos::signal_prelude::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [SessionStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage).
 ///
diff --git a/src/storage/use_storage.rs b/src/storage/use_storage.rs
index 20f14d5..97df6a9 100644
--- a/src/storage/use_storage.rs
+++ b/src/storage/use_storage.rs
@@ -3,7 +3,8 @@ use crate::{
     utils::{FilterOptions, StringCodec},
 };
 use cfg_if::cfg_if;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::rc::Rc;
 use thiserror::Error;
 use wasm_bindgen::JsValue;
@@ -34,7 +35,7 @@ const INTERNAL_STORAGE_EVENT: &str = "leptos-use-storage";
 /// ## Example
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage};
 /// # use serde::{Deserialize, Serialize};
 /// # use leptos_use::utils::{FromToStringCodec, JsonCodec, ProstCodec};
diff --git a/src/sync_signal.rs b/src/sync_signal.rs
index e67ef3d..0595ffe 100644
--- a/src/sync_signal.rs
+++ b/src/sync_signal.rs
@@ -1,6 +1,6 @@
 use crate::core::UseRwSignal;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::rc::Rc;
 
 /// Two-way Signals synchronization.
@@ -17,13 +17,13 @@ use std::rc::Rc;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::sync_signal;
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (a, set_a) = create_signal(1);
-/// let (b, set_b) = create_signal(2);
+/// let (a, set_a) = signal(1);
+/// let (b, set_b) = signal(2);
 ///
 /// let stop = sync_signal((a, set_a), (b, set_b));
 ///
@@ -46,13 +46,13 @@ use std::rc::Rc;
 /// You can mix and match `RwSignal`s and `Signal`-`WriteSignal` pairs.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::sync_signal;
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (a, set_a) = create_signal(1);
-/// let (b, set_b) = create_signal(2);
+/// let (a, set_a) = signal(1);
+/// let (b, set_b) = signal(2);
 /// let c_rw = create_rw_signal(3);
 /// let d_rw = create_rw_signal(4);
 ///
@@ -70,13 +70,13 @@ use std::rc::Rc;
 /// You can synchronize a signal only from left to right or right to left.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{sync_signal_with_options, SyncSignalOptions, SyncDirection};
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (a, set_a) = create_signal(1);
-/// let (b, set_b) = create_signal(2);
+/// let (a, set_a) = signal(1);
+/// let (b, set_b) = signal(2);
 ///
 /// let stop = sync_signal_with_options(
 ///     (a, set_a),
@@ -101,13 +101,13 @@ use std::rc::Rc;
 /// You can optionally provide custom transforms between the two signals.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{sync_signal_with_options, SyncSignalOptions};
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (a, set_a) = create_signal(10);
-/// let (b, set_b) = create_signal(2);
+/// let (a, set_a) = signal(10);
+/// let (b, set_b) = signal(2);
 ///
 /// let stop = sync_signal_with_options(
 ///     (a, set_a),
diff --git a/src/use_active_element.rs b/src/use_active_element.rs
index 76da95a..eda5670 100644
--- a/src/use_active_element.rs
+++ b/src/use_active_element.rs
@@ -3,7 +3,8 @@
 use crate::{use_document, use_event_listener_with_options, use_window, UseEventListenerOptions};
 use leptos::ev::{blur, focus};
 use leptos::html::{AnyElement, ToHtmlElement};
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive `document.activeElement`
 ///
@@ -14,7 +15,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// use leptos_use::use_active_element;
 /// #
@@ -40,7 +41,7 @@ pub fn use_active_element() -> Signal<Option<HtmlElement<AnyElement>>> {
             .map(|el| el.to_leptos_element())
     };
 
-    let (active_element, set_active_element) = create_signal(get_active_element());
+    let (active_element, set_active_element) = signal(get_active_element());
 
     let listener_options = UseEventListenerOptions::default().capture(true);
 
diff --git a/src/use_breakpoints.rs b/src/use_breakpoints.rs
index 548da84..33016ca 100644
--- a/src/use_breakpoints.rs
+++ b/src/use_breakpoints.rs
@@ -1,6 +1,7 @@
 use crate::{use_media_query, use_window};
 use leptos::logging::error;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use paste::paste;
 use std::collections::HashMap;
 use std::fmt::Debug;
@@ -15,7 +16,7 @@ use std::hash::Hash;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_breakpoints, BreakpointsTailwind, breakpoints_tailwind};
 /// #
 /// # #[component]
@@ -49,7 +50,7 @@ use std::hash::Hash;
 ///
 /// ```
 /// # use std::collections::HashMap;
-/// use leptos::*;
+/// use leptos::prelude::*;
 /// # use leptos_use::use_breakpoints;
 /// #
 /// #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -86,7 +87,7 @@ use std::hash::Hash;
 /// For every reactive method there is also a non-reactive variant that is prefixed with `is_`
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_breakpoints, BreakpointsTailwind, breakpoints_tailwind};
 /// #
 /// # #[component]
diff --git a/src/use_broadcast_channel.rs b/src/use_broadcast_channel.rs
index f3d07d9..a0430bc 100644
--- a/src/use_broadcast_channel.rs
+++ b/src/use_broadcast_channel.rs
@@ -2,7 +2,9 @@ use crate::utils::StringCodec;
 use crate::{
     js, use_event_listener, use_event_listener_with_options, use_supported, UseEventListenerOptions,
 };
-use leptos::*;
+use leptos::ev::messageerror;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use thiserror::Error;
 use wasm_bindgen::JsValue;
 
@@ -21,7 +23,7 @@ use wasm_bindgen::JsValue;
 /// Messages are broadcasted via a message event fired at all BroadcastChannel objects listening to the channel.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_broadcast_channel, UseBroadcastChannelReturn};
 /// # use leptos_use::utils::FromToStringCodec;
 /// #
@@ -47,7 +49,7 @@ use wasm_bindgen::JsValue;
 /// Just like with [`use_storage`] you can use different codecs for encoding and decoding.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use serde::{Deserialize, Serialize};
 /// # use leptos_use::use_broadcast_channel;
 /// # use leptos_use::utils::JsonCodec;
@@ -77,10 +79,10 @@ where
 {
     let is_supported = use_supported(|| js!("BroadcastChannel" in &window()));
 
-    let (is_closed, set_closed) = create_signal(false);
-    let (channel, set_channel) = create_signal(None::<web_sys::BroadcastChannel>);
-    let (message, set_message) = create_signal(None::<T>);
-    let (error, set_error) = create_signal(None::<UseBroadcastChannelError<C::Error>>);
+    let (is_closed, set_closed) = signal(false);
+    let (channel, set_channel) = signal(None::<web_sys::BroadcastChannel>);
+    let (message, set_message) = signal(None::<T>);
+    let (error, set_error) = signal(None::<UseBroadcastChannelError<C::Error>>);
 
     let codec = C::default();
 
@@ -122,7 +124,7 @@ where
         if let Some(channel) = channel_val {
             let _ = use_event_listener_with_options(
                 channel.clone(),
-                ev::message,
+                leptos::ev::message,
                 move |event| {
                     if let Some(data) = event.data().as_string() {
                         match codec.decode(data) {
@@ -140,14 +142,14 @@ where
 
             let _ = use_event_listener_with_options(
                 channel.clone(),
-                ev::messageerror,
+                messageerror,
                 move |event| {
                     set_error.set(Some(UseBroadcastChannelError::MessageEvent(event)));
                 },
                 UseEventListenerOptions::default().passive(true),
             );
 
-            let _ = use_event_listener(channel, ev::close, move |_| set_closed.set(true));
+            let _ = use_event_listener(channel, leptos::ev::close, move |_| set_closed.set(true));
         }
     }
 
diff --git a/src/use_clipboard.rs b/src/use_clipboard.rs
index 78c7eb9..f812cd9 100644
--- a/src/use_clipboard.rs
+++ b/src/use_clipboard.rs
@@ -1,7 +1,8 @@
 use crate::{js, js_fut, use_event_listener, use_supported, UseTimeoutFnReturn};
 use default_struct_builder::DefaultBuilder;
 use leptos::ev::{copy, cut};
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API).
 /// Provides the ability to respond to clipboard commands (cut, copy, and paste)
@@ -20,7 +21,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_clipboard, UseClipboardReturn};
 /// #
 /// # #[component]
@@ -66,8 +67,8 @@ pub fn use_clipboard_with_options(
             .navigator())
     });
 
-    let (text, set_text) = create_signal(None);
-    let (copied, set_copied) = create_signal(false);
+    let (text, set_text) = signal(None);
+    let (copied, set_copied) = signal(false);
 
     let UseTimeoutFnReturn { start, .. } = crate::use_timeout_fn::use_timeout_fn(
         move |_: ()| {
diff --git a/src/use_color_mode.rs b/src/use_color_mode.rs
index 7acd1e1..3fb737f 100644
--- a/src/use_color_mode.rs
+++ b/src/use_color_mode.rs
@@ -5,7 +5,8 @@ use crate::storage::{use_storage_with_options, UseStorageOptions};
 use crate::utils::FromToStringCodec;
 use crate::{sync_signal_with_options, use_cookie, use_preferred_dark, SyncSignalOptions};
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::fmt::{Display, Formatter};
 use std::marker::PhantomData;
 use std::rc::Rc;
@@ -21,7 +22,7 @@ use wasm_bindgen::JsCast;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_color_mode, UseColorModeReturn};
 /// #
 /// # #[component]
@@ -44,7 +45,7 @@ use wasm_bindgen::JsCast;
 /// storage (or your custom storage). You can pass `ColorMode::Auto` to set back to auto mode.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{ColorMode, use_color_mode, UseColorModeReturn};
 /// #
 /// # #[component]
@@ -64,7 +65,7 @@ use wasm_bindgen::JsCast;
 /// ## Options
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_color_mode_with_options, UseColorModeOptions, UseColorModeReturn};
 /// #
 /// # #[component]
@@ -90,7 +91,7 @@ use wasm_bindgen::JsCast;
 /// > Note: To work with SSR you have to add the `axum` or `actix` feature as described in [`use_cookie`].
 ///
 /// ```rust
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_meta::*;
 /// # use leptos_use::{use_color_mode_with_options, UseColorModeOptions, UseColorModeReturn};
 /// #
@@ -323,7 +324,7 @@ fn get_cookie_signal(
     if cookie_enabled {
         use_cookie::<ColorMode, FromToStringCodec>(cookie_name)
     } else {
-        let (value, set_value) = create_signal(None);
+        let (value, set_value) = signal(None);
         (value.into(), set_value)
     }
 }
diff --git a/src/use_cookie.rs b/src/use_cookie.rs
index bb6cbe1..b6e6dc0 100644
--- a/src/use_cookie.rs
+++ b/src/use_cookie.rs
@@ -5,7 +5,8 @@ use crate::utils::StringCodec;
 use cookie::time::{Duration, OffsetDateTime};
 use cookie::{Cookie, CookieJar, SameSite};
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::rc::Rc;
 
 /// SSR-friendly and reactive cookie access.
@@ -27,7 +28,7 @@ use std::rc::Rc;
 /// Whenever we update the `counter` variable, the cookie will be updated accordingly.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_cookie;
 /// # use leptos_use::utils::FromToStringCodec;
 /// # use rand::prelude::*;
@@ -63,7 +64,7 @@ use std::rc::Rc;
 ///
 /// ```
 /// # use cookie::SameSite;
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_cookie_with_options, UseCookieOptions};
 /// # use leptos_use::utils::FromToStringCodec;
 /// #
@@ -97,7 +98,7 @@ use std::rc::Rc;
 ///
 /// ```
 /// # use cookie::Cookie;
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use serde::{Deserialize, Serialize};
 /// # use leptos_use::{use_cookie_with_options, UseCookieOptions};
 /// # use leptos_use::utils::JsonCodec;
@@ -177,7 +178,7 @@ where
         false
     };
 
-    let (cookie, set_cookie) = create_signal(None::<T>);
+    let (cookie, set_cookie) = signal(None::<T>);
 
     let jar = store_value(CookieJar::new());
     let codec = C::default();
@@ -204,7 +205,7 @@ where
 
         handle_expiration(delay, set_cookie);
     } else {
-        logging::debug_warn!(
+        debug_warn!(
             "not setting cookie '{}' because it has already expired",
             cookie_name
         );
@@ -524,7 +525,7 @@ impl<T, Err> Default for UseCookieOptions<T, Err> {
                         not(feature = "spin")
                     ))]
                     {
-                        leptos::logging::warn!("If you're using use_cookie without the feature `axum`, `actix` or `spin` enabled, you should provide the option `ssr_cookies_header_getter`");
+                        leptos::warn!("If you're using use_cookie without the feature `axum`, `actix` or `spin` enabled, you should provide the option `ssr_cookies_header_getter`");
                         None
                     }
 
@@ -580,7 +581,7 @@ impl<T, Err> Default for UseCookieOptions<T, Err> {
                     ))]
                     {
                         let _ = cookie;
-                        leptos::logging::warn!("If you're using use_cookie without the feature `axum`, `actix` or `spin` enabled, you should provide the option `ssr_set_cookie`");
+                        leptos::warn!("If you're using use_cookie without the feature `axum`, `actix` or `spin` enabled, you should provide the option `ssr_set_cookie`");
                     }
 
                     #[cfg(any(feature = "axum", feature = "actix"))]
@@ -605,7 +606,7 @@ impl<T, Err> Default for UseCookieOptions<T, Err> {
                 let _ = cookie;
             }),
             on_error: Rc::new(|_| {
-                logging::error!("cookie (de-/)serialization error");
+                error!("cookie (de-/)serialization error");
             }),
         }
     }
@@ -812,7 +813,7 @@ fn build_cookie_from_options(
                 cookie = cookie.expires(expires);
             }
             Err(err) => {
-                logging::debug_warn!("failed to set cookie expiration: {:?}", err);
+                debug_warn!("failed to set cookie expiration: {:?}", err);
             }
         }
     }
diff --git a/src/use_css_var.rs b/src/use_css_var.rs
index 0b0a803..0c5f87b 100644
--- a/src/use_css_var.rs
+++ b/src/use_css_var.rs
@@ -7,7 +7,7 @@ use crate::{
 };
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 use std::time::Duration;
 use wasm_bindgen::JsCast;
@@ -21,7 +21,7 @@ use wasm_bindgen::JsCast;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_css_var;
 /// #
 /// # #[component]
@@ -37,12 +37,12 @@ use wasm_bindgen::JsCast;
 /// The variable name itself can be a `Signal`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_css_var;
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (key, set_key) = create_signal("--color".to_string());
+/// let (key, set_key) = signal("--color".to_string());
 /// let (color, set_color) = use_css_var(key);
 /// #
 /// # view! { }
@@ -53,7 +53,7 @@ use wasm_bindgen::JsCast;
 /// the variable is not set yet. The option to listen for changes to the variable is also available.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_css_var_with_options, UseCssVarOptions};
 /// #
@@ -77,7 +77,7 @@ use wasm_bindgen::JsCast;
 ///
 /// ## Server-Side Rendering
 ///
-/// On the server this simply returns `create_signal(options.initial_value)`.
+/// On the server this simply returns `signal(options.initial_value)`.
 pub fn use_css_var(
     prop: impl Into<MaybeSignal<String>>,
 ) -> (ReadSignal<String>, WriteSignal<String>) {
@@ -102,7 +102,7 @@ where
         ..
     } = options;
 
-    let (variable, set_variable) = create_signal(initial_value.clone());
+    let (variable, set_variable) = signal(initial_value.clone());
 
     cfg_if! { if #[cfg(not(feature = "ssr"))] {
         let el_signal = target.into();
diff --git a/src/use_cycle_list.rs b/src/use_cycle_list.rs
index 6fa7c82..a62d735 100644
--- a/src/use_cycle_list.rs
+++ b/src/use_cycle_list.rs
@@ -1,6 +1,7 @@
 use crate::core::MaybeRwSignal;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Cycle through a list of items.
 ///
@@ -11,7 +12,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// use leptos_use::{use_cycle_list, UseCycleListReturn};
 /// #
diff --git a/src/use_debounce_fn.rs b/src/use_debounce_fn.rs
index 4bd8ec6..ceabb4d 100644
--- a/src/use_debounce_fn.rs
+++ b/src/use_debounce_fn.rs
@@ -15,7 +15,7 @@ use std::rc::Rc;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::resize;
 /// # use leptos_use::use_debounce_fn;
 /// #
@@ -39,7 +39,7 @@ use std::rc::Rc;
 /// [lodash debounce](https://lodash.com/docs/#debounce).
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::resize;
 /// # use leptos_use::use_debounce_fn_with_options;
 /// # use leptos_use::utils::DebounceOptions;
diff --git a/src/use_device_orientation.rs b/src/use_device_orientation.rs
index 7836a17..343a3eb 100644
--- a/src/use_device_orientation.rs
+++ b/src/use_device_orientation.rs
@@ -1,5 +1,6 @@
 use cfg_if::cfg_if;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [DeviceOrientationEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent).
 /// Provide web developers with information from the physical orientation of
@@ -12,7 +13,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_device_orientation, UseDeviceOrientationReturn};
 /// #
 /// # #[component]
@@ -45,10 +46,10 @@ pub fn use_device_orientation() -> UseDeviceOrientationReturn {
         use leptos::ev::deviceorientation;
 
         let is_supported = use_supported(|| js!("DeviceOrientationEvent" in &window()));
-        let (absolute, set_absolute) = create_signal(false);
-        let (alpha, set_alpha) = create_signal(None);
-        let (beta, set_beta) = create_signal(None);
-        let (gamma, set_gamma) = create_signal(None);
+        let (absolute, set_absolute) = signal(false);
+        let (alpha, set_alpha) = signal(None);
+        let (beta, set_beta) = signal(None);
+        let (gamma, set_gamma) = signal(None);
 
         if is_supported.get_untracked() {
             let cleanup = use_event_listener_with_options(
diff --git a/src/use_device_pixel_ratio.rs b/src/use_device_pixel_ratio.rs
index e98b44c..41bc448 100644
--- a/src/use_device_pixel_ratio.rs
+++ b/src/use_device_pixel_ratio.rs
@@ -1,5 +1,6 @@
 use cfg_if::cfg_if;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [`window.devicePixelRatio`](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio)
 ///
@@ -14,7 +15,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_device_pixel_ratio;
 /// #
 /// # #[component]
@@ -36,7 +37,7 @@ pub fn use_device_pixel_ratio() -> Signal<f64> {
         use leptos::ev::change;
 
         let initial_pixel_ratio = window().device_pixel_ratio();
-        let (pixel_ratio, set_pixel_ratio) = create_signal(initial_pixel_ratio);
+        let (pixel_ratio, set_pixel_ratio) = signal(initial_pixel_ratio);
 
         create_effect(move |_| {
             let media = window().match_media(
diff --git a/src/use_display_media.rs b/src/use_display_media.rs
index 8174fba..05f3f7e 100644
--- a/src/use_display_media.rs
+++ b/src/use_display_media.rs
@@ -1,7 +1,8 @@
 use crate::core::MaybeRwSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use wasm_bindgen::{JsCast, JsValue};
 
 /// Reactive [`mediaDevices.getDisplayMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia) streaming.
@@ -13,7 +14,7 @@ use wasm_bindgen::{JsCast, JsValue};
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_display_media, UseDisplayMediaReturn};
 /// #
 /// # #[component]
@@ -54,7 +55,7 @@ pub fn use_display_media_with_options(
 
     let (enabled, set_enabled) = enabled.into_signal();
 
-    let (stream, set_stream) = create_signal(None::<Result<web_sys::MediaStream, JsValue>>);
+    let (stream, set_stream) = signal(None::<Result<web_sys::MediaStream, JsValue>>);
 
     let _start = move || async move {
         cfg_if! { if #[cfg(not(feature = "ssr"))] {
diff --git a/src/use_document.rs b/src/use_document.rs
index dfbf8b7..ac1d379 100644
--- a/src/use_document.rs
+++ b/src/use_document.rs
@@ -3,7 +3,7 @@ use std::ops::Deref;
 
 use crate::core::impl_ssr_safe_method;
 #[cfg(not(feature = "ssr"))]
-use leptos::*;
+use leptos::prelude::*;
 use wasm_bindgen::JsValue;
 use web_sys::NodeList;
 
@@ -16,7 +16,7 @@ use web_sys::NodeList;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_document;
 /// #
 /// # #[component]
diff --git a/src/use_document_visibility.rs b/src/use_document_visibility.rs
index fe8b328..675a430 100644
--- a/src/use_document_visibility.rs
+++ b/src/use_document_visibility.rs
@@ -3,7 +3,8 @@
 use crate::use_event_listener;
 use cfg_if::cfg_if;
 use leptos::ev::visibilitychange;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactively track `document.visibilityState`
 ///
@@ -14,7 +15,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_document_visibility;
 /// #
 /// # #[component]
@@ -35,7 +36,7 @@ pub fn use_document_visibility() -> Signal<web_sys::VisibilityState> {
         let inital_visibility = document().visibility_state();
     }}
 
-    let (visibility, set_visibility) = create_signal(inital_visibility);
+    let (visibility, set_visibility) = signal(inital_visibility);
 
     cfg_if! { if #[cfg(not(feature = "ssr"))] {
         let _ = use_event_listener(document(), visibilitychange, move |_| {
diff --git a/src/use_draggable.rs b/src/use_draggable.rs
index 899591a..b58daae 100644
--- a/src/use_draggable.rs
+++ b/src/use_draggable.rs
@@ -2,7 +2,9 @@ use crate::core::{ElementMaybeSignal, MaybeRwSignal, PointerType, Position};
 use crate::{use_event_listener_with_options, use_window, UseEventListenerOptions, UseWindow};
 use default_struct_builder::DefaultBuilder;
 use leptos::ev::{pointerdown, pointermove, pointerup};
-use leptos::*;
+use leptos::prelude::diagnostics::SpecialNonReactiveZone;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 use std::rc::Rc;
 use wasm_bindgen::JsCast;
@@ -17,7 +19,7 @@ use web_sys::PointerEvent;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_draggable_with_options, UseDraggableOptions, UseDraggableReturn};
 /// # use leptos_use::core::Position;
@@ -98,7 +100,7 @@ where
     };
 
     let (position, set_position) = initial_value.into_signal();
-    let (start_position, set_start_position) = create_signal(None::<Position>);
+    let (start_position, set_start_position) = signal(None::<Position>);
 
     let filter_event = move |event: &PointerEvent| {
         let ty = event.pointer_type();
diff --git a/src/use_drop_zone.rs b/src/use_drop_zone.rs
index 7894ded..844a475 100644
--- a/src/use_drop_zone.rs
+++ b/src/use_drop_zone.rs
@@ -1,7 +1,8 @@
 use crate::core::ElementMaybeSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::fmt::{Debug, Formatter};
 use std::rc::Rc;
 
@@ -19,7 +20,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_drop_zone_with_options, UseDropZoneOptions, UseDropZoneReturn};
 /// #
@@ -71,8 +72,8 @@ where
     El: Into<ElementMaybeSignal<T, web_sys::EventTarget>>,
     T: Into<web_sys::EventTarget> + Clone + 'static,
 {
-    let (is_over_drop_zone, set_over_drop_zone) = create_signal(false);
-    let (files, set_files) = create_signal(Vec::<web_sys::File>::new());
+    let (is_over_drop_zone, set_over_drop_zone) = signal(false);
+    let (files, set_files) = signal(Vec::<web_sys::File>::new());
 
     #[cfg(not(feature = "ssr"))]
     {
diff --git a/src/use_element_bounding.rs b/src/use_element_bounding.rs
index 361447f..74b495f 100644
--- a/src/use_element_bounding.rs
+++ b/src/use_element_bounding.rs
@@ -1,7 +1,8 @@
 use crate::core::ElementMaybeSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [bounding box](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect) of an HTML element
 ///
@@ -12,7 +13,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_element_bounding, UseElementBoundingReturn};
 /// #
@@ -46,14 +47,14 @@ where
     El: Into<ElementMaybeSignal<T, web_sys::Element>> + Clone,
     T: Into<web_sys::Element> + Clone + 'static,
 {
-    let (height, set_height) = create_signal(0.0);
-    let (width, set_width) = create_signal(0.0);
-    let (left, set_left) = create_signal(0.0);
-    let (right, set_right) = create_signal(0.0);
-    let (top, set_top) = create_signal(0.0);
-    let (bottom, set_bottom) = create_signal(0.0);
-    let (x, set_x) = create_signal(0.0);
-    let (y, set_y) = create_signal(0.0);
+    let (height, set_height) = signal(0.0);
+    let (width, set_width) = signal(0.0);
+    let (left, set_left) = signal(0.0);
+    let (right, set_right) = signal(0.0);
+    let (top, set_top) = signal(0.0);
+    let (bottom, set_bottom) = signal(0.0);
+    let (x, set_x) = signal(0.0);
+    let (y, set_y) = signal(0.0);
 
     cfg_if! { if #[cfg(feature = "ssr")] {
         let _ = target;
diff --git a/src/use_element_hover.rs b/src/use_element_hover.rs
index 4b3b412..0054ca7 100644
--- a/src/use_element_hover.rs
+++ b/src/use_element_hover.rs
@@ -4,7 +4,8 @@ use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
 use leptos::ev::{mouseenter, mouseleave};
 use leptos::leptos_dom::helpers::TimeoutHandle;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
     use std::time::Duration;
@@ -19,7 +20,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Button;
 /// # use leptos_use::use_element_hover;
 /// #
@@ -63,7 +64,7 @@ where
         delay_leave,
     } = options;
 
-    let (is_hovered, set_hovered) = create_signal(false);
+    let (is_hovered, set_hovered) = signal(false);
 
     let mut timer: Option<TimeoutHandle> = None;
 
diff --git a/src/use_element_size.rs b/src/use_element_size.rs
index 8b178bc..5bdfb86 100644
--- a/src/use_element_size.rs
+++ b/src/use_element_size.rs
@@ -1,7 +1,8 @@
 use crate::core::{ElementMaybeSignal, Size};
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
     use crate::{use_resize_observer_with_options, UseResizeObserverOptions};
@@ -66,8 +67,8 @@ where
 {
     let UseElementSizeOptions { box_, initial_size } = options;
 
-    let (width, set_width) = create_signal(initial_size.width);
-    let (height, set_height) = create_signal(initial_size.height);
+    let (width, set_width) = signal(initial_size.width);
+    let (height, set_height) = signal(initial_size.height);
 
     #[cfg(not(feature = "ssr"))]
     {
diff --git a/src/use_element_visibility.rs b/src/use_element_visibility.rs
index 23a9543..e6abaaa 100644
--- a/src/use_element_visibility.rs
+++ b/src/use_element_visibility.rs
@@ -1,11 +1,12 @@
 use crate::core::ElementMaybeSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 
 #[cfg(not(feature = "ssr"))]
 use crate::{use_intersection_observer_with_options, UseIntersectionObserverOptions};
+use leptos::prelude::wrappers::read::Signal;
 
 /// Tracks the visibility of an element within the viewport.
 ///
@@ -16,7 +17,7 @@ use crate::{use_intersection_observer_with_options, UseIntersectionObserverOptio
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::use_element_visibility;
 /// #
@@ -64,7 +65,7 @@ where
     ContainerEl: Into<ElementMaybeSignal<ContainerT, web_sys::Element>>,
     ContainerT: Into<web_sys::Element> + Clone + 'static,
 {
-    let (is_visible, set_visible) = create_signal(false);
+    let (is_visible, set_visible) = signal(false);
 
     cfg_if! { if #[cfg(not(feature = "ssr"))] {
         use_intersection_observer_with_options(
diff --git a/src/use_event_listener.rs b/src/use_event_listener.rs
index 68ff33d..f22cb38 100644
--- a/src/use_event_listener.rs
+++ b/src/use_event_listener.rs
@@ -5,7 +5,7 @@ use leptos::ev::EventDescriptor;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
     use crate::{watch_with_options, WatchOptions};
-    use leptos::*;
+    use leptos::prelude::*;
     use std::cell::RefCell;
     use std::rc::Rc;
     use wasm_bindgen::closure::Closure;
@@ -19,7 +19,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::visibilitychange;
 /// # use leptos::logging::log;
 /// # use leptos_use::{use_document, use_event_listener};
@@ -37,7 +37,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// the new one when you change the target.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::click;
 /// # use leptos::logging::log;
 /// # use leptos_use::use_event_listener;
@@ -50,7 +50,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 ///     log!("click from element {:?}", event_target::<web_sys::HtmlDivElement>(&evt));
 /// });
 ///
-/// let (cond, set_cond) = create_signal(true);
+/// let (cond, set_cond) = signal(true);
 ///
 /// view! {
 ///     <Show
@@ -66,7 +66,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// You can also call the returned to unregister the listener.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::keydown;
 /// # use leptos::logging::log;
 /// # use web_sys::KeyboardEvent;
diff --git a/src/use_event_source.rs b/src/use_event_source.rs
index 5227cac..8305887 100644
--- a/src/use_event_source.rs
+++ b/src/use_event_source.rs
@@ -2,7 +2,9 @@ use crate::core::ConnectionReadyState;
 use crate::utils::StringCodec;
 use crate::{js, use_event_listener};
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::diagnostics::SpecialNonReactiveZone;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::cell::Cell;
 use std::marker::PhantomData;
 use std::rc::Rc;
@@ -24,7 +26,7 @@ use thiserror::Error;
 /// > To use [`ProstCodec`], add the feature `"prost"`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_event_source, UseEventSourceReturn, utils::JsonCodec};
 /// # use serde::{Deserialize, Serialize};
 /// #
@@ -53,7 +55,7 @@ use thiserror::Error;
 /// You can define named events when using `use_event_source_with_options`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_event_source_with_options, UseEventSourceReturn, UseEventSourceOptions, utils::FromToStringCodec};
 /// #
 /// # #[component]
@@ -84,7 +86,7 @@ use thiserror::Error;
 /// interval between them by setting `reconnect_interval`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_event_source_with_options, UseEventSourceReturn, UseEventSourceOptions, utils::FromToStringCodec};
 /// #
 /// # #[component]
@@ -140,11 +142,11 @@ where
 
     let url = url.to_owned();
 
-    let (event, set_event) = create_signal(None::<web_sys::Event>);
-    let (data, set_data) = create_signal(None::<T>);
-    let (ready_state, set_ready_state) = create_signal(ConnectionReadyState::Closed);
-    let (event_source, set_event_source) = create_signal(None::<web_sys::EventSource>);
-    let (error, set_error) = create_signal(None::<UseEventSourceError<C::Error>>);
+    let (event, set_event) = signal(None::<web_sys::Event>);
+    let (data, set_data) = signal(None::<T>);
+    let (ready_state, set_ready_state) = signal(ConnectionReadyState::Closed);
+    let (event_source, set_event_source) = signal(None::<web_sys::EventSource>);
+    let (error, set_error) = signal(None::<UseEventSourceError<C::Error>>);
 
     let explicitly_closed = Rc::new(Cell::new(false));
     let retried = Rc::new(Cell::new(0));
@@ -257,7 +259,7 @@ where
 
                 let _ = use_event_listener(
                     es.clone(),
-                    ev::Custom::<ev::Event>::new(event_name),
+                    leptos::ev::Custom::<ev::Event>::new(event_name),
                     move |e| {
                         set_event.set(Some(e.clone()));
                         let data_string = js!(e["data"]).ok().and_then(|d| d.as_string());
diff --git a/src/use_favicon.rs b/src/use_favicon.rs
index f970f44..5c1c791 100644
--- a/src/use_favicon.rs
+++ b/src/use_favicon.rs
@@ -3,7 +3,8 @@
 use crate::core::MaybeRwSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use wasm_bindgen::JsCast;
 
 /// Reactive favicon.
@@ -15,7 +16,7 @@ use wasm_bindgen::JsCast;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_favicon;
 /// #
 /// # #[component]
@@ -35,7 +36,7 @@ use wasm_bindgen::JsCast;
 /// reflected in your favicon automatically.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_favicon_with_options, UseFaviconOptions, use_preferred_dark};
 /// #
 /// # #[component]
diff --git a/src/use_geolocation.rs b/src/use_geolocation.rs
index 2aeda83..0e583c1 100644
--- a/src/use_geolocation.rs
+++ b/src/use_geolocation.rs
@@ -1,6 +1,7 @@
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 /// Reactive [Geolocation API](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API).
 /// It allows the user to provide their location to web applications if they so desire. For privacy reasons,
@@ -13,7 +14,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_geolocation, UseGeolocationReturn};
 /// #
 /// # #[component]
@@ -41,9 +42,9 @@ pub fn use_geolocation() -> UseGeolocationReturn<impl Fn() + Clone, impl Fn() +
 pub fn use_geolocation_with_options(
     options: UseGeolocationOptions,
 ) -> UseGeolocationReturn<impl Fn() + Clone, impl Fn() + Clone> {
-    let (located_at, set_located_at) = create_signal(None::<f64>);
-    let (error, set_error) = create_signal(None::<web_sys::PositionError>);
-    let (coords, set_coords) = create_signal(None::<web_sys::Coordinates>);
+    let (located_at, set_located_at) = signal(None::<f64>);
+    let (error, set_error) = signal(None::<web_sys::PositionError>);
+    let (coords, set_coords) = signal(None::<web_sys::Coordinates>);
 
     cfg_if! { if #[cfg(feature = "ssr")] {
         let resume = || ();
diff --git a/src/use_idle.rs b/src/use_idle.rs
index 3f0a20e..9ecad2f 100644
--- a/src/use_idle.rs
+++ b/src/use_idle.rs
@@ -3,7 +3,8 @@ use crate::filter_builder_methods;
 use crate::utils::{DebounceOptions, FilterOptions, ThrottleOptions};
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 
 ///
 ///
@@ -14,7 +15,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{use_idle, UseIdleReturn};
 /// #
@@ -34,7 +35,7 @@ use leptos::*;
 ///
 /// ```
 /// # use std::time::Duration;
-/// use leptos::*;
+/// use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{use_idle, UseIdleReturn};
 /// #
@@ -77,8 +78,8 @@ pub fn use_idle_with_options(
         filter,
     } = options;
 
-    let (idle, set_idle) = create_signal(initial_state);
-    let (last_active, set_last_active) = create_signal(now());
+    let (idle, set_idle) = signal(initial_state);
+    let (last_active, set_last_active) = signal(now());
 
     cfg_if! { if #[cfg(feature = "ssr")] {
         let reset = || ();
diff --git a/src/use_infinite_scroll.rs b/src/use_infinite_scroll.rs
index ce08d46..8d6bd0c 100644
--- a/src/use_infinite_scroll.rs
+++ b/src/use_infinite_scroll.rs
@@ -6,7 +6,9 @@ use crate::{
 use default_struct_builder::DefaultBuilder;
 use futures_util::join;
 use gloo_timers::future::sleep;
-use leptos::*;
+use leptos::prelude::diagnostics::SpecialNonReactiveZone;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::future::Future;
 use std::rc::Rc;
 use std::time::Duration;
@@ -21,7 +23,7 @@ use wasm_bindgen::JsCast;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// use leptos::html::Div;
 /// # use leptos_use::{use_infinite_scroll_with_options, UseInfiniteScrollOptions};
 /// #
@@ -29,7 +31,7 @@ use wasm_bindgen::JsCast;
 /// # fn Demo() -> impl IntoView {
 /// let el = create_node_ref::<Div>();
 ///
-/// let (data, set_data) = create_signal(vec![1, 2, 3, 4, 5, 6]);
+/// let (data, set_data) = signal(vec![1, 2, 3, 4, 5, 6]);
 ///
 /// let _ = use_infinite_scroll_with_options(
 ///     el,
@@ -105,7 +107,7 @@ where
         directions,
     };
 
-    let (is_loading, set_loading) = create_signal(false);
+    let (is_loading, set_loading) = signal(false);
 
     let el = el.into();
     let observed_element = Signal::derive(move || {
diff --git a/src/use_intersection_observer.rs b/src/use_intersection_observer.rs
index 6cc3849..d7ad8ab 100644
--- a/src/use_intersection_observer.rs
+++ b/src/use_intersection_observer.rs
@@ -1,7 +1,7 @@
 use crate::core::{ElementMaybeSignal, ElementsMaybeSignal};
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
@@ -22,14 +22,14 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::use_intersection_observer;
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
 /// let el = create_node_ref::<Div>();
-/// let (is_visible, set_visible) = create_signal(false);
+/// let (is_visible, set_visible) = signal(false);
 ///
 /// use_intersection_observer(
 ///     el,
@@ -91,7 +91,7 @@ where
         ..
     } = options;
 
-    let (is_active, set_active) = create_signal(immediate);
+    let (is_active, set_active) = signal(immediate);
 
     cfg_if! { if #[cfg(feature = "ssr")] {
         let pause = || {};
diff --git a/src/use_interval.rs b/src/use_interval.rs
index eb39926..e237d42 100644
--- a/src/use_interval.rs
+++ b/src/use_interval.rs
@@ -3,7 +3,7 @@ use crate::{use_interval_fn_with_options, UseIntervalFnOptions};
 use default_struct_builder::DefaultBuilder;
 use std::rc::Rc;
 
-use leptos::*;
+use leptos::prelude::*;
 
 /// Reactive counter increases on every interval.
 ///
@@ -14,7 +14,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_interval, UseIntervalReturn};
 /// #
 /// # #[component]
@@ -55,7 +55,7 @@ where
         callback,
     } = options;
 
-    let (counter, set_counter) = create_signal(0u64);
+    let (counter, set_counter) = signal(0u64);
 
     let update = move || set_counter.update(|count| *count += 1);
     let reset = move || set_counter.set(0);
diff --git a/src/use_interval_fn.rs b/src/use_interval_fn.rs
index 6d86007..7efd3e7 100644
--- a/src/use_interval_fn.rs
+++ b/src/use_interval_fn.rs
@@ -3,7 +3,7 @@
 use crate::utils::Pausable;
 use default_struct_builder::DefaultBuilder;
 use leptos::leptos_dom::helpers::IntervalHandle;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::Cell;
 use std::rc::Rc;
 use std::time::Duration;
@@ -17,7 +17,7 @@ use std::time::Duration;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_interval_fn;
 /// # use leptos_use::utils::Pausable;
 /// #
@@ -64,7 +64,7 @@ where
 
     let timer: Rc<Cell<Option<IntervalHandle>>> = Rc::new(Cell::new(None));
 
-    let (is_active, set_active) = create_signal(false);
+    let (is_active, set_active) = signal(false);
 
     let clean = {
         let timer = Rc::clone(&timer);
diff --git a/src/use_intl_number_format.rs b/src/use_intl_number_format.rs
index d7ad291..c2ca572 100644
--- a/src/use_intl_number_format.rs
+++ b/src/use_intl_number_format.rs
@@ -4,7 +4,7 @@ use crate::js;
 use crate::utils::js_value_from_to_string;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::fmt::Display;
 use wasm_bindgen::{JsCast, JsValue};
 
@@ -19,12 +19,12 @@ use wasm_bindgen::{JsCast, JsValue};
 /// In basic use without specifying a locale, a formatted string in the default locale and with default options is returned.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_intl_number_format, UseIntlNumberFormatOptions};
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (number, set_number) = create_signal(3500);
+/// let (number, set_number) = signal(3500);
 ///
 /// let number_format = use_intl_number_format(UseIntlNumberFormatOptions::default());
 ///
@@ -41,7 +41,7 @@ use wasm_bindgen::{JsCast, JsValue};
 /// (and possibly some fallback languages) using the `locales` argument:
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_intl_number_format, UseIntlNumberFormatOptions};
 /// #
 /// # #[component]
@@ -89,7 +89,7 @@ use wasm_bindgen::{JsCast, JsValue};
 /// The results can be customized in multiple ways.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{NumberStyle, UnitDisplay, use_intl_number_format, UseIntlNumberFormatOptions};
 /// #
 /// # #[component]
@@ -599,7 +599,7 @@ pub struct UseIntlNumberFormatOptions {
     /// For example, if `maximum_fraction_digits` is 2 and `rounding_increment` is 5, then the number is rounded to the nearest 0.05 ("nickel rounding").
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::{use_intl_number_format, UseIntlNumberFormatOptions, NumberStyle};
     /// #
     /// # #[component]
@@ -804,7 +804,7 @@ impl UseIntlNumberFormatReturn {
     /// Formats a range of numbers according to the locale and formatting options of this `Intl.NumberFormat` object.
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::{NumberStyle, use_intl_number_format, UseIntlNumberFormatOptions};
     /// #
     /// # #[component]
@@ -828,7 +828,7 @@ impl UseIntlNumberFormatReturn {
     /// ```
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::{NumberStyle, use_intl_number_format, UseIntlNumberFormatOptions};
     /// #
     /// # #[component]
diff --git a/src/use_media_query.rs b/src/use_media_query.rs
index b9c5be8..49ae039 100644
--- a/src/use_media_query.rs
+++ b/src/use_media_query.rs
@@ -3,7 +3,7 @@
 use crate::use_event_listener;
 use cfg_if::cfg_if;
 use leptos::ev::change;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::RefCell;
 use std::rc::Rc;
 
@@ -16,7 +16,7 @@ use std::rc::Rc;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_media_query;
 /// #
 /// # #[component]
@@ -41,7 +41,7 @@ use std::rc::Rc;
 pub fn use_media_query(query: impl Into<MaybeSignal<String>>) -> Signal<bool> {
     let query = query.into();
 
-    let (matches, set_matches) = create_signal(false);
+    let (matches, set_matches) = signal(false);
 
     cfg_if! { if #[cfg(not(feature = "ssr"))] {
         let media_query: Rc<RefCell<Option<web_sys::MediaQueryList>>> = Rc::new(RefCell::new(None));
diff --git a/src/use_mouse.rs b/src/use_mouse.rs
index 74f943f..4fadc9e 100644
--- a/src/use_mouse.rs
+++ b/src/use_mouse.rs
@@ -5,7 +5,7 @@ use crate::{use_event_listener_with_options, use_window, UseEventListenerOptions
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
 use leptos::ev::{dragover, mousemove, touchend, touchmove, touchstart};
-use leptos::*;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 use wasm_bindgen::{JsCast, JsValue};
 
@@ -18,7 +18,7 @@ use wasm_bindgen::{JsCast, JsValue};
 /// ## Basic Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_mouse, UseMouseReturn};
 /// #
 /// # #[component]
@@ -34,7 +34,7 @@ use wasm_bindgen::{JsCast, JsValue};
 /// The `dragover` event is used to track mouse position while dragging.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_mouse_with_options, UseMouseOptions, UseMouseReturn};
 /// #
 /// # #[component]
@@ -53,7 +53,7 @@ use wasm_bindgen::{JsCast, JsValue};
 /// It's also possible to provide a custom extractor to get the position from the events.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// use web_sys::MouseEvent;
 /// use leptos_use::{use_mouse_with_options, UseMouseOptions, UseMouseReturn, UseMouseEventExtractor, UseMouseCoordType};
@@ -98,9 +98,9 @@ where
     T: Into<web_sys::EventTarget> + Clone + 'static,
     Ex: UseMouseEventExtractor + Clone + 'static,
 {
-    let (x, set_x) = create_signal(options.initial_value.x);
-    let (y, set_y) = create_signal(options.initial_value.y);
-    let (source_type, set_source_type) = create_signal(UseMouseSourceType::Unset);
+    let (x, set_x) = signal(options.initial_value.x);
+    let (y, set_y) = signal(options.initial_value.y);
+    let (source_type, set_source_type) = signal(UseMouseSourceType::Unset);
 
     let mouse_handler = {
         let coord_type = options.coord_type.clone();
diff --git a/src/use_mouse_in_element.rs b/src/use_mouse_in_element.rs
index 29ad0f9..bc28153 100644
--- a/src/use_mouse_in_element.rs
+++ b/src/use_mouse_in_element.rs
@@ -5,7 +5,7 @@ use crate::{
 };
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::marker::PhantomData;
 
 /// Reactive mouse position related to an element.
@@ -17,7 +17,7 @@ use std::marker::PhantomData;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_mouse_in_element, UseMouseInElementReturn};
 /// #
@@ -79,13 +79,13 @@ where
             .initial_value(initial_value),
     );
 
-    let (element_x, set_element_x) = create_signal(0.0);
-    let (element_y, set_element_y) = create_signal(0.0);
-    let (element_position_x, set_element_position_x) = create_signal(0.0);
-    let (element_position_y, set_element_position_y) = create_signal(0.0);
-    let (element_width, set_element_width) = create_signal(0.0);
-    let (element_height, set_element_height) = create_signal(0.0);
-    let (is_outside, set_outside) = create_signal(true);
+    let (element_x, set_element_x) = signal(0.0);
+    let (element_y, set_element_y) = signal(0.0);
+    let (element_position_x, set_element_position_x) = signal(0.0);
+    let (element_position_y, set_element_position_y) = signal(0.0);
+    let (element_width, set_element_width) = signal(0.0);
+    let (element_height, set_element_height) = signal(0.0);
+    let (is_outside, set_outside) = signal(true);
 
     cfg_if! { if #[cfg(feature = "ssr")] {
         let stop = || ();
diff --git a/src/use_mutation_observer.rs b/src/use_mutation_observer.rs
index c165c09..3041525 100644
--- a/src/use_mutation_observer.rs
+++ b/src/use_mutation_observer.rs
@@ -1,7 +1,7 @@
 use crate::core::ElementsMaybeSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use wasm_bindgen::prelude::*;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
@@ -21,14 +21,14 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Pre;
 /// # use leptos_use::{use_mutation_observer_with_options, UseMutationObserverOptions};
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
 /// let el = create_node_ref::<Pre>();
-/// let (text, set_text) = create_signal("".to_string());
+/// let (text, set_text) = signal("".to_string());
 ///
 /// use_mutation_observer_with_options(
 ///     el,
diff --git a/src/use_permission.rs b/src/use_permission.rs
index 2135842..309ede5 100644
--- a/src/use_permission.rs
+++ b/src/use_permission.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use std::fmt::Display;
 
 /// Reactive [Permissions API](https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API).
@@ -10,7 +10,7 @@ use std::fmt::Display;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_permission;
 /// #
 /// # #[component]
@@ -25,7 +25,7 @@ use std::fmt::Display;
 ///
 /// On the server the returned signal will always be `PermissionState::Unknown`.
 pub fn use_permission(permission_name: &str) -> Signal<PermissionState> {
-    let (state, set_state) = create_signal(PermissionState::Unknown);
+    let (state, set_state) = signal(PermissionState::Unknown);
 
     #[cfg(not(feature = "ssr"))]
     {
diff --git a/src/use_preferred_contrast.rs b/src/use_preferred_contrast.rs
index 86c3ebe..4c6a03c 100644
--- a/src/use_preferred_contrast.rs
+++ b/src/use_preferred_contrast.rs
@@ -1,5 +1,5 @@
 use crate::use_media_query;
-use leptos::*;
+use leptos::prelude::*;
 use std::fmt::Display;
 
 /// Reactive [prefers-contrast](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-contrast) media query.
@@ -7,7 +7,7 @@ use std::fmt::Display;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_preferred_contrast;
 /// #
 /// # #[component]
diff --git a/src/use_preferred_dark.rs b/src/use_preferred_dark.rs
index 0f44831..b6dd60a 100644
--- a/src/use_preferred_dark.rs
+++ b/src/use_preferred_dark.rs
@@ -1,12 +1,12 @@
 use crate::use_media_query;
-use leptos::*;
+use leptos::prelude::*;
 
 /// Reactive [dark theme preference](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme).
 ///
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_preferred_dark;
 /// #
 /// # #[component]
diff --git a/src/use_raf_fn.rs b/src/use_raf_fn.rs
index a5010db..92c3a65 100644
--- a/src/use_raf_fn.rs
+++ b/src/use_raf_fn.rs
@@ -1,7 +1,7 @@
 use crate::utils::Pausable;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::{Cell, RefCell};
 use std::rc::Rc;
 
@@ -15,13 +15,13 @@ use std::rc::Rc;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_raf_fn;
 /// use leptos_use::utils::Pausable;
 /// #
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
-/// let (count, set_count) = create_signal(0);
+/// let (count, set_count) = signal(0);
 ///
 /// let Pausable { pause, resume, is_active } = use_raf_fn(move |_| {
 ///     set_count.update(|count| *count += 1);
@@ -52,7 +52,7 @@ pub fn use_raf_fn_with_options(
 
     let raf_handle = Rc::new(Cell::new(None::<i32>));
 
-    let (is_active, set_active) = create_signal(false);
+    let (is_active, set_active) = signal(false);
 
     let loop_ref = Rc::new(RefCell::new(Box::new(|_: f64| {}) as Box<dyn Fn(f64)>));
 
diff --git a/src/use_resize_observer.rs b/src/use_resize_observer.rs
index 11aafe7..ac4d903 100644
--- a/src/use_resize_observer.rs
+++ b/src/use_resize_observer.rs
@@ -1,7 +1,7 @@
 use crate::core::ElementsMaybeSignal;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
     use crate::use_supported;
@@ -28,7 +28,7 @@ cfg_if! { if #[cfg(not(feature = "ssr"))] {
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
 /// let el = create_node_ref::<Div>();
-/// let (text, set_text) = create_signal("".to_string());
+/// let (text, set_text) = signal("".to_string());
 ///
 /// use_resize_observer(
 ///     el,
diff --git a/src/use_scroll.rs b/src/use_scroll.rs
index 9db4ab1..bc0f4e0 100644
--- a/src/use_scroll.rs
+++ b/src/use_scroll.rs
@@ -2,7 +2,7 @@ use crate::core::{Direction, Directions, ElementMaybeSignal};
 use crate::UseEventListenerOptions;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::rc::Rc;
 
 cfg_if! { if #[cfg(not(feature = "ssr"))] {
@@ -29,7 +29,7 @@ const ARRIVED_STATE_THRESHOLD_PIXELS: f64 = 1.0;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::resize;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_scroll, UseScrollReturn};
@@ -54,7 +54,7 @@ const ARRIVED_STATE_THRESHOLD_PIXELS: f64 = 1.0;
 /// These offsets are thresholds in pixels when a side is considered to have arrived. This is reflected in the return field `arrived_state`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos::ev::resize;
 /// # use leptos_use::{use_scroll_with_options, UseScrollReturn, UseScrollOptions, ScrollOffset};
@@ -92,7 +92,7 @@ const ARRIVED_STATE_THRESHOLD_PIXELS: f64 = 1.0;
 /// Set the `x` and `y` values to make the element scroll to that position.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::html::Div;
 /// # use leptos::ev::resize;
 /// # use leptos_use::{use_scroll, UseScrollReturn};
@@ -120,7 +120,7 @@ const ARRIVED_STATE_THRESHOLD_PIXELS: f64 = 1.0;
 /// [Element.scrollTo](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo) for more information.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::resize;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_scroll_with_options, UseScrollReturn, UseScrollOptions, ScrollBehavior};
@@ -144,7 +144,7 @@ const ARRIVED_STATE_THRESHOLD_PIXELS: f64 = 1.0;
 /// or as a `Signal`:
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::ev::resize;
 /// # use leptos::html::Div;
 /// # use leptos_use::{use_scroll_with_options, UseScrollReturn, UseScrollOptions, ScrollBehavior};
@@ -153,7 +153,7 @@ const ARRIVED_STATE_THRESHOLD_PIXELS: f64 = 1.0;
 /// # fn Demo() -> impl IntoView {
 /// # let element = create_node_ref::<Div>();
 /// #
-/// let (smooth, set_smooth) = create_signal(false);
+/// let (smooth, set_smooth) = signal(false);
 ///
 /// let behavior = Signal::derive(move || {
 ///     if smooth.get() { ScrollBehavior::Smooth } else { ScrollBehavior::Auto }
@@ -196,10 +196,10 @@ where
     El: Into<ElementMaybeSignal<T, web_sys::Element>>,
     T: Into<web_sys::Element> + Clone + 'static,
 {
-    let (internal_x, set_internal_x) = create_signal(0.0);
-    let (internal_y, set_internal_y) = create_signal(0.0);
+    let (internal_x, set_internal_x) = signal(0.0);
+    let (internal_y, set_internal_y) = signal(0.0);
 
-    let (is_scrolling, set_is_scrolling) = create_signal(false);
+    let (is_scrolling, set_is_scrolling) = signal(false);
 
     let arrived_state = create_rw_signal(Directions {
         left: true,
diff --git a/src/use_service_worker.rs b/src/use_service_worker.rs
index f30e580..a6bc0cd 100644
--- a/src/use_service_worker.rs
+++ b/src/use_service_worker.rs
@@ -1,5 +1,6 @@
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::wrappers::read::Signal;
+use leptos::prelude::*;
 use std::rc::Rc;
 use wasm_bindgen::{prelude::Closure, JsCast, JsValue};
 use web_sys::ServiceWorkerRegistration;
@@ -13,7 +14,7 @@ use crate::{js_fut, use_window};
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_service_worker_with_options, UseServiceWorkerOptions, UseServiceWorkerReturn};
 /// #
 /// # #[component]
@@ -111,7 +112,7 @@ pub fn use_service_worker_with_options(
             }
             Err(err) => match err {
                 ServiceWorkerRegistrationError::Js(err) => {
-                    logging::warn!("ServiceWorker registration failed: {err:?}")
+                    warn!("ServiceWorker registration failed: {err:?}")
                 }
                 ServiceWorkerRegistrationError::NeverQueried => {}
             },
@@ -152,13 +153,13 @@ pub fn use_service_worker_with_options(
             registration.with_untracked(|reg| if let Ok(reg) = reg {
                 match reg.waiting() {
                     Some(sw) => {
-                        logging::debug_warn!("Updating to newly installed SW...");
+                        debug_warn!("Updating to newly installed SW...");
                         if let Err(err) = sw.post_message(&JsValue::from_str(&options.skip_waiting_message)) {
-                            logging::warn!("Could not send message to active SW: Error: {err:?}");
+                            warn!("Could not send message to active SW: Error: {err:?}");
                         }
                     },
                     None => {
-                        logging::warn!("You tried to update the SW while no new SW was waiting. This is probably a bug.");
+                        warn!("You tried to update the SW while no new SW was waiting. This is probably a bug.");
                     },
                 }
             });
@@ -194,7 +195,7 @@ impl Default for UseServiceWorkerOptions {
                 use std::ops::Deref;
                 if let Some(window) = use_window().deref() {
                     if let Err(err) = window.location().reload() {
-                        logging::warn!(
+                        warn!(
                             "Detected a ServiceWorkerController change but the page reload failed! Error: {err:?}"
                         );
                     }
diff --git a/src/use_sorted.rs b/src/use_sorted.rs
index b9591de..f17010b 100644
--- a/src/use_sorted.rs
+++ b/src/use_sorted.rs
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use std::cmp::Ordering;
 use std::ops::DerefMut;
 
@@ -11,7 +11,7 @@ use std::ops::DerefMut;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_sorted;
 /// #
 /// # #[component]
@@ -26,7 +26,7 @@ use std::ops::DerefMut;
 /// You can also sort by key or with a compare function.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_sorted_by, use_sorted_by_key};
 /// #
 /// #[derive(Clone, PartialEq)]
diff --git a/src/use_supported.rs b/src/use_supported.rs
index e266377..b121e49 100644
--- a/src/use_supported.rs
+++ b/src/use_supported.rs
@@ -1,11 +1,11 @@
-use leptos::*;
+use leptos::prelude::*;
 
 /// SSR compatibe `is_supported`
 ///
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_supported, js};
 /// # use wasm_bindgen::JsValue;
 /// #
diff --git a/src/use_throttle_fn.rs b/src/use_throttle_fn.rs
index 0e1fea8..8483c24 100644
--- a/src/use_throttle_fn.rs
+++ b/src/use_throttle_fn.rs
@@ -17,7 +17,7 @@ pub use crate::utils::ThrottleOptions;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_throttle_fn;
 /// #
 /// # #[component]
@@ -41,7 +41,7 @@ pub use crate::utils::ThrottleOptions;
 /// You can provide options when you use [`use_throttle_fn_with_options`].
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{ThrottleOptions, use_throttle_fn_with_options};
 /// # #[component]
 /// # fn Demo() -> impl IntoView {
diff --git a/src/use_timeout_fn.rs b/src/use_timeout_fn.rs
index 7ae644b..b2f5717 100644
--- a/src/use_timeout_fn.rs
+++ b/src/use_timeout_fn.rs
@@ -1,5 +1,5 @@
 use leptos::leptos_dom::helpers::TimeoutHandle;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::Cell;
 use std::marker::PhantomData;
 use std::rc::Rc;
@@ -14,7 +14,7 @@ use std::time::Duration;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_timeout_fn, UseTimeoutFnReturn};
 /// #
 /// # #[component]
@@ -42,7 +42,7 @@ where
 {
     let delay = delay.into();
 
-    let (is_pending, set_pending) = create_signal(false);
+    let (is_pending, set_pending) = signal(false);
 
     let timer = Rc::new(Cell::new(None::<TimeoutHandle>));
 
diff --git a/src/use_timestamp.rs b/src/use_timestamp.rs
index d09ec01..4729642 100644
--- a/src/use_timestamp.rs
+++ b/src/use_timestamp.rs
@@ -4,7 +4,7 @@ use crate::{
     use_interval_fn_with_options, use_raf_fn_with_options, UseIntervalFnOptions, UseRafFnOptions,
 };
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::rc::Rc;
 
 /// Reactive current timestamp.
@@ -16,7 +16,7 @@ use std::rc::Rc;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_timestamp;
 /// #
 /// # #[component]
@@ -30,7 +30,7 @@ use std::rc::Rc;
 /// With controls:
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_timestamp_with_controls, UseTimestampReturn};
 /// #
 /// # #[component]
@@ -73,7 +73,7 @@ pub fn use_timestamp_with_controls_and_options(options: UseTimestampOptions) ->
         callback,
     } = options;
 
-    let (ts, set_ts) = create_signal(now() + offset);
+    let (ts, set_ts) = signal(now() + offset);
 
     let update = move || {
         set_ts.set(now() + offset);
diff --git a/src/use_to_string.rs b/src/use_to_string.rs
index 6cceb16..3d22e25 100644
--- a/src/use_to_string.rs
+++ b/src/use_to_string.rs
@@ -1,5 +1,5 @@
 use crate::utils::use_derive_signal;
-use leptos::*;
+use leptos::prelude::*;
 
 use_derive_signal!(
     /// Reactive `ToString::to_string()`.
@@ -7,12 +7,12 @@ use_derive_signal!(
     /// ## Usage
     ///
     /// ```
-    /// # use leptos::*;
+    /// # use leptos::prelude::*;
     /// # use leptos_use::use_to_string;
     /// #
     /// # #[component]
     /// # fn Demo() -> impl IntoView {
-    /// let (number, set_number) = create_signal(3.14_f64);
+    /// let (number, set_number) = signal(3.14_f64);
     /// let str = use_to_string::<_, f64>(number);
     /// #
     /// # view! { }
diff --git a/src/use_web_notification.rs b/src/use_web_notification.rs
index 11fd21a..60e69a6 100644
--- a/src/use_web_notification.rs
+++ b/src/use_web_notification.rs
@@ -1,7 +1,7 @@
 use crate::{use_supported, use_window};
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::rc::Rc;
 
 /// Reactive [Notification API](https://developer.mozilla.org/en-US/docs/Web/API/Notification).
@@ -15,7 +15,7 @@ use std::rc::Rc;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_web_notification_with_options, UseWebNotificationOptions, ShowOptions, UseWebNotificationReturn, NotificationDirection};
 /// #
 /// # #[component]
@@ -51,9 +51,9 @@ pub fn use_web_notification_with_options(
 ) -> UseWebNotificationReturn<impl Fn(ShowOptions) + Clone, impl Fn() + Clone> {
     let is_supported = use_supported(browser_supports_notifications);
 
-    let (notification, set_notification) = create_signal(None::<web_sys::Notification>);
+    let (notification, set_notification) = signal(None::<web_sys::Notification>);
 
-    let (permission, set_permission) = create_signal(NotificationPermission::default());
+    let (permission, set_permission) = signal(NotificationPermission::default());
 
     cfg_if! { if #[cfg(feature = "ssr")] {
         let _ = options;
diff --git a/src/use_websocket.rs b/src/use_websocket.rs
index 006c62c..a9ffcd5 100644
--- a/src/use_websocket.rs
+++ b/src/use_websocket.rs
@@ -21,7 +21,7 @@ use web_sys::{BinaryType, CloseEvent, Event, MessageEvent, WebSocket};
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_websocket, UseWebsocketReturn};
 /// # use leptos_use::core::ConnectionReadyState;
 /// #
@@ -99,7 +99,7 @@ use web_sys::{BinaryType, CloseEvent, Event, MessageEvent, WebSocket};
 /// First we define the `struct` that is going to be passed around as context.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// use std::rc::Rc;
 ///
 /// #[derive(Clone)]
@@ -127,7 +127,7 @@ use web_sys::{BinaryType, CloseEvent, Event, MessageEvent, WebSocket};
 /// Now you can provide the context like the following.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_websocket, UseWebsocketReturn};
 /// # use std::rc::Rc;
 /// # #[derive(Clone)]
@@ -162,7 +162,7 @@ use web_sys::{BinaryType, CloseEvent, Event, MessageEvent, WebSocket};
 /// Finally let's use the context:
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::{use_websocket, UseWebsocketReturn};
 /// # use std::rc::Rc;
 /// # #[derive(Clone)]
@@ -225,9 +225,9 @@ pub fn use_websocket_with_options(
         protocols,
     } = options;
 
-    let (ready_state, set_ready_state) = create_signal(ConnectionReadyState::Closed);
-    let (message, set_message) = create_signal(None);
-    let (message_bytes, set_message_bytes) = create_signal(None);
+    let (ready_state, set_ready_state) = signal(ConnectionReadyState::Closed);
+    let (message, set_message) = signal(None);
+    let (message_bytes, set_message_bytes) = signal(None);
     let ws_ref: StoredValue<Option<WebSocket>> = store_value(None);
 
     let reconnect_timer_ref: StoredValue<Option<TimeoutHandle>> = store_value(None);
diff --git a/src/use_webtransport.rs b/src/use_webtransport.rs
index b6b6c09..68bec24 100644
--- a/src/use_webtransport.rs
+++ b/src/use_webtransport.rs
@@ -3,7 +3,7 @@ use async_trait::async_trait;
 use default_struct_builder::DefaultBuilder;
 use js_sys::Reflect;
 use leptos::leptos_dom::helpers::TimeoutHandle;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::{Cell, RefCell};
 use std::rc::Rc;
 use std::time::Duration;
@@ -30,7 +30,7 @@ use bincode::serde::{decode_from_slice as from_slice, encode_to_vec as to_vec};
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_webtransport;
 /// #
 /// # #[component]
@@ -61,7 +61,7 @@ pub fn use_webtransport_with_options(
     } = options;
     let url = url.to_string();
 
-    let (ready_state, set_ready_state) = create_signal(ConnectionReadyState::Closed);
+    let (ready_state, set_ready_state) = signal(ConnectionReadyState::Closed);
     let ready_state: Signal<_> = ready_state.into();
 
     let transport = Rc::new(RefCell::new(None::<web_sys::WebTransport>));
@@ -229,7 +229,7 @@ pub fn use_webtransport_with_options(
         }
     };
 
-    let (datagrams_signal, set_datagrams) = create_signal(None::<Vec<u8>>);
+    let (datagrams_signal, set_datagrams) = signal(None::<Vec<u8>>);
 
     let datagrams = Signal::derive({
         let transport = Rc::clone(&transport);
@@ -657,7 +657,7 @@ impl UseWebTransportReturn {
                 .get_writer()
                 .map_err(|e| WebTransportError::FailedToOpenWriter(e))?;
 
-            let (state, set_state) = create_signal(StreamState::Open);
+            let (state, set_state) = signal(StreamState::Open);
 
             Ok(SendStream {
                 writer,
@@ -693,11 +693,11 @@ fn create_state_and_bytes_signal(
     WriteSignal<StreamState>,
     Signal<Option<Vec<u8>>>,
 ) {
-    let (state, set_state) = create_signal(StreamState::Open);
+    let (state, set_state) = signal(StreamState::Open);
 
     let bytes = Signal::derive({
         let reader_initialized = Rc::new(Cell::new(false));
-        let (message_signal, set_message) = create_signal(None::<Vec<u8>>);
+        let (message_signal, set_message) = signal(None::<Vec<u8>>);
 
         let stream = stream.clone();
 
diff --git a/src/use_window.rs b/src/use_window.rs
index b0185f8..84e1c57 100644
--- a/src/use_window.rs
+++ b/src/use_window.rs
@@ -4,7 +4,7 @@ use cfg_if::cfg_if;
 use std::ops::Deref;
 
 #[cfg(not(feature = "ssr"))]
-use leptos::*;
+use leptos::prelude::*;
 
 /// SSR safe `window()`.
 /// This returns just a new-type wrapper around `Option<Window>`.
@@ -16,7 +16,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_window;
 /// #
 /// # #[component]
diff --git a/src/use_window_focus.rs b/src/use_window_focus.rs
index 35ddbc0..f5c0ae3 100644
--- a/src/use_window_focus.rs
+++ b/src/use_window_focus.rs
@@ -3,7 +3,7 @@
 use crate::use_event_listener;
 use cfg_if::cfg_if;
 use leptos::ev::{blur, focus};
-use leptos::*;
+use leptos::prelude::*;
 
 /// Reactively track window focus
 /// with `window.onfocus` and `window.onblur` events.
@@ -15,7 +15,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_window_focus;
 /// #
 /// # #[component]
@@ -36,7 +36,7 @@ pub fn use_window_focus() -> Signal<bool> {
         let initial_focus = document().has_focus().unwrap_or_default();
     }}
 
-    let (focused, set_focused) = create_signal(initial_focus);
+    let (focused, set_focused) = signal(initial_focus);
 
     cfg_if! { if #[cfg(not(feature = "ssr"))] {
         let _ = use_event_listener(window(), blur, move |_| set_focused.set(false));
diff --git a/src/use_window_scroll.rs b/src/use_window_scroll.rs
index 9b1fbd9..19313a2 100644
--- a/src/use_window_scroll.rs
+++ b/src/use_window_scroll.rs
@@ -3,7 +3,7 @@
 use crate::{use_event_listener_with_options, use_window, UseEventListenerOptions};
 use cfg_if::cfg_if;
 use leptos::ev::scroll;
-use leptos::*;
+use leptos::prelude::*;
 
 /// Reactive window scroll.
 ///
@@ -14,7 +14,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::use_window_scroll;
 /// #
 /// # #[component]
@@ -36,8 +36,8 @@ pub fn use_window_scroll() -> (Signal<f64>, Signal<f64>) {
         let initial_x = window().scroll_x().unwrap_or_default();
         let initial_y = window().scroll_y().unwrap_or_default();
     }}
-    let (x, set_x) = create_signal(initial_x);
-    let (y, set_y) = create_signal(initial_y);
+    let (x, set_x) = signal(initial_x);
+    let (y, set_y) = signal(initial_y);
 
     let _ = use_event_listener_with_options(
         use_window(),
diff --git a/src/utils/codecs/string/from_to_string.rs b/src/utils/codecs/string/from_to_string.rs
index 6d37350..bbe83ae 100644
--- a/src/utils/codecs/string/from_to_string.rs
+++ b/src/utils/codecs/string/from_to_string.rs
@@ -7,7 +7,7 @@ use std::str::FromStr;
 ///
 /// ## Example
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions};
 /// # use leptos_use::utils::FromToStringCodec;
 /// #
diff --git a/src/utils/codecs/string/json.rs b/src/utils/codecs/string/json.rs
index e34bd29..3979ce7 100644
--- a/src/utils/codecs/string/json.rs
+++ b/src/utils/codecs/string/json.rs
@@ -4,7 +4,7 @@ use super::StringCodec;
 ///
 /// ## Example
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions};
 /// # use serde::{Deserialize, Serialize};
 /// # use leptos_use::utils::JsonCodec;
@@ -34,7 +34,7 @@ use super::StringCodec;
 /// Previous versions of leptos-use offered a `merge_defaults` fn to rewrite the encoded value. This is possible by wrapping the codec but should be avoided.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions};
 /// # use serde::{Deserialize, Serialize};
 /// # use leptos_use::utils::StringCodec;
@@ -76,7 +76,7 @@ use super::StringCodec;
 /// A better alternative to string replacement might be to parse the JSON then transform the resulting `JsValue` before decoding it to to your struct again.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions};
 /// # use serde::{Deserialize, Serialize};
 /// # use serde_json::json;
diff --git a/src/utils/codecs/string/prost.rs b/src/utils/codecs/string/prost.rs
index 9b49d42..05e8902 100644
--- a/src/utils/codecs/string/prost.rs
+++ b/src/utils/codecs/string/prost.rs
@@ -10,7 +10,7 @@ use thiserror::Error;
 ///
 /// ## Example
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions};
 /// # use leptos_use::utils::ProstCodec;
 /// #
diff --git a/src/utils/filters/debounce.rs b/src/utils/filters/debounce.rs
index 2c008d6..66db6f6 100644
--- a/src/utils/filters/debounce.rs
+++ b/src/utils/filters/debounce.rs
@@ -3,7 +3,7 @@
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
 use leptos::leptos_dom::helpers::TimeoutHandle;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::{Cell, RefCell};
 use std::rc::Rc;
 use std::time::Duration;
diff --git a/src/utils/filters/pausable.rs b/src/utils/filters/pausable.rs
index 536b833..d4ec0d1 100644
--- a/src/utils/filters/pausable.rs
+++ b/src/utils/filters/pausable.rs
@@ -1,6 +1,6 @@
 use crate::utils::{CloneableFnWithReturn, FilterOptions};
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::RefCell;
 use std::rc::Rc;
 
@@ -32,7 +32,7 @@ where
     R: 'static,
     F: Fn(Arg) -> R + Clone,
 {
-    let (active, set_active) = create_signal(true);
+    let (active, set_active) = signal(true);
 
     let pause = move || {
         set_active(false);
diff --git a/src/utils/filters/throttle.rs b/src/utils/filters/throttle.rs
index 611f0df..c152575 100644
--- a/src/utils/filters/throttle.rs
+++ b/src/utils/filters/throttle.rs
@@ -4,7 +4,7 @@ use crate::core::now;
 use cfg_if::cfg_if;
 use default_struct_builder::DefaultBuilder;
 use leptos::leptos_dom::helpers::TimeoutHandle;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::{Cell, RefCell};
 use std::cmp::max;
 use std::rc::Rc;
diff --git a/src/utils/pausable.rs b/src/utils/pausable.rs
index 36e0dda..e4ee096 100644
--- a/src/utils/pausable.rs
+++ b/src/utils/pausable.rs
@@ -1,4 +1,4 @@
-use leptos::Signal;
+use leptos::prelude::wrappers::read::Signal;
 
 /// Pausable effect
 pub struct Pausable<PauseFn, ResumeFn>
diff --git a/src/utils/signal_filtered.rs b/src/utils/signal_filtered.rs
index 3a81446..8c920e0 100644
--- a/src/utils/signal_filtered.rs
+++ b/src/utils/signal_filtered.rs
@@ -43,7 +43,7 @@ macro_rules! signal_filtered {
                     return value;
                 }
 
-                let (filtered, set_filtered) = create_signal(value.get_untracked());
+                let (filtered, set_filtered) = signal(value.get_untracked());
 
                 let update = [<use_ $filter_name _fn_with_options>](
                     move || set_filtered.set(value.get_untracked()),
diff --git a/src/watch_debounced.rs b/src/watch_debounced.rs
index b52d2eb..c069fcf 100644
--- a/src/watch_debounced.rs
+++ b/src/watch_debounced.rs
@@ -1,6 +1,6 @@
 use crate::{watch_with_options, DebounceOptions, WatchOptions};
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 
 /// A debounced version of [`watch`].
 ///
@@ -11,12 +11,12 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::watch_debounced;
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// #     let (source, set_source) = create_signal(0);
+/// #     let (source, set_source) = signal(0);
 /// #
 /// watch_debounced(
 ///     move || source.get(),
@@ -37,12 +37,12 @@ use leptos::*;
 /// There's also `watch_debounced_with_options` where you can specify the other watch options (except `filter`).
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{watch_debounced_with_options, WatchDebouncedOptions};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// #     let (source, set_source) = create_signal(0);
+/// #     let (source, set_source) = signal(0);
 /// #
 /// watch_debounced_with_options(
 ///     move || source.get(),
diff --git a/src/watch_pausable.rs b/src/watch_pausable.rs
index 62099e7..07171a2 100644
--- a/src/watch_pausable.rs
+++ b/src/watch_pausable.rs
@@ -1,5 +1,5 @@
 use crate::{watch_with_options, WatchOptions};
-use leptos::*;
+use leptos::prelude::*;
 
 /// Pausable [`watch`].
 ///
@@ -10,12 +10,12 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{watch_pausable, WatchPausableReturn};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// let (source, set_source) = create_signal("foo".to_string());
+/// let (source, set_source) = signal("foo".to_string());
 ///
 /// let WatchPausableReturn {
 ///     stop,
@@ -78,7 +78,7 @@ where
     W: Clone + 'static,
     T: Clone + 'static,
 {
-    let (is_active, set_active) = create_signal(true);
+    let (is_active, set_active) = signal(true);
 
     let pausable_callback = move |val: &W, prev_val: Option<&W>, prev_ret: Option<Option<T>>| {
         if is_active.get_untracked() {
diff --git a/src/watch_throttled.rs b/src/watch_throttled.rs
index 00497a3..df64855 100644
--- a/src/watch_throttled.rs
+++ b/src/watch_throttled.rs
@@ -10,12 +10,12 @@ use default_struct_builder::DefaultBuilder;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::watch_throttled;
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// #     let (source, set_source) = create_signal(0);
+/// #     let (source, set_source) = signal(0);
 /// #
 /// watch_throttled(
 ///     move || source.get(),
@@ -36,12 +36,12 @@ use default_struct_builder::DefaultBuilder;
 /// There's also `watch_throttled_with_options` where you can specify the other watch options (except `filter`).
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{watch_throttled_with_options, WatchThrottledOptions};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// #     let (source, set_source) = create_signal(0);
+/// #     let (source, set_source) = signal(0);
 /// #
 /// watch_throttled_with_options(
 ///     move || source.get(),
diff --git a/src/watch_with_options.rs b/src/watch_with_options.rs
index b01c255..b7740b0 100644
--- a/src/watch_with_options.rs
+++ b/src/watch_with_options.rs
@@ -1,7 +1,7 @@
 use crate::filter_builder_methods;
 use crate::utils::{create_filter_wrapper, DebounceOptions, FilterOptions, ThrottleOptions};
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 use std::cell::RefCell;
 use std::rc::Rc;
 
@@ -16,12 +16,12 @@ use std::rc::Rc;
 /// the first change is detected of any signal that is accessed in `deps`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{watch_with_options, WatchOptions};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// let (num, set_num) = create_signal(0);
+/// let (num, set_num) = signal(0);
 ///
 /// watch_with_options(
 ///     move || num.get(),
@@ -41,12 +41,12 @@ use std::rc::Rc;
 /// The callback can be throttled or debounced. Please see [`watch_throttled`] and [`watch_debounced`] for details.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{watch_with_options, WatchOptions};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// # let (num, set_num) = create_signal(0);
+/// # let (num, set_num) = signal(0);
 /// #
 /// watch_with_options(
 ///     move || num.get(),
@@ -60,12 +60,12 @@ use std::rc::Rc;
 /// ```
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{watch_with_options, WatchOptions};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// # let (num, set_num) = create_signal(0);
+/// # let (num, set_num) = signal(0);
 /// #
 /// watch_with_options(
 ///     move || num.get(),
diff --git a/src/whenever.rs b/src/whenever.rs
index b8f4c3c..db83c1d 100644
--- a/src/whenever.rs
+++ b/src/whenever.rs
@@ -5,12 +5,12 @@ use crate::{watch_with_options, WatchOptions};
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::whenever;
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// let (is_ready, set_ready) = create_signal(false);
+/// let (is_ready, set_ready) = signal(false);
 ///
 /// whenever(move || is_ready.get(), |v, _, _| log!("{}", v));
 /// #
@@ -23,12 +23,12 @@ use crate::{watch_with_options, WatchOptions};
 /// Same as [`watch`], the callback will be called with `callback(input, prev_input, prev_return)`.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::whenever;
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// # let (is_ready, set_ready) = create_signal(false);
+/// # let (is_ready, set_ready) = signal(false);
 /// whenever(move || is_ready.get(), |value, prev_value, _| {
 ///     log!("before: {prev_value:?}; now: {value}");
 /// });
@@ -42,12 +42,12 @@ use crate::{watch_with_options, WatchOptions};
 /// Same as [`watch`], you can pass a getter function to calculate on each change.
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::whenever;
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// # let (counter, set_counter) = create_signal(0);
+/// # let (counter, set_counter) = signal(0);
 /// whenever(
 ///     move || counter.get() == 7,
 ///     |_, _, _| log!("counter is 7 now!"),
@@ -62,12 +62,12 @@ use crate::{watch_with_options, WatchOptions};
 /// Options and defaults are same as [`watch_with_options`].
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos::logging::log;
 /// # use leptos_use::{WatchOptions, whenever_with_options};
 /// #
 /// # pub fn Demo() -> impl IntoView {
-/// # let (counter, set_counter) = create_signal(0);
+/// # let (counter, set_counter) = signal(0);
 /// whenever_with_options(
 ///     move || counter.get() == 7,
 ///     |_, _, _| log!("counter is 7 now!"),
diff --git a/template/examples/{{ function_name }}/src/main.ffizer.hbs.rs b/template/examples/{{ function_name }}/src/main.ffizer.hbs.rs
index cba5fea..9d590de 100644
--- a/template/examples/{{ function_name }}/src/main.ffizer.hbs.rs	
+++ b/template/examples/{{ function_name }}/src/main.ffizer.hbs.rs	
@@ -1,4 +1,4 @@
-use leptos::*;
+use leptos::prelude::*;
 use leptos_use::docs::demo_or_body;
 use leptos_use{{#if module}}::{{ module }}{{/if}}::{{ function_name }};
 
diff --git a/template/src/{{ module }}/{{ function_name }}.ffizer.hbs.rs b/template/src/{{ module }}/{{ function_name }}.ffizer.hbs.rs
index 0edb6ba..d3ed23c 100644
--- a/template/src/{{ module }}/{{ function_name }}.ffizer.hbs.rs	
+++ b/template/src/{{ module }}/{{ function_name }}.ffizer.hbs.rs	
@@ -1,5 +1,5 @@
 use default_struct_builder::DefaultBuilder;
-use leptos::*;
+use leptos::prelude::*;
 
 ///{{#if (eq unstable_apis "true")}}
 ///
@@ -13,7 +13,7 @@ use leptos::*;
 /// ## Usage
 ///
 /// ```
-/// # use leptos::*;
+/// # use leptos::prelude::*;
 /// # use leptos_use{{#if module}}::{{ module }}{{/if}}::{{ function_name }};
 /// #
 /// # #[component]