15 unstable releases (7 breaking)

0.13.0 Apr 7, 2026
0.12.0 Feb 25, 2026
0.11.0 Mar 7, 2025
0.10.0 Dec 19, 2023
0.6.1 Mar 19, 2021

#207 in Web programming

Download history 363/week @ 2025-12-29 441/week @ 2026-01-05 368/week @ 2026-01-12 898/week @ 2026-01-19 789/week @ 2026-01-26 1223/week @ 2026-02-02 776/week @ 2026-02-09 1027/week @ 2026-02-16 868/week @ 2026-02-23 1607/week @ 2026-03-02 971/week @ 2026-03-09 1292/week @ 2026-03-16 1190/week @ 2026-03-23 1026/week @ 2026-03-30 995/week @ 2026-04-06 984/week @ 2026-04-13

4,287 downloads per month
Used in 10 crates

MIT/Apache

79KB
1.5K SLoC

Yewdux

Simple state management for Yew applications.

See the book for more details.

Example

use yew::prelude::*;
use yewdux::prelude::*;

#[derive(Default, Clone, PartialEq, Eq, Store)]
struct State {
    count: u32,
}

#[function_component]
fn App() -> Html {
    let (state, dispatch) = use_store::<State>();
    let onclick = dispatch.reduce_mut_callback(|state| state.count += 1);

    html! {
        <>
        <p>{ state.count }</p>
        <button {onclick}>{"+1"}</button>
        </>
    }
}

Default exports


Yewdux

Ergonomic state management for Yew applications.

See the book for more details.

Example

use yew::prelude::*;
use yewdux::prelude::*;

#[derive(Default, Clone, PartialEq, Store)]
struct State {
    count: u32,
}

#[function_component]
fn ViewCount() -> Html {
    let (state, _) = use_store::<State>();
    html!(state.count)
}

#[function_component]
fn IncrementCount() -> Html {
    let (_, dispatch) = use_store::<State>();
    let onclick = dispatch.reduce_mut_callback(|counter| counter.count += 1);

    html! {
        <button {onclick}>{"+1"}</button>
    }
}

#[function_component]
fn App() -> Html {
    html! {
        <>
        <ViewCount />
        <IncrementCount />
        </>
    }
}

fn main() {
    yew::Renderer::<App>::new().render();
}

Dependencies

~15–22MB
~311K SLoC