Bevy Engine Changes — June 2026
Monthly tracking page for Bevy engine main-branch changes. Sister page to bevy-migration-2026-06.
2026-06-02 engine changes worth tracking
Scenes — ScenePatchInstance queue bug fix
- #24474 MERGED (cart, Jun 2, 0.19, A-Scenes, C-Bug). Fixes #24320 — queued scenes incorrectly used
ScenePatchInstanceinstead ofQueuedScenesdirectly, causing scene spawning failures.^[https://github.com/bevyengine/bevy/pull/24474] - Solution: Use
QueuedScenesresource directly instead ofScenePatchInstancefor queued scene handling. Reviewed by laundmo.
Rendering — Double-sided normals for negative scale meshes
- #24395 MERGED (issam3105, Jun 2, merged by mockersf, A-Rendering, C-Bug, D-Shaders). Fixes incorrect PBR lighting for double-sided meshes with negative-scale transforms.^[https://github.com/bevyengine/bevy/pull/24395]
- Root cause: #8859 fixed culling for single-sided glTF materials by detecting inverted scale in the loader, but double-sided materials still had reversed
front_facingfrom negative-scale winding because culling was disabled. - Solution: Added winding-corrected front-facing helper in the PBR shader path.
- Testing: Khronos NegativeScaleTest validates fix; NormalTangentMirrorTest and NormalTangentTest verify non-regression.
ECS — Pass panics to fallback error handler
- #24240 MERGED (SpecificProtagonist, Jun 2, merged by alice-i-cecile). Significant change: 457 additions / 103 deletions, 26 commits.^[https://github.com/bevyengine/bevy/pull/24240]
- Objective: Panics (from engine or user code) no longer crash the entire app. Instead, they are handed to
FallbackErrorHandler, making error handling user-configurable. - Philosophy: Inspired by Godot’s “games should not crash” policy. Unity and Unreal similarly catch exceptions from user code and continue.
- Not enabled by default — user must opt in. Does NOT work on
no_std. - Fixes: #19109, #7434.
- Future work: Use per-system error handlers (e.g.
queue_handled) instead of fallback; recover remaining commands in buffer after panic.
CI/Dependencies
- #24480 MERGED (dependabot). Bump zizmorcore/zizmor-action 0.5.5 → 0.5.6.^[https://github.com/bevyengine/bevy/pull/24480]
- #24478 MERGED (dependabot). Bump crate-ci/typos 1.46.1 → 1.46.2.^[https://github.com/bevyengine/bevy/pull/24478]
0.19 milestone status
- 494/500 (98.8%), 6 open. Up from 492/499 (98%, 7 open) on Jun 1.
- ScenePatchInstance fix (#24474) is the only 0.19-tagged PR from this batch.
- rc.2 (May 22) still latest pre-release. With only 6 open items, 0.19 final is imminent.
2026-06-03 engine changes worth tracking
Rendering — Vertex buffer compression (MAJOR)
- #21926 MERGED (beicause, Jun 3, merged by alice-i-cecile, A-Rendering). Resolves #21902. 2251 additions / 433 deletions, 73 commits, 52 files changed. 7 months in review (opened Nov 2025).^[https://github.com/bevyengine/bevy/pull/21926]
- Objective: Reduce GPU vertex buffer size transparently.
- Solution:
attribute_compressionfield onMesh,mesh_attribute_compressiononGltfLoaderSettings. CPU-side mesh still uses Float32; data is automatically compressed at GPU upload time. - Compression formats: Normal/tangent → octahedral encoded Unorm16x2. UV0/UV1/joint weight/color → Unorm16 or Float16. Unorm8x4 for vertex color when HDR not needed.
- API:
Mesh::compressed_mesh()pre-builds compressed mesh. GltfLoader can opt-in to compression. Also adds u16 index conversion. - Testing:
many_cubes,many_foxes,many_morph_targetswith--vertex-compressionfor 3D;bevymarkwithsprite_meshfor 2D.
Rendering — Meshlet material pipeline optimization
- #23794 MERGED (CrazyRoka, Jun 3, merged by alice-i-cecile, A-Rendering, +155/-149).^[https://github.com/bevyengine/bevy/pull/23794]
- Root cause:
prepare_material_meshlet_meshes_main_opaque_passandprepassperformed expensive pipeline computations for every meshlet instance before checking if the resultingpipeline_idwas already cached. - Fix: Check cache first. Heavy computation only runs on cache miss.
- Impact: CPU usage drops from 52% → 6.7% in
many_meshlet_materialsstress test with--unique-materials.
Rendering — glTF clearcoat texture propagation
- #24514 MERGED (issam3105, Jun 3, merged by cart, 0.19 milestone, A-Rendering, D-Straightforward, +4/-0).^[https://github.com/bevyengine/bevy/pull/24514]
- Bug: glTF
ClearCoatmaterials where texture was ignored when converting toStandardMaterial. “Partial coating” column rendered as fully coated. - Fix: Propagate glTF clearcoat texture to StandardMaterial.
- Tested: Khronos ClearCoatTest.
Rendering — Transmission roughness IOR scaling
- #24453 MERGED (A-Rendering). Corrects PBR transmission roughness scaling by Index of Refraction.
Rendering — TemporaryRenderEntity generalized
- #24419 MERGED (A-Rendering). Generalises
TemporaryRenderEntityoverAppLabelfor more flexible render pipeline infrastructure.
Rendering — SMAA LUT placeholder fix
- #24398 MERGED (A-Rendering). Fixes placeholder SMAA lookup tables.
Rendering — Saturation color space preservation
- #24413 MERGED (A-Rendering). Preserves color space on Saturation changes (consistency with Hue and Luminance traits).
ECS — DetectChanges this_run and last_run
- #24496 MERGED (akriegman, Jun 2, merged by alice-i-cecile, A-ECS, D-Trivial, +26/-0).^[https://github.com/bevyengine/bevy/pull/24496]
- New API:
this_run()andlast_run()methods onDetectChangestrait. - Use case: Precise per-system change detection. Example:
fn is_awake<T>(thing: Ref<T>) -> bool { thing.is_changed() || thing.last_changed() == thing.last_run() }. - Note: If Bevy switches to u64 ticks in the future,
this_run()may become unnecessary.
ECS — resource_exists_and system condition
- #23260 MERGED (Satellile, Jun 2, merged by alice-i-cecile, A-ECS, C-Feature, D-Straightforward, +54/-0).^[https://github.com/bevyengine/bevy/pull/23260]
- New API:
resource_exists_and— a system condition closure that checks resource existence with a predicate.
ECS — DeferredWorld::trigger caller tracking
- #24485 MERGED (SpecificProtagonist, A-ECS, D-Trivial). Tracks caller information for
DeferredWorld::trigger.
ECS — CommandQueue warning-on-drop silencing
- #24347 MERGED (A-ECS). Silences false-positive warning when
CommandQueuedrops with un-applied delayed commands.
App — define_label! interner_name removal (BREAKING)
- #24445 MERGED (kpreid, Jun 3, merged by alice-i-cecile, A-App, D-Macros, +34/-20). Breaking change.^[https://github.com/bevyengine/bevy/pull/24445]
- Change:
interner_nameargument removed fromdefine_label!()macro. Static interner moved insideintern()method. - Companion: #24444 adds documentation for
define_label!. - Also adds: Trailing comma support.
Windowing — Wayland fullscreen fallback
- #22792 MERGED (francisdb, Jun 2, merged by alice-i-cecile, A-Windowing, C-Bug, O-Linux, +48/-32, X-Contentious).^[https://github.com/bevyengine/bevy/pull/22792]
- Bug: Exclusive fullscreen apps would not start on Wayland because no monitor was available (Fixes #18556).
- Fix: Log warning and fall back to borderless fullscreen.
Gameplay — TilemapChunkTileData Y-down helper
- #24391 MERGED (A-Gameplay). Helper function to create
TilemapChunkTileDatafrom Y-down tile data.
Code quality
- #24475 — Fix all clippy lints.
- #24484 — Clippy: Allow
bevy_ptr::deconstruct_moving_ptrto usecore::mem::forget. - #24206 — Box large variants in some Errors to reduce size and avoid
clippy::result_large_err. - #24171 — Reduce size of
Typed::type_info(). - #24441 — Add missing
#[derive(Reflect)]to UI crates.
Bug fixes
- #24454 — Fix
rgb_to_hsvreturning a negative hue. - #24457 — Account for
MouseScrollUnitinprojection_zoomexample.
Docs
- #24446 — Fix documentation typos.
- #24444 — Document
define_label!sufficiently that it can be used.
0.19 milestone status
- 496/506 (98.0%), 10 open. Scope grew from 503 to 506 (3 new items Jun 4).
- New 0.19 items: bevy_dev_tools RC missing (#24525), bsn inline macros (#24524), 0.19 Release Notes: Next Generation Scenes (#24523).
- rc.2 (May 22) still latest pre-release. Milestone scope continues growing; all open items are docs/bugfixes.
2026-06-04 engine changes
Rendering — Shader import regression fix (from vertex buffer compression)
- #24520 MERGED (beicause, Jun 4, merged by alice-i-cecile, A-Rendering, C-Bug, P-Regression, D-Straightforward, +20/-2). Fixes regression from #21926 (vertex buffer compression merged Jun 3).^[https://github.com/bevyengine/bevy/pull/24520]
- Bug: Vertex buffer compression (#21926) broke shader imports in deferred rendering, Solari pathtracer, and meshlet pipelines.
- Fix: Corrects shader util octahedral import paths.
- Testing: Tested deferred_rendering, atmosphere, and meshlet examples.
- Severity: P-Regression — functionality that worked before vertex buffer compression no longer worked. Quick fix merged within hours.
New 0.19 milestone items
- #24525 OPEN (Shatur, Jun 4, A-Build-System, C-Bug).
bevy_dev_toolsdidn’t receive an RC release — build/packaging issue.^[https://github.com/bevyengine/bevy/issues/24525]- #24524 OPEN (cart, Jun 4, A-Scenes, C-Usability, D-Straightforward, S-Ready-For-Final-Review). bsn: support inline macros in field value position.^[https://github.com/bevyengine/bevy/pull/24524]
- #24523 OPEN (cart, Jun 4, A-Scenes, C-Docs, D-Modest). 0.19 Release Notes: Next Generation Scenes — release note documentation for BSN/scene changes.^[https://github.com/bevyengine/bevy/pull/24523]
2026-06-05 engine changes
Scenes — BSN inline macros in field value position
- #24524 MERGED (cart, Jun 4/5, merged by merge-queue, A-Scenes, C-Usability, D-Straightforward, 0.19 milestone). Support inline macros in
bsn!field-value position.^[https://github.com/bevyengine/bevy/pull/24524]- Before: Macros in field-value position required extra
{}wrapping:bsn! { Foo { value: {vec![ 100, 200 ]} } }- After: Macros can be used directly:
bsn! { Foo { value: vec![ 100, 200 ] } }- Impact: QoL improvement for BSN users. Reviewed by alice-i-cecile and viridia. X-Uncontroversial.
Text/UI — Font asset resolution and change detection (SIGNIFICANT)
- #24362 MERGED (ickshonpe, Jun 5, merged by alice-i-cecile, A-Text, A-UI, C-Bug, M-Deliberate-Rendering-Change, M-Migration-Guide, 0.19 milestone, +237/-104, 43 commits, 13 files).^[https://github.com/bevyengine/bevy/pull/24362]
- Bug fixes: (1) Font source resolution fails when asset not yet loaded, no retry on next frame. (2) Removed font assets not unloaded from Parley font database. (3) Inconsistent font lookup results with Handles.
- Solution: Dual font registration (asset-specific alias + family name),
set_changedon TextFont for chain detection, font database rebuild on unload, generic family remapping.- Migration: Has
M-Migration-Guidelabel. Migration guide added at_release-content/migration-guides/font_from_bytes.md.- Fixes: #24356.
Docs — custom_phase_item whitespace
- #24529 MERGED (Aceeri, Jun 4, C-Docs, C-Examples). Minor whitespace fix in custom_phase_item docs.
New 0.19 milestone open items
- #24530 OPEN (Elabajaba, Jun 5, A-Rendering, C-Docs, M-Migration-Guide). Rename
PbrNeutraltonemapper toKhronosPbrNeutraland improve docs.^[https://github.com/bevyengine/bevy/pull/24530]- #24526 OPEN (cart, Jun 4, A-Scenes, C-Usability).
bsn:support field name shorthand.
0.19 milestone status
- ~498/509 (~97.8%), 8 open. Scope grew from 506 → ~509 (new items: #24530 PbrNeutral rename, #24526 BSN field shorthand, possibly others).
- rc.2 (May 22) still latest pre-release. Milestone scope continues growing with docs/BSN/refactoring items.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bevy-game-dev-2026-05 — May 2026 engine changes (complete).
- bevy-rendering — Bevy rendering system concepts.
- bevy-0-19-ui-feature-modularization — 0.19 UI feature拆分.
- bevy-ui-text — Bevy UI text system concepts.
2026-06-08 engine changes
App — HierarchyPropagatePlugin remove-insert fix
- #24550 MERGED (ickshonpe, Jun 8, merged by alice-i-cecile, 0.19 milestone, A-App, C-Bug, D-Straightforward, +30/-1). Fixes #24549.^[https://github.com/bevyengine/bevy/pull/24550]
- Bug: When a component with
Propagate<C>was removed and reinserted in the same frame,HierarchyPropagatePlugin’supdate_sourcewould still remove the propagated value because it didn’t check whether the propagation component was still present.- Fix: Added
With<Propagate<C>>query inupdate_sourceto skip removal when the component is still present after reinsert.- Testing: New test
hierarchy_propagate_remove_and_reinsert_in_same_frame.
ECS — SystemHandle run support
- #24527 MERGED (hxYuki, Jun 8, merged by alice-i-cecile, 0.19 milestone, A-ECS, C-Usability, D-Straightforward, +40/-5, 3 files changed).^[https://github.com/bevyengine/bevy/pull/24527]
- Objective:
SystemHandlewas introduced in #24165 (Tracked one-shot systems) but lackedrun_systemsupport. This PR fills the gap.- Solution: Implements
From<SystemHandle<I, O>>andFrom<&SystemHandle<I, O>>forSystemId<I, O>usingSystemHandle::entity()andSystemId::from_entity(). Also makesCommands::run_system*andcommands::command::run_system*acceptimpl Into<SystemId>.- Usage:
world.run_system(handle)orworld.run_system(&handle).
UI — Feathers scrollbar and list view
- #24544 MERGED (viridia, 0.19 milestone, A-UI, C-Feature, D-Modest, M-Release-Note).^[https://github.com/bevyengine/bevy/pull/24544]
- New Feathers UI widgets: scrollbar and list view components for the Bevy 0.19 Feathers widget library.
- Tagged M-Release-Note — will be highlighted in the 0.19 release blog.
- Closes the long-open milestone item #24092.
0.19 milestone status
- ~514/520 (~98.8%), ~3 open. Down from 511/517 (6 open) on Jun 7. 3 milestone items merged today (#24550, #24527, #24544). Remaining items likely docs-only.
- rc.2 (May 22) still latest pre-release. 0.19 final release is imminent — only docs items likely remain.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bevy-game-dev-2026-05 — May 2026 engine changes (complete).
- bevy-rendering — Bevy rendering system concepts.
- bevy-0-19-ui-feature-modularization — 0.19 UI feature拆分.
- bevy-ui-text — Bevy UI text system concepts.
2026-06-06 engine changes
Rendering — PbrNeutral → KhronosPbrNeutral rename (BREAKING)
- #24530 MERGED (Elabajaba, Jun 6, merged by cart, 0.19 milestone, A-Rendering, C-Docs, M-Migration-Guide, +17/-14, 7 files changed).^[https://github.com/bevyengine/bevy/pull/24530]
- Objective:
PbrNeutralwas poorly named — implies it’s a good default neutral tonemapper, but it’s specifically the Khronos PBR Neutral tonemapper and not recommended for general use.- Change:
PbrNeutral→KhronosPbrNeutralacross all modules. Docs improved to describe visual characteristics and recommend against using it as a default.- Labels: M-Migration-Guide — migration guide included.
- Previously tracked as OPEN in the 06-05 section. Now merged.
Scenes — bsn! autocomplete fix (loose parsing)
- #24519 MERGED (cart, Jun 6, merged by merge-queue, 0.19 milestone, A-Scenes, C-Bug, +132/-84, 3 files changed).^[https://github.com/bevyengine/bevy/pull/24519]
- Root cause: #24174 (EntityTemplate in scene functions) broke
bsn!autocomplete in function arguments by using strict Rust parsing (parse()), which fails on incomplete/invalid syntax during typing.- Solution: Implement loose scope-aware TokenStream splitting on top-level
,separators (handles nested(),[],{},<>correctly). Strict parsing only applied after arguments are separated.- Impact: Fixes IDE autocomplete for
bsn!macro arguments. Also faster — avoids redundant strict parsing that the compiler will do anyway.
Text/UI — update_editable_text_layout scheduling fix
- #24538 MERGED (ickshonpe, Jun 6, merged by cart, 0.19 milestone, D-Trivial, A-Rendering/A-Text/A-UI, 1 file changed).^[https://github.com/bevyengine/bevy/pull/24538]
- Fixes: #24537 —
update_editable_text_layoutwas not properly ordered beforeAssetEventSystems, causing potential text layout issues with asset loading timing.- Solution: Explicit scheduling constraint.
Docs — resources_as_components migration guide update
- #24513 MERGED (kfc35, Jun 6, merged by merge-queue into
release-0.19.0branch, C-Docs, A-ECS, +7/-2, 1 file changed).^[https://github.com/bevyengine/bevy/pull/24513]- Content: Adds immutable resources workarounds to the
resources_as_componentsmigration guide. Preserves community-contributed workarounds from #24424 comments.- Note: Merged directly into the release branch, not main.
0.19 milestone status
- ~502/507 (~98.8%), 5 open. Down from ~498/509 (~97.8%, 8 open) on Jun 5. 3 milestone items merged today.
- Remaining 5 open items (all docs/BSN-polish):
- #24526 — bsn: support field name shorthand (cart, A-Scenes, C-Usability)
- #24523 — 0.19 Release Notes: Next Generation Scenes (cart, A-Scenes, C-Docs)
- #24506 — Revise partial_bindless release note (alice-i-cecile, C-Docs)
- #24464 — bsn: improve docs and add tests (A-Scenes, C-Code-Quality, C-Docs)
- #24299 — move bsn!/bsn_list! macro docs to bevy_scene crate re-export location
- rc.2 (May 22) still latest pre-release. No blocking bugs remain — 0.19 final release is imminent.
2026-06-07 engine changes
Scenes — SceneList for SmallVec
- #24542 MERGED (Shatur, Jun 7, merged by alice-i-cecile, 0.19 milestone, A-Scenes, C-Usability, D-Straightforward, 1 commit).^[https://github.com/bevyengine/bevy/pull/24542]
- Objective: Allow
SmallVecto be used as aSceneList, enabling stack-allocated scene lists.- Impact: QoL — scenes with few elements can avoid heap allocation. Reviewed by amtep, mardzie.
Scenes — Scene for Option
- #24536 MERGED (0.19 milestone, A-Scenes, C-Usability, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24536]
- Objective: Implement
Scenetrait forOption<P>whereP: Scene.- Impact: Optional scene values now work natively in BSN declarations without workarounds.
Scenes — 0.19 Release Notes: Next Generation Scenes
- #24523 MERGED (cart, Jun 7, merged by alice-i-cecile into
release-0.19.0branch, A-Scenes, C-Docs, D-Modest, 5 commits).^[https://github.com/bevyengine/bevy/pull/24523]- Content: Official 0.19 release notes for BSN/Scene changes. Covers BSN syntax, SceneComponent, scene layering, scene assets and caching.
- Significance: This is the release blog content for the “Next Generation Scenes” section — confirms BSN is a headline feature of 0.19.
- Reviewed by: ChristopherBiscardi, alice-i-cecile.
UI — MenuButton tab navigation fix
- #24539 MERGED (viridia, Jun 6, 0.19 milestone).^[https://github.com/bevyengine/bevy/pull/24539]
- Bug: MenuButton was intercepting tab key events, preventing users from tabbing through other UI elements.
- Impact: UI accessibility fix — tab navigation now works correctly when MenuButton is present.
Text — IME text input wrapping fix
- #24421 MERGED (A-Text, C-Examples, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24421]
- Bug: Fixes #23932 — IME (Input Method Editor) text input wrapping behavior was incorrect.
- Impact: Text rendering fix for CJK input methods. Example-level fix.
New 0.19 milestone open items
- #24541 OPEN (Shatur, Jun 7, A-Scenes, C-Docs, S-Needs-Review). Docs need to be updated after
:→@migration in BSN syntax.^[https://github.com/bevyengine/bevy/issues/24541]
0.19 milestone status
- 511/517 (98.8%), 6 open. Up from ~502/507 (5 open) on Jun 6. 9 items closed, but scope grew by 10 (new docs items added). 6 remaining open:
- #24541 — BSN
:→@docs update- #24526 — bsn: support field name shorthand
- #24506 — Revise partial_bindless release note
- #24464 — bsn: improve docs and add tests
- #24299 — move bsn!/bsn_list! macro docs to re-export location
- #24092 — Feathers scrollbar and list view
- rc.2 (May 22) still latest pre-release. All 6 remaining items are docs/BSN-polish + Feathers UI. No blocking bugs. 0.19 final is imminent.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bevy-game-dev-2026-05 — May 2026 engine changes (complete).
- bevy-rendering — Bevy rendering system concepts.
- bsn — Bevy Scene Notation.
2026-06-09 engine changes
Scenes — BSN docs and tests overhaul (MAJOR DOCS)
- #24464 MERGED (laundmo, Jun 8, merged into 0.19 milestone, A-Scenes, C-Docs, C-Code-Quality, +888/-640, 4 files changed).^[https://github.com/bevyengine/bevy/pull/24464]
- Objective: Improve documentation of
bevy_scene/BSN.- Changes: Removes confusing “Inheritance” concept in favour of caching terminology. Fixes syntax references after
:→@BSN migration (#24367). Cleans up duplication between macro docs and module docs. Unifies syntax snippet into a single table. Various smaller fixes.- Closes: #24299 (move bsn!/bsn_list! macro docs to re-export location), #24540, #24541 (BSN
:→@docs update).- Depends on: #24402 (bsn: fix accidental scene entity deduplication).
- Rendered docs preview: https://share.yadamiel.com/docs/doc/bevy/scene/index.html
Docs — Partial_bindless release note rewrite
- #24506 MERGED (alice-i-cecile, Jun 8, 0.19 milestone, C-Docs, +22/-17, 1 file changed).^[https://github.com/bevyengine/bevy/pull/24506]
- Objective: Original release note tone drifted into marketing register with LLM-standard constructions (“it’s not X; it’s Y”, em-dash asides).
- Solution: Tightened phrasing, cut connective material, added proper conclusion.
CI — typos bump
- #24558 MERGED (dependabot, Jun 8, D-Trivial, C-Dependencies). Bump crate-ci/typos 1.46.2 → 1.47.0. No user-facing impact.
0.19 milestone status
- 519/523 (99.2%), 4 open. Up from ~514/520 (~98.8%, ~6 open) on Jun 8. 5 items closed, 3 new items added to scope.
- 4 remaining open items:
- #24557 — SceneComponent not implicitly added when using .spawn() directly on the scene function (C-Bug, A-Scenes, S-Needs-Investigation)
- #24555 — Add shorthands for setting the severity to ResultSeverityExt (A-ECS, C-Usability, S-Ready-For-Final-Review)
- #24531 — Enum variant doesn’t impl Scene when passed into bsn (C-Bug, A-Scenes, S-Ready-For-Implementation)
- #24526 — bsn: support field name shorthand (S-Blocked, C-Usability, A-Scenes)
- rc.2 (May 22) still latest pre-release. 0.19 final release is imminent.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
2026-06-10 engine changes
Rendering — Beer’s law volume attenuation (SIGNIFICANT)
- #24516 MERGED (issam3105, Jun 9, A-Rendering, C-Bug, D-Straightforward, X-Uncontroversial).^[https://github.com/bevyengine/bevy/pull/24516]
- Bug: Bevy was converting glTF
KHR_materials_volumeattenuationColorwithpow(1.0 - color, E)to reuse fog mathatmospheric_fog(), which under-attenuates transmitted light. Dark volume materials rendered too bright.- Solution: Apply Beer’s law transmittance directly from Khronos Sample Renderer:
transmittance = attenuationColor ^ (transmissionDistance / attenuationDistance). Also fixesthicknessTextureloading (G channel stores thickness, not color — now loaded as linear data).- Testing: Khronos
AttenuationTestandDragonAttenuationassets validated.
Rendering — Anisotropic IBL bend factor fix
- #24515 MERGED (issam3105, Jun 9, A-Rendering, C-Bug, D-Shaders, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24515]
- Bug: Incorrect anisotropic image-based lighting (IBL) bend factor calculation.
Rendering — AmbientLightFlags refactor
- #24509 MERGED (coreh, Jun 9, A-Rendering, C-Code-Quality, D-Modest).^[https://github.com/bevyengine/bevy/pull/24509]
- Objective: Make ambient light consistent with other light sources; pave the way for monochromatic ambient lights.
- Changes: Adds
AmbientLightFlagsbitflags struct. Renamesambient_light_affects_lightmapped_meshestoambient_light_flagsinGpuLights/ WGSLLightsstruct. AddsAMBIENT_LIGHT_FLAGS_AFFECTS_LIGHTMAPPED_MESHES_BITWGSL constant.- Plugs into: #24428 (Minimum Viable Monochromatic Lights) as follow-up.
Rendering — Pipeline constants for materials (NEW FEATURE)
- #24502 MERGED (Visse, Jun 9, A-Rendering, C-Usability, D-Straightforward, X-Uncontroversial).^[https://github.com/bevyengine/bevy/pull/24502]
- Objective: Allow materials to use WGSL pipeline-overridable constants (
overridedeclarations).- Solution: Expose constants in
RenderPipelineDescriptor&ComputePipelineDescriptor. Materials can now specify pipeline constants in theirspecializefunction.- Breaking:
Eqderive removed fromComputePipelineDescriptor,VertexState,FragmentStatedue to new f64 field.
Rendering — Layout/BindGroup heap allocation reduction
- #24503 MERGED (beicause, Jun 9, A-Rendering, C-Performance, D-Straightforward, X-Uncontroversial).^[https://github.com/bevyengine/bevy/pull/24503]
- Objective: Reduce heap allocations in
LayoutCache::getandBindGroupLayoutCache::get.- Impact: Rendering performance micro-optimization.
Scenes — BSN optional scenes and scene lists expansion (0.19 MILESTONE)
- #24565 MERGED (cart, Jun 9, 0.19 milestone, A-Scenes, C-Bug, C-Usability, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24565]
- Objective: Enable
Option-wrapped scenes and scene lists in BSN. #24536 got partway but didn’t supportSceneListorOption<Box<dyn SceneList>>(e.g. for “scene props”).- Bug fix: #24536 introduced a bug — it didn’t register dependencies of the wrapped scene. Fixed here.
- New capability:
Option<Box<dyn SceneList>>now works natively in BSN props. Example:@FeathersButton { @caption: bsn! { Node } }wherecaptionisOption<Box<dyn SceneList>>.
Scenes — Mip map generator material change detection fix (0.19 MILESTONE)
- #24532 MERGED (DGriffin91, Jun 9, 0.19 milestone, A-Assets, A-Rendering, C-Examples, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24532]
- Bug: Large scene mip map generator was triggering material change detection incorrectly.
ECS — ResultSeverityExt shorthands (0.19 MILESTONE)
- #24555 MERGED (cookie1170, Jun 9, 0.19 milestone, A-ECS, C-Usability, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24555]
- Objective: Add convenience shorthands for setting severity levels on
ResultSeverityExt.
ECS — OrderedRelationshipSourceCollection manual placement fix
- #24553 MERGED (UkoeHB, Jun 9, A-ECS, C-Bug, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24553]
- Bug: Manual placement for
OrderedRelationshipSourceCollectionimpls was broken.
Reflection — Register type data by path
- #24551 MERGED (MrGVSV, Jun 9, A-Reflection, C-Usability, D-Macros, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24551]
- Objective: Register type data by path in reflect macro attribute.
Assets — VisitAssetDependencies generic impls
- #24556 MERGED (GroveDG, Jun 9, A-Assets, C-Bug, C-Usability, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24556]
- Objective: Add additional generic implementations of
VisitAssetDependencies.
Assets — Handle tracking on soft removal fix
- #24251 MERGED (larsraph, Jun 9, A-Assets, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24251]
- Bug: Handle tracking was removed upon soft-removal of an asset, causing incorrect asset tracking.
UI — Modal dialog box for Feathers
- #24559 MERGED (viridia, Jun 9, A-UI, C-Feature).^[https://github.com/bevyengine/bevy/pull/24559]
- Objective: Part of #19236. Modal dialog boxes for the Feathers UI framework.
- Significance: Continues the Feathers UI widget expansion — modal dialogs are essential for confirmations, alerts, and editor-like UX.
Input — MouseScrollUnit conversion factor as Resource
- #24512 MERGED (stevehello166, Jun 9, A-Input, C-Feature, D-Straightforward, X-Uncontroversial).^[https://github.com/bevyengine/bevy/pull/24512]
- Objective: Replace hardcoded
SCROLL_UNIT_CONVERSION_FACTORwith a configurableResource.- Impact: Scroll sensitivity can now be customized at runtime.
Color — Okhsla and Okhsva color spaces
- #24137 MERGED (beicause, Jun 9, A-Color, C-Feature, D-Modest).^[https://github.com/bevyengine/bevy/pull/24137]
- Objective: Add
OkhslaandOkhsvacolor representations tobevy_color.- Significance: Extends Bevy’s perceptually-uniform color space support (OkLab/OkLch family).
Rendering — Scene viewer mesh compression + motion blur (example update)
- #24570 MERGED (greeble-dev, Jun 10, A-Rendering, C-Examples, C-Feature, D-Straightforward, X-Uncontroversial).^[https://github.com/bevyengine/bevy/pull/24570]
- Objective: Add mesh compression and motion blur support to the scene viewer example.
glTF — KHR_materials_specular validation
- #24571 MERGED (issam3105, Jun 10, A-glTF, C-Dependencies, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24571]
- Objective: Enable glTF validation for
KHR_materials_specularextension.
Other merged
- #24566 — Update proptest-derive 0.2 → 0.8 (kfc35, A-Rendering, C-Dependencies, C-Testing).
- #24560 — Document gizmos axes colors (samoylovfp, A-Gizmos, C-Docs).
- **#24547, 24545 — sort_unstable + dedup() combos (miguelraz, A-Math, C-Code-Quality, C-Performance).
- #24546 — Remove unwrap from layout/mod.rs (Nuxssss, A-UI, C-Bug).
- #24543 — Fill in doc strings for bevy_asset (amtep, A-Assets, C-Docs).
- #24534 — Update accesskit_winit 0.32 → 0.33 (A-Accessibility, C-Dependencies).
- #24186 — Update guillotiere 0.6.0 → 0.7.0 (A-Assets, C-Dependencies).
0.19 milestone status
- 523/526 (99.4%), 3 open. Up from 519/523 (99.2%, 4 open) on Jun 9.
- #24555 (ResultSeverityExt shorthands) and #24565 (BSN optional scenes) closed from open list.
- New item: bsn: fix name docs (cart, PR open).
- 3 remaining open items:
- #24526 — bsn: support field name shorthand (S-Blocked)
- bsn: fix name docs (PR open, cart)
- Incorrect/Confusing Example in BSN lib docs for Entity Names (issue, Diddykonga)
- All 3 are BSN documentation/polish. No blocking bugs. 0.19 final release is imminent.
- rc.2 (May 22) still latest pre-release.
2026-06-11 engine changes
Scenes — BSN field name shorthand (0.19 MILESTONE, was S-Blocked)
- #24526 MERGED (cart, Jun 10, 0.19 milestone, A-Scenes, C-Usability).^[https://github.com/bevyengine/bevy/pull/24526]
- Objective: Support Rust’s “name shorthand syntax” in
bsn!macro.- Before: Variables had to be explicitly named:
bsn! { Foo { value: value } }- After: Shorthand works directly:
bsn! { Foo { value } }wherevalueis a local variable. Also for props:bsn! { @Foo { @value } }- Internal change: Generated variables now use
__Xformatting everywhere to avoid conflicts with user-defined variables.- Was S-Blocked in previous days. Now merged — unblocks the last major BSN ergonomic feature.
Scenes — BSN name docs fix (0.19 MILESTONE)
- #24575 MERGED (cart, Jun 10, 0.19 milestone, A-Scenes, C-Bug, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24575]
- Fixes #24567 — removes confusing bits that were wrongly copied from a different example.
Docs — Release notes copyediting (0.19 MILESTONE)
- #24577 MERGED (0.19 milestone, C-Docs, D-Trivial, S-Adopt-Me). Copyediting pass on 0.19 release notes.
Rendering — Bindless specular transmission material lookup fix
- #24573 MERGED (issam3105, Jun 10, merged by alice-i-cecile, A-Rendering, C-Bug, D-Straightforward, D-Shaders).^[https://github.com/bevyengine/bevy/pull/24573]
- Bug: Typo in bindless material lookup —
specular_transmissionwas reading through wrong material index in the bindless path.- Fix: Read through the correct
material_indices[slot].materialindex.- Context: Discovered while reading the transmission shader path for upcoming
KHR_materials_dispersionwork.
ECS — Fix non_snake_case on bundle derive
- #22866 MERGED (SOF3, Jun 10, A-ECS, C-Usability, D-Straightforward, D-Macros).^[https://github.com/bevyengine/bevy/pull/22866]
- Fixes #22865 — bundle derive macro generated code that triggered
non_snake_casewarnings for bundle fields. Adds#[allow(non_snake_case)]to the generatedfieldvariable.
ECS — Safety comments audit: unsafe blocks in bevy_ecs (SIGNIFICANT)
- #24488 MERGED (SpecificProtagonist, Jun 10, merged by alice-i-cecile, A-ECS, C-Code-Quality, D-Unsafe, X-Uncontroversial, D-Modest). +539/-361, 15 files changed, 7 commits.^[https://github.com/bevyengine/bevy/pull/24488]
- **Part of 11590 — the ongoing ECS unsafe code safety audit.
- Objective: Remove most
#[expect(unsafe_op_in_unsafe_fn)]blanket suppression attributes from bevy_ecs and replace with explicitunsafe { }blocks with documented safety comments.- Coverage: Processes core bevy_ecs modules across 15 files. Does NOT change runtime behavior — purely improves code auditability.
- Not yet covered:
bevy_ecs::storage,bevy_ecs::query,bevy_ecs::system::system_paramstill have#[expect]exceptions pending future PRs in the #11590 series.- Reviewed by: Trashtalk217 (suggested changes) and alice-i-cecile.
Reflection — type_info module reorganization
- #24576 MERGED (A-Reflection, C-Code-Quality, D-Trivial). Internal module reorganization of
bevy_reflect::type_info.
Other merged
- #24583 — Justify inputs in
multiple_text_inputsexample (A-UI/A-Text, C-Examples, D-Trivial).- #24578 — Rename variable in
custom_loopexample (A-ECS, C-Examples, D-Trivial).
0.19 milestone status
- 🔥 527/528 (99.8%), 1 open item. Down from 523/526 (99.4%, 3 open) on Jun 10.
- Closed today: #24526 (BSN field name shorthand — was S-Blocked), #24575 (BSN name docs fix), #24577 (release notes copyediting).
- 1 remaining open item:
- #24582 — Allow directly writing enums as fields (C-Feature, S-Needs-Triage, newly filed)
- rc.2 (May 22) still latest pre-release. With only 1 open item (a new feature request, not a blocking bug), 0.19 final release could ship at any moment.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
2026-06-12 engine changes
Release — v0.19.0-rc.3
- 🚨 v0.19.0-rc.3 RELEASED (mockersf, Jun 10, commit
bacfcda). Third release candidate for 0.19. 29 community reactions.^[https://github.com/bevyengine/bevy/releases/tag/v0.19.0-rc.3]- Diff from rc.2: v0.19.0-rc.2…v0.19.0-rc.3
- Includes all merges from Jun 8–10: BSN field name shorthand, BSN optional scenes expansion, Beer’s law attenuation, pipeline constants, AmbientLightFlags refactor, Feathers modal dialog, Okhsla/Okhsva, MouseScrollUnit Resource, and more.
ECS — Name heap allocation footgun fix (BREAKING)
- #24544 MERGED (bytemuck, Jun 11, merged by alice-i-cecile, A-ECS, C-Usability, +11/-3).^[https://github.com/bevyengine/bevy/pull/24544]
- Objective: Fix #24465 —
Name::from<&str>always heap-allocates because&str→Stringconversion is required. This was a performance footgun in hot paths like entity spawning.- Solution: Change
impl From<&str> for Nametoimpl From<&'static str> for Name. Static strings avoid the heap allocation entirely.- Breaking: Code that passes non-static
&str(e.g.Name::from(my_string.as_str())) will no longer compile. Must useName::new()or convert toStringfirst.- Reviewed by: alice-i-cecile, with discussion about whether
From<String>is sufficient or ifFrom<Cow<'static, str>>should be added.
glTF — Specular extension parsing fix
- #24580 MERGED (issam3105, Jun 11, merged by alice-i-cecile, A-glTF, C-Bug, D-Straightforward, +51/-48, 3 files).^[https://github.com/bevyengine/bevy/pull/24580]
- Objective: Enable glTF validation for KHR_materials_specular (#24571). Previous parsing didn’t use the typed
material.specular()API exposed by thegltfcrate.- Solution: Read specular properties through the typed
material.specular()API.- Testing: Khronos SpecularTest asset.
Assets — asset_changed import path made public
- #24548 MERGED (YUHAO-corn, Jun 11, merged by alice-i-cecile, A-Assets, C-Usability, D-Straightforward, +1/-1).^[https://github.com/bevyengine/bevy/pull/24548]
- Objective: Fix #24501 — the
asset_changedmodule was private, forcing users to import throughbevy_asset::private.- Solution: Make the existing
asset_changedmodule public. InternalAssetChangesresource remains crate-private.
UI/Text — multiline_text_input example justify menu
- #24584 MERGED (ickshonpe, Jun 11, merged by alice-i-cecile, A-Text, A-UI, C-Examples, +135/-2, 1 file).^[https://github.com/bevyengine/bevy/pull/24584]
- Objective: Add popup menu for changing text justification in the multiline_text_input example.
- Impact: Example-only — no engine API changes.
⚠️ NEW: Resources-as-components regression (3 issues)
- #24591 OPEN (alice-i-cecile, Jun 12, A-ECS, C-Bug, D-Modest, X-Contentious, S-Ready-For-Implementation, 0.19 milestone).^[https://github.com/bevyengine/bevy/issues/24591]
- Issue: Inserting a resource as a component should not make it available as a resource. Current behavior conflates the two roles.
- #24592 OPEN (alice-i-cecile, Jun 12, A-ECS, C-Bug, D-Modest, X-Contentious, S-Ready-For-Implementation, 0.19 milestone).^[https://github.com/bevyengine/bevy/issues/24592]
- Issue: Types can no longer be effectively used as both resources and components. The new resource-as-component feature (#24164) breaks the dual-use pattern.
- #24594 OPEN (alice-i-cecile, Jun 12, A-ECS, C-Bug, D-Modest, P-Regression, S-Needs-Review, 0.19 milestone).^[https://github.com/bevyengine/bevy/pull/24594]
- PR: Proposed fix — move
IsResourceoff the required components path. Makes resources usable as components by treatingIsResourcedifferently from regular required components.- Significance: This is tagged P-Regression — a feature that worked before (using types as both resources and components) no longer works correctly. Could be a release blocker for 0.19 final.
0.19 milestone status
- 527/531 (99.2%), 4 open. Scope grew from 528 → 531 (3 new items). Open count jumped from 1 → 4.
- 4 remaining open items:
- #24594 — Make resources usable as components (PR, P-Regression)
- #24592 — Types can’t be both resources and components (Issue)
- #24591 — Inserting resource as component shouldn’t make it a resource (Issue)
- #24582 — Allow directly writing enums as fields (previously tracked)
- ⚠️ The resources-as-components regression is a potential release blocker. alice-i-cecile has both filed the issues and opened a fix PR (#24594). If this doesn’t merge quickly, 0.19 final may be delayed.
- rc.3 (Jun 10) is latest pre-release. v0.18.1 still tagged “Latest”.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
2026-06-13 engine changes
No PRs merged today. Quiet day on main branch. Activity focused on issue tracking and milestone management.
Dev-Tools — Diagnostic overlay fixes and improvements (MERGED 2026-06-14)
- #24611 MERGED (cart, opened Jun 12, merged 2026-06-14T21:21:27Z, 0.19 milestone, A-Dev-Tools, C-Bug,
diagnostics_overlay.rs+45/-14).^[https://github.com/bevyengine/bevy/pull/24611]- Objective: Fix bugs and improve the diagnostic overlay in
bevy_dev_tools.- Three fixes:
- Click passthrough [critical] — full-screen overlay Node default
Pickableintercepted all clicks, so the overlay (on by default) made lower UI un-interactable;DiagnosticsOverlayPlanenow spawns withPickable { should_block_lower: false, ..Default::default() }.- BSN compat [important] —
DiagnosticsOverlaygained#[derive(Component, Clone)]+impl Default(title: “Diagnostics”, items: empty vec);DiagnosticsOverlayItemgainedClone; now usable inside bsnbsn!macros.- Font config [important] — new
DiagnosticsOverlayStyleResource (title_font_sizePx(12.0)/item_font_sizePx(10.0));init_resourcein Pluginbuild; hardcodedFontSizereplaced.
- API rename: field
diagnostic_overlay_items→items(constructor,new(),fps(),mesh_and_standard_material()) — breaking but dev-tool-only.- Release strategy: cart stated this must ship in 0.19 final (not an RC) because the feature is enabled by default; without the click-passthrough fix it is “pretty broken”.
- Review: jbuehler23 asked why not a Feathers widget; cart answered to avoid pulling in feathers/scene dependencies and keep it lean. kfc35 suggested syncing the rename in doc examples (adopted).
- See diagnostic-overlay for the full component inventory + history, and cart for the author.
Notable non-milestone issues opened today
- #24612 OPEN (MalekiRe, Jun 13, A-ECS, C-Feature, S-Needs-Triage). Add hooks after relationship hooks.^[https://github.com/bevyengine/bevy/issues/24612]
- #24610 OPEN (viridia, Jun 13, A-UI, C-Bug, D-Straightforward, X-Uncontroversial, 0.20 milestone). Listview scrollwheel scrolling is very slow.^[https://github.com/bevyengine/bevy/issues/24610] — First issue targeting 0.20 milestone.
- #24607 OPEN (JonasJebing, Jun 12, C-Feature, S-Needs-Triage). Add
Query::iter_many_resultsfor user-facing flexibility/ergonomics.^[https://github.com/bevyengine/bevy/issues/24607]- #24605 OPEN (GglLfr, Jun 12, A-Rendering, C-Bug, S-Needs-Investigation). Weird shadow behavior in SpotLight and PointLight.^[https://github.com/bevyengine/bevy/issues/24605]
- #24604 OPEN (Jun 12, C-Bug). Cannot switch atmosphere preset in example.^[https://github.com/bevyengine/bevy/issues/24604]
0.19 milestone status
- 528/532 (99.2%), 4 open. #24611 merged Jun 14 (was 1 of the 5 open on Jun 13); scope still 532.
- 4 remaining open items:
- #24594 — Make resources usable as components (PR, P-Regression, S-Needs-Review)
- #24592 — Types can’t be both resources and components (Issue, S-Waiting-on-SME)
- #24591 — Inserting resource as component shouldn’t make it a resource (Issue)
- #24582 — Allow directly writing enums as fields (previously tracked)
- ⚠️ Resources-as-components regression still unresolved. #24594 needs SME review. #24592 waiting on SME.
- rc.3 (Jun 10) is latest pre-release. v0.18.1 still tagged “Latest”.
- First 0.20 milestone issue appeared (#24610 — Listview scrollwheel slow, by viridia).
2026-06-18 engine changes
ECS — SystemWithAccess::system immutable access
- #24652 MERGED (Jengamon, Jun 18, merged by alice-i-cecile, A-ECS, C-Usability, P-Regression, S-Ready-For-Final-Review, 0.19 milestone).^[https://github.com/bevyengine/bevy/pull/24652]
- Objective: Give back immutable access to
ScheduleSystemthroughSystemWithAccess::system()without exposing mutation.- Root cause: An earlier PR made all
SystemWithAccessfields private to prevent mutation. However, external crates (e.g.,bevy_mod_debugdump) need read-only access to the contained system.- Solution: Add
system()method returning immutable reference to theScheduleSystem.- Impact: Fixes regression for ecosystem crates that introspect scheduled systems.
ECS/Dev-Tools — Rename Preferences to Settings
- #24613 MERGED (cart, Jun 18, merged by alice-i-cecile, A-App, C-Code-Quality, 0.19 milestone, +164/-184, 15 commits).^[https://github.com/bevyengine/bevy/pull/24613]
- Objective: Rename
PreferencestoSettingsin the appropriate places within thebevy_settingsframework.- Rationale: The framework conflates “settings” and “preferences” in multiple places. The name of the framework itself is Bevy Settings, so anything driving general “settings” behaviors should use “settings” terminology.
- Example:
PreferencesPluginshould beSettingsPluginbecause it handlesSettingstypes regardless of their “scope” (e.g.,preferences.toml).- Migration impact: None for existing code — the
bevy_settingscrate is new in 0.19 and this lands before the API is published.
Rendering — Point/Spot Shadow Map refresh
- #24626 MERGED (0.19 milestone, A-Rendering, C-Bug).^[https://github.com/bevyengine/bevy/pull/24626]
- Objective: Refresh all components of the Point/Spot Shadow Map if its light has changed.
- Impact: Fixes stale shadow data when dynamic lights move or change properties.
UI/Text — EditableText pointer propagation fix
- #24632 MERGED (0.19 milestone, A-UI, C-Bug).^[https://github.com/bevyengine/bevy/pull/24632]
- Objective: Fix pointer event propagation in editable text fields.
- Impact: UI fix for pointer events in
EditableText.
UI/Text — Text selection collapse on focus loss
- #24619 MERGED (0.19 milestone, A-UI, C-Bug).^[https://github.com/bevyengine/bevy/pull/24619]
- Objective: Collapse text selection when focus is lost.
- Impact: Text selection no longer persists after widget loses focus.
Rendering — InfiniteGrid Copy/Clone
- #24633 MERGED (0.19 milestone, A-Rendering, C-Usability).^[https://github.com/bevyengine/bevy/pull/24633]
- Objective: Derive
CopyandCloneforInfiniteGrid.- Impact: Enables
InfiniteGridto be used in more ECS patterns.
Rendering — Heap allocation reuse (mesh bind groups)
- #24643 MERGED (beicause, Jun 18, A-Rendering, C-Performance, D-Straightforward, X-Uncontroversial).^[https://github.com/bevyengine/bevy/pull/24643]
- Objective: Reuse heap allocations in
prepare_mesh_bind_groups.- Impact: Rendering performance optimization.
Rendering — Heap allocation reuse (RenderContextState)
- #24622 MERGED (A-Rendering, C-Performance).^[https://github.com/bevyengine/bevy/pull/24622]
- Objective: Reuse
RenderContextStateandPendingCommandBuffersheap allocations.- Impact: Rendering performance optimization.
Rendering — Background motion vectors cleanup
- #24606 MERGED (A-Rendering, C-Bug).^[https://github.com/bevyengine/bevy/pull/24606]
- Objective: Clean up background motion vectors when prepass is disabled.
- Impact: Fixes rendering artifact when prepass is toggled off.
Error Handling — BevyError context messages
- #24528 MERGED (0.20 milestone, A-App, C-Usability).^[https://github.com/bevyengine/bevy/pull/24528]
- Objective: Add context messages to
BevyError.- Impact: Error handling improvement for 0.20.
Math — Rect::clamp_point
- #24630 MERGED (A-Math, C-Usability).^[https://github.com/bevyengine/bevy/pull/24630]
- Objective: Add
bevy::math::Rect::clamp_pointfunction.- Impact: New math utility API.
Rendering — SunDisk::MARS preset
- #24618 MERGED (A-Rendering, C-Feature).^[https://github.com/bevyengine/bevy/pull/24618]
- Objective: Add
SunDisk::MARSpreset for Mars atmosphere.- Impact: New atmosphere preset.
Docs/CI — Misc merged PRs
- #24651 — Clearer
QueryAccessError&has_conflictsdocs (A-ECS, C-Docs, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24651]- #24641 — Add impl of
(Try)StableInterpolatefor arrays (A-Math, C-Usability).^[https://github.com/bevyengine/bevy/pull/24641]- #24639 — FeathersColorSwatch opaque display (A-UI, C-Feature).^[https://github.com/bevyengine/bevy/pull/24639]
- #24624 — Fix nightly clippy (A-CI, C-Bug).^[https://github.com/bevyengine/bevy/pull/24624]
- #24640 — variadics_please 1.1 → 2.0 (A-Dependencies).^[https://github.com/bevyengine/bevy/pull/24640]
- #24631 — EntityMut docs for #24596 (A-ECS, C-Docs).^[https://github.com/bevyengine/bevy/pull/24631]
0.19 milestone status
- 🚀 v0.19.0 STABLE RELEASED today (2026-06-18). This is the official stable release after 3 RCs (rc.1 May 13, rc.2 May 22, rc.3 Jun 10). v0.19.0 is now tagged “Latest” on GitHub. 543 PRs closed in the milestone. See bevy for highlights.
2026-06-20 engine changes
Scenes — bevy_scene: don’t use std Result
- #24666 MERGED (mockersf, Jun 20, merged by cart, 0.19.1 milestone, +1/-1).
- Objective: Fix clippy
std_instead_of_corelint error triggered on 0.19 CI.- Root cause:
bevy_scene/src/scene.rs:245usedstd::prelude::v1::Resultinstead ofcore::Result.- Solution: Replace
std::prelude::v1::Resultwithcore::prelude::v1::Result.- Impact: No API change. No behavioral change. Fixes CI failure.
Dev-Tools — Fix PanCamera mouse button check
- Objective: Fix PanCamera to check that the correct mouse button is used for panning, not just any mouse button.
- Root cause: PanCamera previously initiated panning on any mouse button press, not just the configured pan button.
- Solution: Add explicit check against the configured pan mouse button before initiating pan camera movement.
- BREAKING CHANGE: Default pan button changed from
MouseButton::LefttoMouseButton::Middleto avoid conflict with primary selection interactions.- Migration: Users relying on left-click panning must configure
pan_button: MouseButton::Leftto restore previous behavior.
Milestone status
- 0.19.1 milestone: 3/7 closed (42% complete), 4 open. New patch milestone created post-0.19.0 release.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 34 open / 14 closed. Active development milestone.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release (released 2026-06-18).
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
2026-06-21 engine changes
UI — number_input scrubbing/dragging (0.19.1 MILESTONE)
- #24636 MERGED (viridia, Jun 21, merged by alice-i-cecile, 0.19.1 milestone, A-UI, C-Feature, D-Complex, M-Release-Note, X-Contentious).^[https://github.com/bevyengine/bevy/pull/24636]
- Objective: Add click-drag scrubbing to Feathers
number_inputwidget, similar to Blender/Godot inspector behavior.- Behavior: Click and drag horizontally (or vertically with Shift) to adjust numeric values. Drag distance maps to configurable value delta.
- Configuration:
sensitivity,orientation(Horizontal/Vertical),min,max,step.- Significance: Major UX improvement for editor-like interfaces and dev tools. Tagged M-Release-Note.
Text — Performance regression fix (0.19.1 MILESTONE)
- #24663 MERGED (ickshonpe, Jun 21, 0.19.1 milestone, A-Text, C-Performance, P-Regression, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24663]
- Bug: Text layout measurement cache was invalidated too aggressively in 0.19, causing repeated expensive measurements.
- Fix: Cache invalidation now correctly keyed by layout constraints.
- Impact: Text-heavy UIs should see significant performance improvement.
Rendering — Sprite material shader module extraction
- #24629 MERGED (cookie1170, Jun 21, A-Rendering, C-Code-Quality, C-Usability, D-Straightforward, D-Shaders).^[https://github.com/bevyengine/bevy/pull/24629]
- Objective: Extract
sprite_materialfunctions, bindings, and types to a separate reusable shader module.- Impact: Internal refactoring — no API break. Enables future sprite material customization.
Rendering — Solari fixes
- #24670 MERGED (JMS55, Jun 21, A-Rendering, C-Bug, D-Trivial). Solari: Make light tiles properly random.^[https://github.com/bevyengine/bevy/pull/24670]
- #24668 MERGED (JMS55, Jun 21, A-Rendering, C-Bug, D-Straightforward). Solari: Misc BRDF changes.^[https://github.com/bevyengine/bevy/pull/24668]
- Impact: Rendering quality improvements for Solari path tracer.
CI/Build
- #24697 MERGED (github-actions[bot], Jun 21). Bump Version after Release — post-release version bump to 0.19.1-dev.^[https://github.com/bevyengine/bevy/pull/24697]
- #24693 MERGED (mockersf, Jun 21, A-Build-System, D-Trivial). Fix version bump CI workflow.^[https://github.com/bevyengine/bevy/pull/24693]
- #24677 MERGED (JasmineLowen, Jun 21, C-Docs, D-Trivial). Docs fixup of run condition docs (
or_else).^[https://github.com/bevyengine/bevy/pull/24677]- #24685 MERGED (ickshonpe, Jun 21, C-Code-Quality, D-Trivial). Remove radio button comment.^[https://github.com/bevyengine/bevy/pull/24685]
- #24669 MERGED (ickshonpe, Jun 21, A-UI, C-Bug, D-Straightforward, M-Deliberate-Rendering-Change). Another text measurement fix.^[https://github.com/bevyengine/bevy/pull/24669]
2026-06-22 engine changes
Rendering — Sorted batching without indirect drawing (0.19.1 MILESTONE)
- #24708 MERGED (issam3105, Jun 22, 0.19.1 milestone, A-Rendering, C-Bug, O-WebGL2, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24708]
- Bug: Sorted render phase batching did not work correctly when indirect drawing was unavailable (WebGL2). Meshes were not batched, causing significant performance degradation.
- Fix: Implements CPU-side sorted batching fallback when indirect draw is not supported.
- Impact: WebGL2 performance improvement for scenes with many sorted transparent meshes.
ECS — Entity wrappers in entity set/map types (BREAKING)
- #18408 MERGED (Victoronz, Jun 22, A-ECS, C-Usability, D-Complex, M-Migration-Guide).^[https://github.com/bevyengine/bevy/pull/18408]
- Objective: Allow
EntityHashSet/EntityHashMapto accept wrapper types through newAsEntitytrait.- Breaking: Changes
EntitySet/EntityMaptrait bounds. Code implementing these traits directly may need updates.- Migration guide: Included — trait implementations need to add
AsEntitybound.
ECS — Remove 0.19 deprecated code
- #24687 MERGED (Trashtalk217, Jun 22, A-ECS, C-Code-Quality, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24687]
- Objective: Remove APIs deprecated in 0.18 that were scheduled for removal in 0.19.
- Impact: Code still using deprecated APIs will fail to compile. Migration guide covers replacements.
UI/Picking — clip_check_recursive fix (0.19.1 MILESTONE)
- #24684 MERGED (ickshonpe, Jun 22, 0.19.1 milestone, A-UI, C-Bug, P-Regression, D-Straightforward, A-Picking).^[https://github.com/bevyengine/bevy/pull/24684]
- Bug: UI clipping bounds were incorrectly calculated in nested layouts, causing picking (hit detection) to miss elements.
- Fix: Correct clip containment check in recursive picking path.
Rendering — Solari MIS fix
- #24671 MERGED (JMS55, Jun 22, A-Rendering, C-Bug, C-Code-Quality, D-Modest).^[https://github.com/bevyengine/bevy/pull/24671]
- Bug: Multiple Importance Sampling in Solari was not using consistent PDF measures, causing noise/artifacts.
- Fix: Aligns PDF measures across MIS paths.
Rendering — DX12 read-only buffer atomics fix
- #24650 MERGED (stuartparmenter, Jun 22, A-Rendering, C-Bug, O-DX12, D-Straightforward, D-Shaders).^[https://github.com/bevyengine/bevy/pull/24650]
- Bug: Atomics were declared in a read-only late mesh preprocessing buffer, causing DX12 validation errors.
- Fix: Remove atomic declarations from read-only buffer path.
Time — max_delta clamp fix
- #24237 MERGED (mockersf, Jun 22, A-Time, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24237]
- Bug:
Timedid not clamp delta bymax_deltawhen relative speed > 1, allowing extreme time steps.- Fix: Apply
max_deltaclamp regardless of relative speed.
Dependencies — sysinfo 0.39.5
- #24706 MERGED (Rynibami, Jun 22, C-Bug, C-Dependencies, O-MacOS, P-Compile-Failure).^[https://github.com/bevyengine/bevy/pull/24706]
- Fix: Updates sysinfo dependency to fix macOS compilation failure.
Dev-Tools — Diagnostics overlay border radius fix (0.19.1 MILESTONE)
- #24713 MERGED (hukasu, Jun 22, 0.19.1 milestone, A-Diagnostics, C-Bug, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24713]
- Fix: Wrong border radius corners on diagnostic overlay visualization.
Rendering — Light probe import fix (0.19.1 MILESTONE)
- #24714 MERGED (kfc35, Jun 22, 0.19.1 milestone, A-Rendering, C-Bug, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24714]
- Fix: Adds missing WGSL import for
LIGHTMAPPED_MESH_DIFFUSEconstant in irradiance volume shader.
UI — Feathers radio button background (0.20 MILESTONE)
- #24704 MERGED (gagnus, Jun 22, 0.20 milestone, A-UI, C-Feature, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24704]
- Feature: Radio button background styling for Feathers UI.
Other merged
- #24688 — Add Okhsla and Okhsva to
bevy_color::prelude(beicause, A-Color, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24688]- #24707 — Downgrade gpu_readback closed-channel log from warn to debug (PeteMichaud, A-Rendering, C-Usability, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24707]
- #24692 — Add
EnvironmentMapLight::with_intensitybuilder method (tylercritchlow, A-Rendering, C-Usability, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24692]- #24691 — Fix NaN okhsl/okhsv values when lightness approximates 0 or 1 (beicause, A-Color, C-Bug, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24691]
- #24653 — Deduplicate access_iter test logic (SpecificProtagonist, A-ECS, C-Code-Quality, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24653]
- #24667 — Solari: Add DLSS-RR toggle to example (JMS55, A-Rendering, C-Examples, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24667]
Milestone status
- 0.19.1 milestone: 13/21 closed (~62%), 8 open.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 32/21 open/closed.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
2026-06-23/24 engine changes
Text — Swash stable font id (MAJOR PERFORMANCE FIX)
- #24710 MERGED (kristoff3r, Jun 23, merged by alice-i-cecile, C-Bug, D-Complex, +18/-6, 3 files changed).^[https://github.com/bevyengine/bevy/pull/24710]
- Objective: Fix a text rendering performance regression from the move to
parley.- Root cause:
FontRefconstructors implicitly generated newCacheKeyinstances on every call, breaking swash’s internal caching layer. Using the scale builder without giving an id did this internally.- Solution: Give the builder a stable font id derived from the asset.
- Impact:
many_text2d --hintingstartup time drops from 7s → 500ms (14× faster). Text-heavy UIs with hinting enabled will see dramatic startup improvement.- Testing:
many_text2dexample with newhintingflag.
Rendering — InfiniteGrid Visibility fix (0.19.1 MILESTONE)
- #24723 MERGED (chris-hain, Jun 23, merged by alice-i-cecile, 0.19.1 milestone, A-Rendering, C-Bug, D-Straightforward, X-Uncontroversial, +27/-1, 2 files changed).^[https://github.com/bevyengine/bevy/pull/24723]
- Bug: The custom render phase for infinite grid did not clear invisible or despawned meshes before rendering, meaning the
Visibilitycomponent had no effect onInfiniteGrid.- Fix: Added a removal pass in the
infinite_gridrender queue.- Testing:
toggle_visibilitysystem added to theinfinite_gridexample.
UI — Feathers missing png feature (0.19.1 MILESTONE)
- #24727 MERGED (Sigma-dev, Jun 23, merged by alice-i-cecile, 0.19.1 milestone, A-UI, C-Bug, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24727]
- Fix: Adds missing
pngfeature tobevy_feathersfeature declaration.- Impact: Fixes compilation when using
bevy_featherswithout explicitly enabling thepngfeature.
Camera — IsDefaultUiCamera Clone (0.19.1 MILESTONE)
- #24729 MERGED (JasmineLowen, Jun 24, merged by alice-i-cecile, 0.19.1 milestone, A-Camera, C-Usability, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24729]
- Impact: Derives
CloneforIsDefaultUiCamera, improving ECS ergonomics for camera setup patterns.
UI — Feathers theme aware fixes
- #24719 MERGED (gagnus, Jun 23, merged by alice-i-cecile, A-UI, C-Bug, +161/-43, 6 files changed).^[https://github.com/bevyengine/bevy/pull/24719]
- Bugs fixed:
- Disclosure toggle was setting colors directly when enabled/disabled instead of re-inserting
InheritableThemeTextColor.NumberInputneeded a plugin to add an update function for theme changes.Sliderneeded an update function for theme changes.- Icons not updating with theme — added new
ThemedIconcomponent marker and a system to color it after text color propagation.- Impact: Zero behavior change if themes are not switched at runtime. Fixes only manifest when changing themes dynamically.
UI — Number input polish (0.20 MILESTONE)
- #24701 MERGED (viridia, Jun 23, merged by alice-i-cecile, 0.20 milestone, A-UI, C-Feature, +83/-7, 3 files changed).^[https://github.com/bevyengine/bevy/pull/24701]
- Objective: Polish the Feathers
number_inputwidget following #24636 (scrubbing).- Changes: Release notes and migration guide added, focus behavior when disabled fixed, various UI tweaks.
- Part of: #19236 (Feathers UI widget set).
Milestone status
- 0.19.1 milestone: 18/25 closed (72% complete), 7 open. Up from 13/21 (~62%, 8 open) on Jun 22.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 23/30 closed/open (43% complete). Up from 14/32 on Jun 22.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
- bevy-ui-text — Bevy UI text system concepts.
2026-06-25 engine changes
UI — Floating dialogs in Feathers (0.20 MILESTONE)
- #24705 MERGED (gagnus, Jun 24, merged by alice-i-cecile, 0.20 milestone, A-UI, C-Feature, D-Modest, M-Release-Note, 6 commits).^[https://github.com/bevyengine/bevy/pull/24705]
- Objective: Support floating dialogs that can be re-ordered and moved around, for editor requirements like settings windows or entity debuggers.
- Solution: Expanded the existing modal dialog into a full floating dialog system at both the Feathers UI level and the underlying
bevy_ui_widgetslevel. No changes to existing modal dialog APIs.- Impact: Enables editor-style floating panels in Feathers-based UIs. Zero breaking changes.
Milestone status
- 0.19.1 milestone: 18/27 closed (66% complete), 9 open. Scope grew from 25 to 27 since Jun 24.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 24/32 closed/open (43% complete). Up from 23/30 on Jun 24.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
- bevy-ui-text — Bevy UI text system concepts.
2026-06-26 engine changes
Scenes — BSN nested entity references fix
- #24742 MERGED (HeartofPhos, Jun 25, merged 6h ago, 0.19.1 milestone, A-Scenes, C-Bug, D-Straightforward, +11/-1).^[https://github.com/bevyengine/bevy/pull/24742]
- Bug: BSN nested entity references were not correctly resolved during scene expansion. Inner entity refs inside nested structures failed to parse/expand.
- Fix: Corrected the nested entity reference parsing logic in BSN scene expansion.
- Impact: Projects using BSN with deeply nested entity hierarchies will see correct spawning behavior. Zero API break.
States — NextState::set_if_neq renamed to set_if_different (BREAKING)
- #24676 MERGED (mansiverma897993, Jun 25, A-States, C-Bug, D-Straightforward, M-Migration-Guide, +23/-13).^[https://github.com/bevyengine/bevy/pull/24676]
- Bug:
NextState::set_if_neqclashed withstd/corePartialEq::nemethod naming convention, causing confusion and potential method resolution issues.- Fix: Renamed to
set_if_differentto avoid the clash.- Impact: Code using
NextState::set_if_neqmust rename toset_if_different. This is a straightforward find-and-replace migration.
Milestone status
- 0.19.1 milestone: 19/28 closed (67% complete), 9 open. Scope expanded from 27 to 28 total items since Jun 25.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 24/32 closed/open. Steady progress.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release yet.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-state-management — Bevy 0.16 状态管理指南.
2026-06-27 engine changes
Rendering — Temporal jitter applied to PreviousViewData (0.20 MILESTONE)
- #24672 MERGED (JMS55, Jun 26, merged by alice-i-cecile, 0.20 milestone, A-Rendering, C-Bug, D-Straightforward, +82/-12, 7 files changed).^[https://github.com/bevyengine/bevy/pull/24672]
- Objective: PreviousViewData did not account for temporal jitter, which led to small inaccuracies that caused issues in a future Solari PR.
- Solution: Apply temporal jitter to PreviousViewData. Add
unjittered_clip_from_worldfor motion vector usage which requires unjittered matrices.- Impact: Rendering correctness improvement for TAA/motion vector paths. Solari path tracer will benefit in upcoming PRs. No API break.
Milestone status
- 0.19.1 milestone: 20/28 closed (71% complete), 8 open. Up from 19/28 (67%) on Jun 26.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/32 closed/open (44% complete). Up from 24/32 on Jun 26.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
- bevy-solari-pathtracer — Bevy Solari GPU path tracer.
2026-06-28 engine changes
Dependencies — Stricter nonmax crate version requirement
- #24776 MERGED (RCoder01, Jun 27, C-Dependencies, D-Trivial, S-Ready-For-Final-Review).^[https://github.com/bevyengine/bevy/pull/24776]
- Bug:
bevy_ecsfails to compile whennonmaxcrate is pinned to <= 0.5.3, becausebevy_ecsusesnonmax::NonMaxU32::MAXwhich was only added in 0.5.4. The Cargo.toml constraintnonmax = "0.5"incorrectly allowed 0.5.3.- Fix: Bump
nonmaxrequirement to > 0.5.4.- Impact: Projects upgrading from old Bevy versions without running
cargo updatewill no longer hit this compilation error. Zero API break.
Rendering — Clustered decal docs macOS/iOS restriction fix
- #24770 MERGED (mgi388, Jun 27, A-Rendering, C-Docs, D-Trivial, S-Ready-For-Final-Review).^[https://github.com/bevyengine/bevy/pull/24770]
- Bug: PR #21332 previously fixed clustered decal docs for macOS/iOS platform restriction but missed the component-level doc comment.
- Fix: Update component doc comment and tidy spacing in the doc block.
- Impact: Documentation only. No behavior change.
Time — effective_speed accuracy when max_delta clamping
- #24768 MERGED (akshitj11, Jun 26, A-Time, C-Bug).^[https://github.com/bevyengine/bevy/pull/24768]
- Bug: Fixes #24715.
effective_speedreportedrelative_speedinstead of the actual applied multiplier, causing incorrect values whenmax_deltaclamping occurred.- Fix: Set
effective_speedtodelta / raw_delta(the multiplier actually applied).- Impact: Any code reading
effective_speedon aTimeresource withmax_deltaconfigured will now see correct values. Behavior correction, not an API break.
Milestone status
- 0.19.1 milestone: 20/28 closed (71% complete), 8 open. Unchanged from Jun 27.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/32 closed/open (44% complete). Unchanged from Jun 27.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation.
- bevy-rendering — Bevy rendering system concepts.
- bevy-time-system — Bevy time system concepts.
- bevy-solari-pathtracer — Bevy Solari GPU path tracer.
2026-06-29 engine changes
Build System — rust-version bumped to 1.96
- #24736 MERGED (taearls, Jun 29, merged by alice-i-cecile, A-Build-System, A-Cross-Cutting, C-Bug, C-Testing, D-Trivial, X-Uncontroversial, +1/-1).^[https://github.com/bevyengine/bevy/pull/24736]
- Bug:
rust-versionin rootCargo.tomlwas 1.95, but Bevy tests useassert_matches!macro which requires Rust 1.96. Runningcargo teston Rust 1.95 failed.- Fix: Bump
rust-versionfrom 1.95 to 1.96 in rootCargo.toml.- Impact: No API break. CI already uses stable toolchain (1.96+). This is purely a correctness fix for the declared minimum supported Rust version.
Milestone status
- 0.19.1 milestone: 20/28 closed (71% complete), 8 open. Unchanged from Jun 28.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/32 closed/open (44% complete). Unchanged from Jun 28.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
2026-06-30 engine changes
Rendering — Shrink previous mesh uniform to transform only (PERFORMANCE)
- #23892 MERGED (pcwalton, Jun 29/30, merged by cart, A-Rendering, C-Performance, D-Modest, +83/-29, 6 files changed, 2 commits).
- Objective: The entire
MeshInputUniform(24 words) was copied to the previous mesh instance buffer every frame, but only the transform is ever used (for motion blur).- Solution: Introduces
PreviousMeshInputUniformcontaining only the transform matrix. The previous mesh instance buffer now stores ~16 floats instead of ~96 floats for this path.- Performance: On
many_cubes,prepare_previous_mesh_uniformsmedian time drops from 240.1 μs → 65.33 μs (3.68× speedup).- Future work: Simplifies sparse updates where only changed
MeshInputUniformfields are written.- Impact: No public API change. Internal rendering optimization.
Milestone status
- 0.19.1 milestone: 20/35 closed (57% complete), 15 open. Scope expanded from 28 → 35 total items since Jun 29 (7 new items added). Closed count unchanged at 20.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/59 closed/open (42% complete), 34 open. Scope expanded from 57 → 59 total items. Closed count unchanged at 25.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
Related pages
- bevy — Bevy engine/entity hub.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bevy-rendering — Bevy rendering system concepts.
- bevy-solari-pathtracer — Bevy Solari GPU path tracer.