
Volumetric Clouds, Pointclouds, and Zoned Audio
2025-10-06
With 0.17's release out we're into 0.18 development! Kicking off the development cycle with two new working groups focused on ergonomics:
- font ergonomics
- Async ECS ergonomics
As usual, many crates are bumping releases for 0.17, so we'll only explicitly be mentioning the ones that are new or have significant changes beyond the 0.17 compatibility release in the crates section this week.
Easy Screenshot Plugin
Taking screenshots is important for any game marketing, including Steam pages, social media posts, Bevy release notes, and even This Week in Bevy!
#21235 introduces a new screenshot plugin to the bevy_dev_tools.
Add the EasyScreenshotPlugin
and configure the controls to press a key and get a new screenshot from your running application!
Remove Systems from Schedule
#20298 adds the ability to remove systems from a Schedule
with remove_systems_in_set
. For most uses, RunCondition
s are still the right approach, since removing a system will cause a schedule to get rebuilt. However removing a system will remove the cost of the RunCondition
as well.
schedule.remove_systems_in_set(my_system, ScheduleCleanupPolicy::RemoveSystemsOnly);
ClearColor Solari
#21350 adds the ability to use ClearColor
with Solari.
AnimationTarget split
AnimationTarget
is a Component
that currently contains the AnimationPlayer
Entity, and the AnimationTargetId
. #20771 changes this to split the information into two components: AnimatedBy
and AnimationTargetId
.
- The
AnimatedBy(Entity)
component is placed on the Entity being animated, and links to a different Entity with theAnimationPlayer
. - The
AnimationTargetId(Uuid)
component holds a uuid, typically built from the name hierarchy of bones.
Together, this means different AnimationPlayer
s can have AnimationClip
s that target the same AnimationTargetId
, and the AnimatedBy
component can switch between them at runtime.
That is: Bones have ids through AnimationTargetId
, and the choice of which AnimationPlayer
controls the bone lives in AnimatedBy
.
Enable prepass and shadows
#20999 introduces two new configurable functions to the Material
traits:
enable_prepass
enable_shadows
These control whether or not the prepass or shadows are enabled for a given Material
.
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.

Rusty Puzzles
showcase
A first 2d puzzle Bevy game. Levels are JSON files, storing entities and their coordinates.
Source is available.

Custom Level Editor
showcase
basically everything is done through individual png files, 1 png where every pixel color represents a tile/entity/etc, another set of pngs for tiles, each having ‘rules’ in the center
The goal is to decouple level layout from detailing and biomes, so every time you play every level could get randomized between any of the available biomes

Fields of Aaru
showcase
A Bevy game 3 years in development. This YouTube short gives an overview of the game and its mechanics.




Mercator Release Video
showcase
Mercator is set to release on November 1st. This is the release video.
Items are more than their sell value in this shopkeeping game. Run shops, hire workers, haggle for profit, and dominate ancient global trade from Muziris to Rome.

Potree pointclouds
showcase
Using potree-rs, to build a feature for bevy_pointcloud that can load potree point clouds.

Zone Audio
showcase
Mood zone audio working with bevy_seedling. Sensors and marker components added to a scene using skein


Crates
New releases to crates.io and substantial updates to existing projects

soft_ratatui 0.1
crate_release
soft_ratatui is a pure software renderer for ratatui, with no terminal or GPU required.
egui
integration provided byegui_ratatui
.bevy_ratatui
integration allows you to turn an existing terminal app built with bevy_ratatui into a native or web app.

uiactivity_ios_rs
crate_release
uiactivity_ios_rs is a small crate to share text in iOS, with a Bevy demo.

