
The Bevy CLI, Game Jam Prep, and more
2025-05-26
A nice break post-RustWeek begins.
In #19329, new documentation was added for how to use ScheduleLabel
. Check it out if you've ever wondered what it does!
#18139 brings UI Node Gradients to Bevy!
and finally #18810 introduces a per-world error handler. This allows using different handlers for different worlds and also removes the restrictions on changing the handler only once. Each World can now store its own error handler in a resource.

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

HDR Preview
showcase
HDR Preview is an extension for VSCode and Cursor IDE, that allows you to preview KTX2 files as well as EXR and HDR files.
It works using the OpenImageIO, KTX Software and EXR command line tools. You need to install them first in order to use the extension. All the links are included in the readme: source

Woodpecker UI Multi-line Text Editor
showcase
A demo of Woodpecker UI with support for selecting, syntax highlighting, etc. Text can be arbitrarily styled using any metrics the user defines; this example uses syntax highlighting from the autumnus crate. Vello and Parley are used for rendering, layout, and text edit. Performance is good enough it works in debug mode!

To Build a Home Playtest Upload
showcase
There is now a working playtest build of To Build a Home to Steam! steam link, not the playtest

Otdas released on Itch!
showcase
Step into the dim glow of the Worldwide Military Command and Control System, a command-line terminal where every keystroke could ignite or defuse global catastrophe. In Otdas you play as a high-ranking military operator navigating the razor’s edge of nuclear brinkmanship in the 1980s.
Monitor global events, read briefings, and respond to mounting tension as the AI-driven Soviet Union reacts in real time to your decisions. Test missiles, arm warheads, and weigh the consequences of first strikes. Behind every conversation and news report lies a potential spark, will you provoke paranoia, escalate aggression, or maintain uneasy balance?
The clock is ticking. Trust is an illusion. And sometimes, the only way to win is to survive.

Crates
New releases to crates.io and substantial updates to existing projects
Pyri New Jam
crate_release
Pyri New Jam is an opinionated Bevy template optimized for game jams!
This template builds on Bevy New 2D, adding new features and dependencies (more details here)
Create a new game with the Bevy CLI (Alpha): bevy new my_game -t benfrankel/pyri_new_jam
bevy_cli v0.1.0-alpha.1
crate_release
The Bevy CLI working group (bevy_cli: please \
clap``) has been hard at work, and we're happy to announce the CLI's first official release! The CLI is a command-line tool that streamlines developing apps for Bevy, with features like:
bevy new
: quickly setup a new app from a template, likebevy_new_2d
. Perfect for game jams!- Easily build your app for the web with features like...
bevy run web
: run a local web server to test your app in your browserbevy build web --bundle
: bundle your app and assets into a single folderbuild build web --release
: optionally optimization withwasm-opt
when in release mode
bevy lint
: run the linter if you have it installed, and optionally install it for you if you don't!
You can find the live documentation for this release here, and can install the CLI by following the instructions here.

bevy_fog_of_war 0.2.0
crate_release
A fog of war implementation for the Bevy game engine. This crate provides a simple way to add fog of war effects to your 2D games, with support for multiple light sources, smooth transitions, and explored area tracking.
bevy_flair 0.3.0
crate_release
bevy_flair is bevy_ui styling using CSS.
0.3 adds support for @media
queries, more css properties, and transition events.
@media (prefers-color-scheme: dark) {
:root {
--background-color: var(--color-neutral-800);
--text-color: var(--color-gray-100);
--button-bg: var(--color-neutral-600);
--button-border: var(--color-neutral-900);
}
}

iyes_perf_ui 0.5.0
crate_release
iyes_perf_ui is a crate for a debug/diagnostics UI overlay, implemented using bevy_ui. You can add whatever selection of entries you want (including your own custom ones), style it however you want, etc.
0.5 brings new entries for average fps, %low fps, cpu/memory diagnostics for the current process only.
bevy_simple_subsecond_system
crate_release
Hotpatch your Bevy systems, allowing you to change their code while the app is running and directly seeing the results! Powered by Dioxus' subsecond

