GitHunt
BE

benfrankel/bevy_spawn_observer

Add observers to your bundles

bevy_spawn_observer

Crates.io
Docs
License

Warning

This crate is no longer maintained and will not be updated to new versions of Bevy past 0.18.

You can already use the experimental bevy::ui_widgets::observe
since 0.17, and a proper upstream solution is expected to land at some point
(see #14204 and #17607).

This crate provides SpawnObserver,
a custom SpawnableList
enabling you to add observers to your bundles.

use bevy::{ecs::spawn::SpawnWith, prelude::*};
use bevy_spawn_observer::SpawnObserver;

// With `bevy_spawn_observer`:
fn button_new() -> impl Bundle {
    (
        Button,
        Children::spawn(SpawnObserver::new(|_: Trigger<Pointer<Click>>| {
            info!("You clicked me!");
        })),
    )
}

// Without `bevy_spawn_observer`:
fn button_old() -> impl Bundle {
    (
        Node::default(),
        Children::spawn(SpawnWith(|parent: &mut ChildSpawner| {
            parent.spawn(Button).observe(|_: Trigger<Pointer<Click>>| {
                info!("You clicked me!");
            });
        })),
    )
}

See a full example here.

Bevy version compatibility

bevy version bevy_spawn_observer version
0.18 0.3
0.17 0.2
0.16 0.1

License

This crate is available under either of MIT or Apache-2.0 at your choice.

Languages

Rust100.0%

Contributors

Apache License 2.0
Created April 23, 2025
Updated January 25, 2026