bevy_window_as_ui_root
crate_release
bevy_window_as_ui_root spawns windows as independent UI roots. Ideal for debug widgets!
app.add_plugins(WindowAsUiRootPlugin);
commands.spawn((
WindowAsUiRoot,
BackgroundColor(Color::WHITE),
children![(
Text::new("Hello World!"),
TextColor(Color::BLACK),
)],
));
Insert the WindowAsUiRoot
component on an entity and this plugin will:
- Insert
Node
,Window
, andCamera
components if they don't already exist. - Connect the camera to the root node and window.
- Automatically resize the window to match the root node's layout size (if it is auto or fixed).

Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
Hooks and Observers in Bevy 0.17
educational
A dive into the hooks and observers APIs as well as an overview of the Observers changes in Bevy 0.17
Fix crash with RenderDiagnosticsPlugin on mac authored by akimakinai
Re-export disqualified::ShortName from bevy_utils authored by cBournhonesque
run codeql on PRs to automatically detect security vulnerabilities authored by mockersf
Remove redundant `$arg: ident` of the `impl_typed_function` macro authored by Mysvac
Fix footgunny `MeshPlugin` export authored by janhohenheim
Make Entity construction more ergonomic authored by Shatur
Rename "raw" in entity methods into "row" authored by Shatur
Add conversion from DebugName to Cow<'static, str> authored by cBournhonesque
UI stack partition authored by ickshonpe
easy screenshot plugin authored by mockersf
Allow querying multiple components from FilteredEntityMut authored by cBournhonesque
Change `bevy_math` to use `inline` instead of `inline(always)` authored by greeble-dev
Remove systems from schedule authored by hymm
Fix https / http asset loader on WASM authored by alice-i-cecile
Add list of supported KHR extensions to bevy_gltf's docs authored by jf908
Make `DirectionalLight` `Copy` authored by janhohenheim
Add additional FixedHasher details in HashSet and HashMap docs authored by insprac
Make run_fixed_main_schedule public authored by dubrowgn
disable macos/ios check for clustered decals authored by robtfm
Replace `feature(doc_auto_cfg)` with `feature(doc_cfg)`, part 2 authored by mockersf
Replace `feature(doc_auto_cfg)` with `feature(doc_cfg)`. authored by kpreid
Register unit type alongside the other primitives authored by MichalGniadek
Remove parking_lot dependency authored by james7132
Fix the index values in the comments authored by baozaolaoba-top
Add closure-based EntityEvent triggers authored by cart
Remove `offset` argument from `TrackedRenderPass::set_index_buffer` authored by akimakinai
Delete `Callback` and use observers to control widgets for 0.17 authored by viridia
BufferSlice cleanup authored by akimakinai
Delete animation graph migration code. authored by andriyDev
bevy_render: improve panic message when render graph node doesn't exist authored by jakobhellermann
Update `cargo-binstall` to v1.15.6 authored by BD103
Remove empty DevToolsPlugin authored by dloukadakis
fix updatemode::reactive authored by robtfm
Split `AnimationTarget` into two components authored by greeble-dev
make Prepass/ShadowsEnabled methods on Material authored by ecoskey
Fix typo in `Task` docs authored by rparrett
Fix documentation for shared method in BevyManifest authored by samoylovfp
Exclude ICEing example from doc scrape authored by janhohenheim
Add From impls for Aabb and Aabb3d authored by atlv24
clustered decals docs: macOS and iOS are no longer restricted authored by ChristopherBiscardi
Solari: Support clear color authored by JMS55
Solari: Fix world cache update using last frame's light tiles due to incorrect pass ordering authored by JMS55
`font_count` method authored by ickshonpe
Avoid a "RefCell already borrowed" error with WINIT_WINDOWS authored by ejrh
Implement `Reflect` for `CameraOutputMode` authored by beicause
Reexport `Entry` from `indexmap` crate authored by VasanthakumarV
Use slider precision to format feathers slider label authored by doup
Remove unnecessary calls to `world.flush()` authored by WaterWhisperer
fix typo in viewport_node example authored by df51d
Relax deferred UnsafeWorldCell visibility authored by CorvusPrudens
Fix u32 overflow when window is resize authored by baozaolaoba-top
Fixed fog contribution for point and spotlights authored by JeroenHoogers
Assorted polish for lib.rs authored by xyrar
fix: query `UiGlobalTransform` instead of `GlobalTransform` authored by df51d
set spawn_despawn on the correct entity when despawning authored by janis-bhm
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 WindowIcon component authored by TeamDman
Allow users to configure the maximum number of joints and morph weights used in models authored by doceazedo
Implementation of Dynamic Plugins authored by radiantgurl
Add optimized is_in_half_space_identity and contains_aabb_identity authored by Saratii
Support for customized `RenderPlugin` implementations. authored by siennathesane
Add option to make relationships persist even when they contain no entities authored by AbelToy
Make Radio Button behaviour modular and consistent with other widgets authored by PPakalns
Filter(-map) hiearchies when iterating descendants authored by codaishin
Virtual geometry: Upgrade deps, allow 256 vertices authored by JMS55
Remove reinhard_extended authored by janhohenheim
Add more configuration options to fps overlay authored by afonsolage
New text features authored by ickshonpe
Allow using short type names for asset processors. authored by andriyDev
Improve bloom and add option to use faster but lower quality bloom authored by beicause
Store resources as components on singleton entities (v2) authored by Trashtalk217
Allow specifying view target format in cameras authored by beicause
Solari specular material support authored by JMS55
Improve solari DI quality authored by SparkyPotato
Replace system authored by hymm
Update npm test dependencies authored by mockersf
Atmosphere occlusion and PBR shading authored by mate-h
Issues Opened this week
Can not run on RISC-V platform, surface configuration failed: incompatible window authored by DSOE1024
Add option to make relationships persist even when they contain no entities authored by Freyja-moth
Add gamepad support for feathers / headless widgets authored by alice-i-cecile
Make RadioButtons and RadioGroup more flexible authored by alice-i-cecile
Improve docs for installing dioxus-cli: needs --locked parameter authored by alice-i-cecile
Fallback asset paths authored by Freyja-moth
Reflection of references is broken in bevy_reflect 0.17 authored by oliver-dew
Compile failure when building for Alpine Linux: static asound library requested authored by maxwell-kalin
ComputedNodeTarget should not be limited to camera authored by MushineLament
Expose IndexMap::Entry in bevy_ecs authored by cBournhonesque
Provide a reference to the inserted component in ON_REPLACE observer authored by cBournhonesque
Loading assets is ambiguous between the source asset and the processed asset. authored by andriyDev
Move `EntityEvent::event_target` to `EntityTargetTrigger` authored by mrchantey
Allow users to customise the colors of FrameTimeGraph authored by Freyja-moth
Crash with WGSL `textureLoad` from depth textures is not supported in GLSL authored by Rydwxz
track_location shows spawn location as despawn location authored by akimakinai
Panic when runing bevy with RenderDoc if wayland enabled: Vulkan driver does not support VK_KHR_wayland_surface authored by beicause
Docs for DevToolsPlugin authored by akimakinai
clear_children vs. despawn_children: a beginner's trap authored by beholdnec
Panic when closing window due to `CursorIcon` entity missing authored by jakobhellermann
Add Ease to Transform authored by julcst
Inform on fps_overlay example it requires `bevy_dev_tools` feature authored by afonsolage
Visibility Range example doesn't work in webgl2 authored by IceSentry
Auto reflect causes compiler error when `auto_register` is not enabled authored by Freyja-moth
Web Assets feature: Some way to set Headers for requests authored by laundmo
Grow font atlases instead of creating new ones authored by rparrett
Add impl From<Uuid> for Handle authored by JMLX42
Handling Picking Events for Pixel Art Games authored by wandbrandon
Allow using shaders (through Material2D or similar) with DirectionalLightTexture authored by laundmo
`bevy_platform` depends on `getrandom` but doesn't need to authored by kpreid
Multi-GPU Support authored by tychedelia
Wayland dependencies are not reflected properly in linux_dependencies.md authored by james7132
More glam constants for accessing neighbors authored by ChristopherBiscardi
Components with required disabling components are hard to query authored by chescock
Stencil support: Change CORE_3D_DEPTH_FORMAT to Depth24PlusStencil8 authored by raketenben
Dynamic lifecycle observers cannot be described in user space authored by CorvusPrudens
FrameTimeGraph, even disabled, crashes wasm on load (FrametimeGraphMaterial) authored by analytik
Shrink default feature set dramatically authored by alice-i-cecile
Web Assets don't cache DNS, causing excessive DNS queries can lead to failures authored by laundmo
New Event/Observer API is unfriendly to Entity-like types authored by Zeenobit