bevy_mod_outline 0.10
crate_release
bevy_mod_outline, a crate for outlining 3D meshes using the vertex extrusion and jump-flood methods has recently released 0.9.2 (for Bevy 0.15) and 0.10.0 (for Bevy 0.16).
Aside from the Bevy upgrade, these releases have significantly improved the performance of jump-flood outlines and fixed a panic breaking jump-flood on MacOS.

Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
Bevy iOS Deep Linking
educational
Here is a brief blog post about how to do iOS deep linking with Bevy
refactor(render): cleanup add_import_to_composer authored by atlv24
Make sure prepass notices changes in alpha mode authored by eero-lehtinen
Fix point light shadow glitches authored by eero-lehtinen
Add boilerplate docs for PointerHits::new and HitData::new authored by theotherphil
Per world error handler authored by SpecificProtagonist
Remove `YAxisOrientation` from `bevy_text` authored by ickshonpe
Add missing words in Traversal doc comment authored by theotherphil
Fix spot light shadow glitches authored by eero-lehtinen
Fix warnings and errors reported on Rust beta authored by hukasu
UI Node Gradients authored by ickshonpe
Use material name for mesh entity's Name when available authored by rendaoer
Fix `Anchor` component inconsistancies authored by ickshonpe
fix(picking): Location is not a Component anymore. authored by atlv24
Rename `Condition` to `SystemCondition`` authored by stevehello166
feat: derive Serialize on Childof authored by mirsella
Add documentation and examples of [`ScheduleLabel`] usage. authored by kpreid
Fix one-character typo in SystemParam docs authored by theotherphil
Diagnostic reset sum ema authored by NonbinaryCoder
Expose `LogDiagnosticsState` authored by hukasu
Add GltfMeshName component and Deref implementations authored by rendaoer
Simplify `bevy_utils` Features authored by bushrat011899
Add debug build option to build-wasm-example authored by oracle58
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
Introduce `CheckChangeTicks` event that is triggered by `World::check_change_ticks` authored by urben1680
Add a despawn_children method to EntityWorldMut and EntityCommands authored by Sigma-dev
New Flappy Bird example authored by tertsdiepraam
Example: projectile targeting moving object authored by kivi
Fix a few typos in bevy_ecs docs authored by theotherphil
Reorganize existing examples into "api"/"usage"/"games" authored by inodentry
Unpin nightly in CI authored by NiklasEi
Add frame_time graph to fps_overlay v2 authored by Zeophlite
19275: spawn_batch creates incorrect relationships when RelationshipTarget is initially empty authored by venhelhardt
Workaround for import diagnostics failing to mention disabled features authored by greeble-dev
Explanation for the '3d shapes' example authored by fallible-algebra
Add debug cycle detection for insert_recursive and remove_recursive authored by theotherphil
Hot patching systems with subsecond authored by mockersf
refactor(utils): move SyncCell and SyncUnsafeCell to bevy_platform authored by atlv24
refactor(render): move WgpuWrapper into bevy_utils authored by atlv24
Make `SubCameraView` into a new primitive shape authored by ecoskey
Mention in .add_observer() docs that first parameter must be a Trigger authored by theotherphil
Render assets diagnostics authored by hukasu
doc(render): fix incorrectly transposed view matrix docs authored by atlv24
Meshlet BVH Culling authored by atlv24
Update add flake.nix example authored by Myxogastria0808
Fix `EntityCloner` replacing required components. authored by eugineerd
Update .entry() docs to show both insert-then-modify and modify-or-insert examples authored by theotherphil
Color interpolation in OKLab, OKLCH spaces for UI gradients authored by ickshonpe
chore:added compiler_error!() for additional description to vague error authored by DeveloperMindset123
Adding interaction states for headless widgets. (ui only) authored by viridia
`box_shadow` example with adjustable settings authored by oracle58
Fix custom relations panics with parent/child relations authored by HeartofPhos
UI leaf node styling and scrollbars authored by andrewzhurov
Image Node Rotation authored by hukasu
Test threads in ci doc test authored by hukasu
SpatialListener now requires a Transform authored by Wuketuke
bevy_render: disable GpuPreprocessingSupport for GL backend authored by jakobhellermann
Enable state scoped entities by default authored by mockersf
Use `SlotMap`s to store systems and system sets in `Schedule`s authored by ItsDoot
Fix spawn tracking for spawn commands authored by SpecificProtagonist
Fix EntityMeta.spawned_or_despawned unsoundness authored by SpecificProtagonist
Issues Opened this week
spawn_batch creates incorrect relationships when RelationshipTarget is initially empty authored by venhelhardt
Cannot build a runtime observer system using a closure authored by Stumblinbear
Grid alignment ergonomics pitfall authored by benfrankel
Explain how to use `ScheduleLabel`s in `bevy_ecs` authored by kpreid
Multiple types have conflicting/confusing type names. authored by Atlas16A
Shader source code is avalible for users authored by Bcompartment
Support hotpatching systems authored by janhohenheim
Using a raw `Camera` component is a footgun authored by alice-i-cecile
Required Component with higher specificity should "win" regardless of order authored by Zeenobit
Cannot specify correct main-world entity ID for two render-world entities extracted from the same main-world entity. authored by maaku
DynamicTupleStruct does not mirror the hashability of its underlying type authored by UkoeHB
Support obtaining the curve of AnimatableCurve authored by MushineLament
Meshlet render incorrectly in deffered mode authored by klownie
`EntityCloner` has no concept of required components after configuration which may have surprising effects depending on the target archetype authored by urben1680
Examples that modify gltf materials are broken authored by rparrett
`Component` derive macro does not work with `#![feature(default_field_values)]` structs authored by yackimoff
Entities with transparent materials that share the same mesh use the wrong material when GPU preprocessing is off authored by jf908
Inconsistent Behavior with Required Components authored by Zeenobit
Panic when calling spawn_batch with an OnAdd observer which spawns entities authored by andrewhickman
DualSense Adaptive Triggers Support authored by Bcompartment
#[entities] should error when put on a enum variant authored by mirsella
iOS apps capped at 60 fps authored by arcln
Children not updated correctly when spawning ChildOf components using World::spawn_batch authored by andrewhickman