
A Fistful of Boomerangs wins Bevy Jam 6
2025-06-23
Bevy Jam 6 is over and the winners have been announced!. If you missed the jam, check out this overview of the top ten games.
Congratulations to A Fistful of Boomerangs!
OKLCH Gradients
#19330 adds support for interpolation in OKLab and OKLCH color spaces for UI gradients.
Core widgets
As part of the Core Widgets effort, a new Checkbox was introduced in #19665 and a Slider was introduced in #19584.
Click to Focus
#19736 implements "Click to Focus" for entities with a TabIndex
Component.
Camera Shake
The 2d camera shake example got a refactor in #19724 and now includes more explanation to learn from or copy/paste into your project.
glTF coordinate system imports
glTF uses the following coordinate system:
- forward: Z
- up: Y
- right: -X
and Bevy uses:
- forward: -Z
- up: Y
- right: X
#19633 adds an option to the glTF loader to perform coordinate conversion. You might want this option if you've experienced glTF imports being "rotated" unexpectedly previously.
Observers Overhaul
The Observers Overhaul working group is underway.
#19663 provides access to the original target in bubbling observers. This has been available in the bevy picking events previously and is now being made more generically available.
#19611 exposes Observer system names so that tools like bevy_inspector_egui can use the names when developing debug tooling.
The names for Events have also been split up in #19647 to allow type-level checking of different Event usages. These include Event
, EntityEvent
, and BufferedEvent
.
First you derive Event
to be able to use a "global observer" which has no entity target. If you then want the event to be targetable at specific entities, additionally derive EntityEvent
. For EventWriter
/EventReader
usage, additionally derive BufferedEvent
.
Alice's Merge Train is a maintainer-level view into active PRs and how the Bevy sausage is made.

Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.

Quantum Corp
showcase
Quantum Corp is a sci-fi action roguelite set in a fully pixel simulated world. Collect, deposit, craft and fight your way through dangerous procedural realms. Create ever more powerful weapons, survive, and bring proceedings to the company. But be careful, every particle might become your demise.
The game is built using bevy_ecs, wgpu, and scripts game logic with lua.

Crates
New releases to crates.io and substantial updates to existing projects
Bevy Enhanced Input 0.13.0
crate_release
An input manager for Bevy, inspired by Unreal Engine's Enhanced Input.
Highlights
- Pull-based API is now strongly typed, just like triggers. Example:
actions.value::<Move>()
returns the defined output type ofMove
. - Action mocking. Example:
actions.mock::<Move>(ActionState::Fired, Vec2::ONE, Duration::from_secs(2))
. The last parameter is generic, so you can also set the time in frames or until manually cleared. - Preparation for upcoming networking integrations. Mostly more convenient access to internals.
bevy_extended_ui
crate_release
An extension to bevy_ui offering a selection of widgets and html/css support.
bevy_full_asset_path
crate_release
A tiny plugin that allows reading the full filesystem path of an asset loaded from disk.

Bevy Northstar 0.2
crate_release
A Hierarchical Pathfinding and general pathfinding crate, currently targeted at tilemap games.

