#transition #gpui #api #window #interpolating #cx #animation #millis

gpui_transitions

provides an API for interpolating between values in GPUI

5 releases

Uses new Rust 2024

0.1.5 Jan 19, 2026
0.1.4 Jan 17, 2026
0.1.2 Dec 25, 2025
0.1.1 Dec 25, 2025
0.1.0 Dec 25, 2025

#540 in GUI

MIT license

60KB
1K SLoC

gpui_transitions.

This crate provides an API for interpolating between values in gpui.

Transitions can be constructed via window.use_transition or window.use_keyed_transition. It's very similar to the use_state API.

let my_transition = window
    .use_keyed_transition(
        "my_transition",
        cx,
        Duration::from_millis(400),
        |_window, _cx| rgb(0xFF0000)),
    );

They can also be constructed more granularly via Transition::new:

let my_transition = Transition::new(
    cx.new(|_cx| TransitionState::new(rgb(0xFF0000))),
    Duration::from_millis(400),
);

To get the value of a transition you can use evaluate. This is the equivilant of use_state's read method.

let value = my_transition.evaluate(window, cx);

If the transition is not finished when evaluate is called then an animation frame will be requested.


Updating the transition's goal is identical to updating state:

my_transition.update(cx, |this, cx| {
    *this = rgb(0x00FF00);
    cx.notify();
});

Examples can be found here.

Dependencies

~45–89MB
~1.5M SLoC