Devlogs
vlog style updates from long-term projects
Provide access to the original target of entity-events in observers authored by alice-i-cecile
Make sequential_dispersed fn constant authored by alice-i-cecile
Add insert_child and remove_child methods authored by Joel-Singh
Event Split: `Event`, `EntityEvent`, and `BufferedEvent` authored by Jondolf
lighting.rs example: Improved ambient light showcase authored by RosyArts
deny(missing_docs) for bevy_mikktspace authored by theotherphil
Replace `UntypedHandle` from ReflectAsset with `impl Into<UntypedAssetId>`. authored by andriyDev
Preserve extra data in `RelationshipTarget` with `replace_related`(`_with_difference`) authored by urben1680
Add SkipDeferredLighting component authored by JMS55
Fix typos authored by tbillington
Core slider authored by viridia
Allow passing number of thread for building and testing to CI authored by hukasu
Fix SubStates with multiple source states not reacting to all source changes authored by mgi388
bevy_log: refactor how log layers are wired together authored by SilentSpaceTraveller
Register `ReflectSerialize` for &'static str authored by eckz
slider widget track click position `UiScale` fix authored by ickshonpe
Fix Keyboard observer not updating SliderValue authored by HippoGamus
Clarify GlobalTransform::to_isometry doc authored by atlv24
Make observers metadata / storage publicly visible authored by alice-i-cecile
Document `TextShadow` not supported by `Text2d` authored by ickshonpe
Allow users to fix glTF coordinate system imports authored by janhohenheim
deny(missing_docs) for bevy_reflect authored by theotherphil
allow access to the source error of `AssetLoaderError` and downcasting authored by Austreelis
Let query items borrow from query state to avoid needing to clone authored by chescock
Support fallible one-shot systems authored by Pascualex
Split CursorOptions off of Window authored by janhohenheim
Revert "bevy_log: refactor how log layers are wired together (#19248)" authored by alice-i-cecile
Add TypeIdMapExt trait to make TypeIdMap operations more ergonomic authored by theotherphil
Added clone bounds to EntityEvents that were missing them. authored by MalekiRe
Exposes `Observer`'s system's name authored by hukasu
rename GlobalTransform::compute_matrix to to_matrix authored by atlv24
rename Transform::compute_matrix to to_matrix authored by atlv24
ECS: put strings only used for debug behind a feature authored by mockersf
Add support for ButtonInput<Key> authored by kristoff3r
Remove `'s` lifetime from `WorldQuery::Fetch` authored by chescock
deny(missing_docs) for bevy_asset_macros authored by theotherphil
Gate Reflect derive behind feature flag authored by theotherphil
deny(missing_docs) for bevy_window authored by theotherphil
Refactor bundle derive authored by SkiFire13
Schema types metadata authored by Leinnan
Core Checkbox authored by viridia
Fix QueryData derive codegen authored by ecoskey
Rewrite camera shake example authored by janhohenheim
add missing `#[track_caller]` authored by eugineerd
New simplified "click to focus" logic for core widgets. authored by viridia
don't allow nightly lints authored by mockersf
Move `usages` folder to `usage` authored by hukasu
Fix issue 19734: add dependency on bevy_utils for the bevy_ecs test. authored by Lailatova
Color interpolation in OKLab, OKLCH spaces for UI gradients authored by ickshonpe
Remove unused code in Perlin noise 1D impl authored by janhohenheim
Want to contribute to Bevy?
Here you can find two types of potential contribution: Pull Requests that might need review and Issues that might need to be worked on.
Pull Requests Opened this week
trigger `Text` & `Text2d` re-render when `Children` is removed authored by Austreelis
Split `EntityClonerBuilder` in `AllowAll` and `DenyAll` variants authored by urben1680
Remove `Material` trait bound from all render world systems and resources authored by tychedelia
[DRAFT] Bug fix in Gizmo grid authored by theotherphil
UI z-ordering fix authored by ickshonpe
Reactive Systems / SystemParams and Resource impl authored by cart
Don't create errors for ignored failed commands authored by brianreavis
Add entities alongside resources authored by Trashtalk217
Fix sprite picking viewport authored by jannik4
Fix ui picking outside the viewport authored by jannik4
[DRAFT] deny(missing_docs) for bevy_asset authored by theotherphil
Bevy Feathers: an opinionated widget toolkit for building Bevy tooling authored by viridia
Stop inserting `RelationshipTarget` on `SpawnRelatedBundle` authored by Pascualex
ObserverTrigger: Add wrapper type around `ComponentId` authored by oscar-benderstone
Split `Bundle` and `StaticBundle` authored by SkiFire13
Replace the load_folder API by load_batch authored by shishanyue
Create a new `OverflowAxis` that allows scrolling while keeping overflown items visible authored by hukasu
Fix intermittent drag-and-drop freezing on Windows authored by zachbateman
Selection menu authored by hukasu
Use bundle wrappers to select the insert mode authored by Pascualex
Add benchmarks for spawning and inserting bundles authored by SkiFire13
Issues Opened this week
On::entity should not return an `Option` when it is always `Some` authored by alice-i-cecile
Add f16 to the Reflect Trait authored by klownie
In TextLayout, when deleting all TextSpans, TextLayout still retains the last text authored by rendaoer
Oklcha Colors for PointLights authored by DaRAGingLunatic
Overlap system set executions authored by JMS55
Enable correct glTF coordinate conversion by default authored by janhohenheim
Optionally keep around an empty `Children` component authored by gwafotapa
Reflect is not implemented for IndexMap/IndexSet authored by cBournhonesque
Main branch fails to compile on Rust beta. authored by github-actions[bot]
Sliced images not working with BackgroundColor when using limited features enabled. authored by eckz
Removing `Observer` panics the next time its event is triggered. authored by gwafotapa
Provide an API for getting the full path of a file loaded by the `FileAssetReader` authored by janhohenheim
Reference error handling in systems docs authored by alice-i-cecile
Allow transmitting assets over BRP authored by janhohenheim
Creating a mesh with no attributes panics with an undescriptive error authored by kerstop
Unclear license for envinronment maps authored by janhohenheim
(UI) picking unexpectedly triggers outside the viewport authored by jannik4
Allow for Resource - Component relationships authored by Freyja-moth
Relationship Ordering not maintained authored by Trashtalk217
Add a "run if any system param changed" run condition (building towards reactivity) authored by alice-i-cecile
SSAO/VBAO Improvements authored by Elabajaba
Add the ability to attach context to `BevyError` authored by Shatur
Inserting `children!` overrides existing children authored by Pascualex
Fallible one-shot systems silently swallow errors authored by alice-i-cecile
Add a system's entity to run conditions, when we have them authored by Freyja-moth
Feature `wayland` requires wayland-sys feature `dlopen` authored by Barugon
Remove the `load_folder` API authored by alice-i-cecile
`bevy_ui_picking_backend` feature can't be disabled authored by jannik4
Upstream bevy_editor_cam authored by alice-i-cecile
Expose information about system-internal parallelism to the scheduler authored by alice-i-cecile
Somehow prevent confusion caused by Assets being removed due to not having RenderAssetUsages::MAIN_WORLD authored by laundmo
`ci integration-test` is not run in CI authored by rparrett
Resources as Components Tracking Issue authored by Trashtalk217
Pointer<Drag> event delta depends on scale factor authored by arcln
Upstreaming text input authored by viridia
Allow required components to specify relationships authored by Freyja-moth
Warning: missing IDs in `observer_propagation` authored by oscar-benderstone
B0004 check sometimes triggers false positives authored by Shatur
Reconsider design of `WindowTraversal` to decouple `input_focus` authored by alice-i-cecile
Integration tests are immune to `cargo update` authored by greeble-dev
Consider returning `Result` from get(_mut)::<Component>() on an entity authored by Shatur