Bevy Migration Notes — June 2026
Upgrade-sensitive Bevy changes and action items for June 2026. Sister page to bevy-game-dev-2026-06.
Continues from bevy-migration-2026-05.
2026-06-02 additions
#24474 — ScenePatchInstance queue fix (no migration impact)
- #24474 MERGED (cart, Jun 2, 0.19). Fixes #24320 — queued scenes used
ScenePatchInstanceincorrectly.^[https://github.com/bevyengine/bevy/pull/24474] - Migration impact: None — internal scene spawning fix. If code had workarounds for scene spawning failures with queued scenes, those workarounds are no longer needed.
#24240 — Panics passed to fallback error handler (behavior change, opt-in)
- #24240 MERGED (SpecificProtagonist, Jun 2, merged by alice-i-cecile). 457 additions / 103 deletions.^[https://github.com/bevyengine/bevy/pull/24240]
- Migration impact: Additive API — no existing code breaks. Behavior change is opt-in: panics now can be intercepted by
FallbackErrorHandlerinstead of crashing. - Action items:
- Evaluate enabling panic interception for production deployments (matches Godot/Unity crash-resilience patterns).
- If code relies on panic-crash behavior for error detection, review the new configurable handler.
no_stdprojects are NOT affected — panics still crash as before.
- Fixes: #19109, #7434.
#24395 — Double-sided normals for negative scale meshes (no migration impact)
- #24395 MERGED (issam3105, Jun 2). PBR lighting fix for double-sided materials with negative-scale transforms.^[https://github.com/bevyengine/bevy/pull/24395]
- Migration impact: None — shader-side rendering fix. Visual results for negative-scale double-sided meshes will change (correctly).
Updated practical checklist (Jun 2)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Evaluate panic error handler — new opt-in feature. Consider enabling for crash-resilient production builds. → Retest queued scene spawning — #24474 fixes a scene spawning bug. If code had workarounds, remove them. → Retest negative-scale double-sided meshes — PBR lighting now correct. Visual verification recommended. → Retest GPU HLOD / VisibilityRange — from May 31, still applies. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: 494/500 (~98.8%) — 6 open items. Release is imminent.
2026-06-03 additions
#24445 — 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]
- Migration impact: Any code calling
define_label!()withinterner_nameargument must remove it. The static interner is now hidden inside theintern()method. - Action items:
- Remove
interner_nameargument from alldefine_label!()calls. - Code that accessed the interner directly by name will break — use
intern()method instead. - Companion PR #24444 adds documentation for the updated macro.
- Remove
#21926 — Vertex buffer compression (additive, opt-in)
- #21926 MERGED (beicause, Jun 3, merged by alice-i-cecile, A-Rendering, +2251/-433). Major feature.^[https://github.com/bevyengine/bevy/pull/21926]
- Migration impact: Additive API — no existing code breaks. Behavior is opt-in via
attribute_compressionfield onMeshormesh_attribute_compressiononGltfLoaderSettings. - Action items:
- Evaluate enabling vertex compression for production builds (reduces GPU bandwidth).
- Test with custom shaders that read vertex data — compressed formats differ (e.g. normals become octahedral Unorm16x2).
compressed_mesh()method available for pre-building compressed meshes.
#22792 — Wayland fullscreen fallback (behavior change)
- #22792 MERGED (francisdb, Jun 2, merged by alice-i-cecile, A-Windowing, C-Bug, O-Linux, X-Contentious).^[https://github.com/bevyengine/bevy/pull/22792]
- Migration impact: Behavior change on Linux/Wayland — exclusive fullscreen now falls back to borderless. No API break.
- Action items:
- If code checks for exclusive fullscreen on Wayland, it may now get borderless instead.
- Test Linux/Wayland fullscreen behavior.
#24496 — DetectChanges this_run/last_run (additive)
- #24496 MERGED (akriegman, Jun 2, merged by alice-i-cecile, A-ECS, D-Trivial, +26/-0).^[https://github.com/bevyengine/bevy/pull/24496]
- Migration impact: None — additive API. New
this_run()andlast_run()methods onDetectChanges.
#23260 — resource_exists_and (additive)
- #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]
- Migration impact: None — additive API. New
resource_exists_andsystem condition.
No migration impact
- #24514 (glTF clearcoat texture — rendering fix)
- #23794 (meshlet pipeline optimization — internal)
- #24453 (transmission roughness IOR — shader fix)
- #24419 (TemporaryRenderEntity — internal rendering)
- #24485 (DeferredWorld::trigger caller — ECS internal)
- #24347 (CommandQueue warning — warning suppression)
- #24391 (TilemapChunkTileData helper — additive)
- #24441, #24454, #24457, #24398, #24413, #24446 (fixes/docs)
Updated practical checklist (Jun 3)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → 🆕 Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → 🆕 Evaluate vertex buffer compression — new opt-in feature (#21926). Consider for production builds. → 🆕 Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: 496/506 (~98.0%) — 10 open items. Scope grew again (496/503 → 496/506). New items are docs/BSN polish. Release still close.
2026-06-04 additions
#24520 — Shader import regression fix (no migration impact)
- #24520 MERGED (beicause, Jun 4, merged by alice-i-cecile, A-Rendering, C-Bug, P-Regression, +20/-2).^[https://github.com/bevyengine/bevy/pull/24520]
- Context: Regression from #21926 (vertex buffer compression). Shader imports broken in deferred, Solari, meshlet.
- Migration impact: None — hotfix for same-day regression.
No other migration-sensitive changes today
- #24524 (bsn inline macros — additive, D-Straightforward)
- #24523 (release notes — documentation only)
- #24525 (bevy_dev_tools RC missing — build/packaging issue, no API change)
Updated practical checklist (Jun 4)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → 🔥 🆕 Test deferred/Solari/meshlet rendering — #24520 fixed a regression from vertex buffer compression. Verify rendering works correctly. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: 496/506 (~98.0%) — 10 open items. Scope still growing.
2026-06-05 additions
#24362 — Font asset resolution and change detection (BREAKING, migration required)
- #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).^[https://github.com/bevyengine/bevy/pull/24362]
- What changed: Font asset resolution now uses dual registration (asset-specific alias + family name), triggers change detection on TextFont instead of TextBlock, rebuilds font database on unload.
- Migration impact: Breaking — code using
Font::from_bytes()or custom font loading may need updates. Migration guide at_release-content/migration-guides/font_from_bytes.md.- Action items:
- Review
Font::from_bytes()usage — check migration guide for API changes.- Test font hot-reloading — new change detection chain may affect text rendering timing.
- Test font unloading — fonts are now properly unloaded from Parley database.
- Fixes: #24356.
#24530 — PbrNeutral → KhronosPbrNeutral rename (OPEN, planned for 0.19)
- #24530 OPEN (Elabajaba, Jun 5, A-Rendering, C-Docs, M-Migration-Guide).^[https://github.com/bevyengine/bevy/pull/24530]
- What changes:
PbrNeutraltonemapper renamed toKhronosPbrNeutral.- Migration impact (when merged): Find-and-replace
PbrNeutral→KhronosPbrNeutralin all code using this tonemapper.- Status: Still open, awaiting review. Not yet merged.
#24524 — BSN inline macros (no migration impact)
- #24524 MERGED (cart, Jun 4/5, A-Scenes, C-Usability, D-Straightforward, 0.19 milestone).^[https://github.com/bevyengine/bevy/pull/24524]
- Migration impact: Additive — old
{}-wrapped syntax still works, new direct syntax is now also accepted. No code breaks.
No other migration-sensitive changes today
- #24529 (custom_phase_item docs — documentation only)
Updated practical checklist (Jun 5)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → 🔥 🆕 ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide atfont_from_bytes.md. → 🆕 WatchPbrNeutral→KhronosPbrNeutralrename — #24530 is open but will be breaking when merged. Prepare find-and-replace. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: ~498/509 (~97.8%) — 8 open items. Scope continues growing.
2026-06-06 additions
#24530 — PbrNeutral → KhronosPbrNeutral rename (BREAKING, NOW MERGED)
- #24530 MERGED (Elabajaba, Jun 6, merged by cart, A-Rendering, C-Docs, M-Migration-Guide, +17/-14).^[https://github.com/bevyengine/bevy/pull/24530]
- Previously tracked as OPEN in the 06-05 section. Now merged.
- Migration impact: Breaking — find-and-replace
PbrNeutral→KhronosPbrNeutralin all code referencing this tonemapper variant.- Action items:
- Search codebase for
PbrNeutraland replace withKhronosPbrNeutral.- Review tonemapper docs —
KhronosPbrNeutralis now explicitly NOT recommended as a default tonemapper.
#24519 — bsn! autocomplete fix (no migration impact)
- #24519 MERGED (cart, Jun 6, A-Scenes, C-Bug, +132/-84).^[https://github.com/bevyengine/bevy/pull/24519]
- Migration impact: None — bug fix for
bsn!macro IDE/autocomplete behavior. Existing code compiles identically.
#24538 — Text layout scheduling fix (no migration impact)
- #24538 MERGED (ickshonpe, Jun 6, D-Trivial, A-Rendering/A-Text/A-UI).^[https://github.com/bevyengine/bevy/pull/24538]
- Migration impact: None — internal scheduling constraint fix.
#24513 — resources_as_components migration guide docs (no migration impact)
- #24513 MERGED (kfc35, Jun 6, merged into
release-0.19.0branch, C-Docs, A-ECS, +7/-2).^[https://github.com/bevyengine/bevy/pull/24513]- Migration impact: None — documentation update only. Adds workarounds to existing migration guide.
Updated practical checklist (Jun 6)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → 🔥 🆕 ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: ~502/507 (~98.8%) — 5 open items (all docs/BSN). No blocking bugs.
2026-06-07 additions
No migration-sensitive changes today
- 5 PRs merged, all additive or bugfix-level — no breaking API changes:
- #24542 (SceneList for SmallVec — additive trait impl)
- #24536 (Scene for Option
— additive trait impl)
- #24523 (Release notes — documentation only)
- #24539 (MenuButton tab fix — UI bugfix)
- #24421 (IME text wrapping — example fix)
Updated practical checklist (Jun 7)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: 511/517 (98.8%) — 6 open items (all docs/BSN + Feathers). No blocking bugs.
2026-06-08 additions
#24550 — HierarchyPropagatePlugin remove-insert fix (no migration impact)
- #24550 MERGED (ickshonpe, Jun 8, merged by alice-i-cecile, 0.19 milestone, A-App, C-Bug, D-Straightforward, +30/-1).^[https://github.com/bevyengine/bevy/pull/24550]
- Migration impact: None — bug fix for hierarchy propagation behavior when components are removed and reinserted in the same frame. If code had workarounds for propagation loss during same-frame remove-insert cycles, those workarounds are no longer needed.
#24527 — SystemHandle run support (additive)
- #24527 MERGED (hxYuki, Jun 8, merged by alice-i-cecile, 0.19 milestone, A-ECS, C-Usability, D-Straightforward, +40/-5).^[https://github.com/bevyengine/bevy/pull/24527]
- Migration impact: Additive API — no existing code breaks. New
Fromimpls forSystemHandle → SystemIdandimpl Into<SystemId>onCommands::run_system*.
#24544 — Feathers scrollbar and list view (additive)
- #24544 MERGED (viridia, 0.19 milestone, A-UI, C-Feature, D-Modest, M-Release-Note).^[https://github.com/bevyengine/bevy/pull/24544]
- Migration impact: None — new UI widgets only. No API changes to existing code.
Updated practical checklist (Jun 8)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: ~514/520 (~98.8%) — ~3 open items (docs-only). No blocking bugs.
2026-06-10 additions
#24502 — Expose pipeline constants to materials (BREAKING — Eq derive removal)
- #24502 MERGED (Visse, Jun 9, A-Rendering, C-Usability).^[https://github.com/bevyengine/bevy/pull/24502]
- Migration impact:
Eqderive removed fromComputePipelineDescriptor,VertexState, andFragmentState. Code that relied onEqon these types will break.- Action items:
- If code uses
==orHash-based collections onComputePipelineDescriptor/VertexState/FragmentState, switch to alternative comparison. - New feature: materials can now specify WGSL pipeline constants in their
specializefunction.
#24509 — AmbientLightFlags refactor (WGSL shader change)
- #24509 MERGED (coreh, Jun 9, A-Rendering, C-Code-Quality).^[https://github.com/bevyengine/bevy/pull/24509]
- Migration impact: WGSL shader changes —
ambient_light_affects_lightmapped_meshesrenamed toambient_light_flags. Custom shaders that reference the old field name will break.- Action items:
- Update any custom WGSL shaders that reference
ambient_light_affects_lightmapped_meshesto useambient_light_flagsand theAMBIENT_LIGHT_FLAGS_AFFECTS_LIGHTMAPPED_MESHES_BITconstant.
#24512 — MouseScrollUnit conversion factor as Resource (BEHAVIOR CHANGE)
- #24512 MERGED (stevehello166, Jun 9, A-Input, C-Feature).^[https://github.com/bevyengine/bevy/pull/24512]
- Migration impact: Hardcoded
SCROLL_UNIT_CONVERSION_FACTORreplaced with a configurableResource. If code referenced the constant directly, it will break.- Action items:
- Replace
MouseScrollUnit::SCROLL_UNIT_CONVERSION_FACTORreferences with the new Resource. - Scroll sensitivity is now runtime-configurable — evaluate default values.
Other changes (no migration impact)
- #24516 (Beer’s law attenuation) — shader-side rendering fix. Visual results change (correctly).
- #24565 (BSN optional scenes) — additive BSN capability.
- #24555 (ResultSeverityExt shorthands) — additive API.
- #24553 (OrderedRelationshipSourceCollection fix) — internal bugfix.
- #24551 (reflect type data by path) — additive macro feature.
- #24556 (VisitAssetDependencies impls) — additive.
- #24251 (Handle tracking on soft removal) — bugfix.
- #24559 (Feathers modal dialog) — additive UI feature.
- #24532 (mip map material change detection) — bugfix.
Updated practical checklist (Jun 10)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamedambient_light_affects_lightmapped_meshestoambient_light_flags. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed the constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: 523/526 (99.4%) — 3 open items (all BSN docs/polish). No blocking bugs.
2026-06-09 additions
No migration-sensitive changes today
- 2 PRs merged, all documentation-level — no breaking API changes:
- #24464 (BSN docs and tests overhaul — documentation and test improvements only)
- #24506 (partial_bindless release note rewrite — documentation tone only)
- #24558 (CI typos bump — no user impact)
Updated practical checklist (Jun 9)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19 milestone: 519/523 (99.2%) — 4 open items. No blocking bugs.
2026-06-11 additions
No migration-sensitive changes today
- 9 PRs merged, all additive, bugfix, or documentation-level — no breaking API changes:
- #24526 (bsn field name shorthand — additive syntax sugar, old syntax still works)
- #24575 (bsn name docs fix — documentation only)
- #24577 (release notes copyediting — documentation only)
- #24573 (bindless specular transmission — shader bugfix, visual change only)
- #22866 (bundle derive non_snake_case — additive
#[allow], no API change)- #24488 (safety comments — comment-only)
- #24576 (type_info reorganization — internal module move)
- #24583, #24578 (example fixes — no API change)
Updated practical checklist (Jun 11)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamedambient_light_affects_lightmapped_meshestoambient_light_flags. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed the constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 🔥 0.19 milestone: 527/528 (99.8%) — 1 open item (#24582, new feature request). 0.19 final is effectively ready.
2026-06-12 additions
#24544 — Name From<&str> → From<&‘static str> (BREAKING)
- #24544 MERGED (bytemuck, Jun 11, merged by alice-i-cecile, A-ECS, C-Usability, +11/-3).^[https://github.com/bevyengine/bevy/pull/24544]
- What changed:
impl From<&str> for Namereplaced withimpl From<&'static str> for Name.- Migration impact: Breaking — code that passes non-static
&strtoName::from()will no longer compile. Examples:Name::from(my_string.as_str()),Name::from(&format!("entity_{}", i)).- Action items:
- Search codebase for
Name::from(calls with non-static string arguments.- Use
Name::new(string)(takesString) orName::from("static string")instead.- If using
Namein hot loops (entity spawning), verify this doesn’t change your allocation pattern.- Fixes: #24465 (Name::from<&str> always heap-allocates — footgun).
#24580 — glTF specular extension parsing fix (no migration impact)
- #24580 MERGED (issam3105, Jun 11, A-glTF, C-Bug, +51/-48).^[https://github.com/bevyengine/bevy/pull/24580]
- Migration impact: None — internal glTF loader fix. glTF materials with KHR_materials_specular will now parse correctly.
#24548 — asset_changed import path made public (no migration impact)
- #24548 MERGED (YUHAO-corn, Jun 11, A-Assets, C-Usability, +1/-1).^[https://github.com/bevyengine/bevy/pull/24548]
- Migration impact: Additive —
asset_changedmodule is now public. Code that imported throughbevy_asset::privatecan switch to the public path.
No other migration-sensitive changes today
- #24584 (multiline_text_input example — example-only)
- ⚠️ 3 new 0.19 milestone issues about resources-as-components regression (#24591, #24592, #24594) — no merge yet, but if #24594 merges, it may affect code that uses types as both resources and components.
Updated practical checklist (Jun 12)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → 🔥 🆕 FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. Non-static string references no longer compile. → ⚠️ Watch resources-as-components regression — #24591, #24592, #24594. If PR #24594 merges, audit code that uses types as bothResourceandComponent. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamedambient_light_affects_lightmapped_meshestoambient_light_flags. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed the constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → ⚠️ 0.19 milestone: 527/531 (99.2%) — 4 open items. Resources-as-components regression is P-Regression and could block release. rc.3 released Jun 10.
2026-06-18 additions
No new breaking changes today
- #24652 — SystemWithAccess::system immutable access (0.19 milestone, P-Regression fix). Additive API — new
system()method. No migration impact.- #24613 — Rename Preferences to Settings (0.19 milestone). No migration impact — the
bevy_settingscrate is new in 0.19 and this lands before the API is published. ZoOL code does not use this crate yet.- #24626 — Point/Spot Shadow Map refresh on light change (0.19 milestone). Bugfix — no migration impact.
- #24632 — EditableText pointer propagation fix (0.19 milestone). Bugfix — no migration impact.
- #24619 — Text selection collapse on focus loss (0.19 milestone). Bugfix — no migration impact.
- #24633 — Derive Copy/Clone for InfiniteGrid (0.19 milestone). Additive — no migration impact.
- #24305 — Fix Deserialize derive for BrpResponse (0.19 milestone). Bugfix — no migration impact.
- #24643/#24622 — Rendering heap allocation reuse. Performance optimizations — no migration impact.
- #24606 — Background motion vectors cleanup. Bugfix — no migration impact.
- #24528 — BevyError context messages (0.20 milestone). Additive for 0.20 — no 0.19 migration impact.
- #24630 — Rect::clamp_point. New math API — no migration impact.
- #24618 — SunDisk::MARS preset. New feature — no migration impact.
- #24651/#24641/#24639/#24624/#24640/#24631 — Docs, math, UI, CI, dependencies — no migration impact.
Updated practical checklist (Jun 18)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. Non-static string references no longer compile. → Watch resources-as-components regression — #24591, #24592, #24594. If PR #24594 merges, audit code that uses types as bothResourceandComponent. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamedambient_light_affects_lightmapped_meshestoambient_light_flags. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed the constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). Test custom shaders reading vertex data. → Test deferred/Solari/meshlet rendering — #24520 fixed regression from vertex buffer compression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → ✅ v0.19.0 STABLE RELEASED (2026-06-18). 543 PRs closed. Migration guide: https://bevy.org/learn/migration-guides/0-18-to-0-19/
2026-06-20 additions
#24659 — PanCamera default button changed (BREAKING for dev-tools)
- What changed: PanCamera now checks the correct mouse button (not just any button). Default pan button changed from
MouseButton::LefttoMouseButton::Middle.- Migration impact: Breaking for code using PanCamera with default settings — left-click no longer pans. Middle mouse button is now required.
- Action items:
- If code relies on left-click panning (e.g., in dev tools or editor-like interfaces), configure
pan_button: MouseButton::Leftto restore previous behavior.- Update any documentation or user guides that mention PanCamera controls.
#24666 — bevy_scene std Result fix (no migration impact)
- #24666 MERGED (mockersf, Jun 20, merged by cart, 0.19.1 milestone, +1/-1).
- Migration impact: None — internal clippy lint fix. No API or behavioral change.
Updated practical checklist (Jun 20)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → 🔥 🆘 Fix PanCamera default button — #24659 changed default from left-click to middle mouse. Configurepan_button: MouseButton::Leftto restore old behavior. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 3/7 closed (42%). New patch milestone for post-0.19.0 fixes.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 34 open / 14 closed. Active development.^[https://github.com/bevyengine/bevy/milestones]
2026-06-21 additions
No migration-sensitive changes today
- 10 PRs merged, all additive, bugfix, or internal refactoring:
- #24636 (number_input scrubbing — additive UI feature)
- #24663 (Text performance fix — bugfix)
- #24629 (Sprite material module extraction — internal refactoring)
- 24670/24668 (Solari fixes — rendering quality)
- 24697/24693 (Version bump — CI)
- #24677 (Docs fixup — documentation)
- #24685 (Comment removal — cleanup)
- #24669 (Text measurement fix — bugfix)
Updated practical checklist (Jun 21)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: ~5/10 closed (~50%).^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: ~34/14 open/closed.^[https://github.com/bevyengine/bevy/milestones]
2026-06-22 additions
#18408 — 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]
- What changed: New
AsEntitytrait enablesEntityHashSet/EntityHashMapto accept wrapper types.EntitySet/EntityMaptrait bounds updated.- Migration impact: Breaking for code implementing
EntitySet/EntityMapdirectly. Most user code usingEntityHashSet/EntityHashMapis unaffected.- Action items:
- If code implements
EntitySetorEntityMaptraits directly, addAsEntitybound to trait implementations.- Review migration guide for
AsEntitytrait usage.
#24687 — Remove 0.19 deprecated code from bevy_ecs (BREAKING)
- #24687 MERGED (Trashtalk217, Jun 22, A-ECS, C-Code-Quality, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24687]
- What changed: Removes APIs deprecated in 0.18 that were marked for removal in 0.19.
- Migration impact: Breaking for code still using deprecated 0.18 APIs. Will fail to compile.
- Action items:
- Search for deprecated API usage warnings in 0.19 build output.
- Replace deprecated APIs with their documented replacements.
No other migration-sensitive changes today
- #24708 (sorted batching fix — WebGL2 bugfix, no API change)
- #24684 (clip_check_recursive fix — picking bugfix)
- #24671 (Solari MIS fix — rendering quality)
- #24650 (DX12 atomics fix — validation fix)
- #24237 (max_delta clamp — behavior correction)
- #24706 (sysinfo bump — dependency fix)
- #24713 (diagnostics overlay border radius — bugfix)
- #24714 (light probe import — shader fix)
- #24704 (Feathers radio bg — additive UI)
- #24688 (Okhsla/Okhsva prelude — additive)
- #24707 (gpu_readback log downgrade — logging change)
- #24692 (EnvironmentMapLight builder — additive)
- #24691 (NaN okhsl fix — color bugfix)
- #24653 (test deduplication — internal)
- #24667 (Solari DLSS toggle — example)
Updated practical checklist (Jun 22)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → 🔥 🆕 UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → 🔥 🆕 Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 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]
2026-06-23/24 additions
No migration-sensitive changes today
- 6 PRs merged, all bugfix, additive, or internal — no breaking API changes:
- #24710 (swash stable font id — internal text rendering performance fix)
- #24723 (InfiniteGrid Visibility fix — rendering bugfix)
- #24727 (Feathers png feature — feature flag fix)
- #24729 (IsDefaultUiCamera Clone — additive derive)
- #24719 (Feathers theme aware fixes — UI bugfix)
- #24701 (Number input polish — 0.20 milestone, additive UI feature)
Updated practical checklist (Jun 23/24)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 18/25 closed (72%), 7 open.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 23/30 closed/open (43%).^[https://github.com/bevyengine/bevy/milestones]
2026-06-25 additions
No migration-sensitive changes today
- 1 PR merged, targeting 0.20 milestone — additive UI feature, no breaking changes:
- #24705 (floating dialogs in Feathers — additive UI feature, no API break)
Updated practical checklist (Jun 25)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 18/27 closed (66%), 9 open.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 24/32 closed/open (43%).^[https://github.com/bevyengine/bevy/milestones]
2026-06-26 additions
#24676 — Rename NextState::set_if_neq 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]
- Migration impact: Breaking API change.
NextState::set_if_neqrenamed toset_if_differentto resolve naming clash withstd/corePartialEq::ne.- Action items:
- Find-and-replace all
set_if_neqcalls withset_if_differentin project code.- Check any documentation, tutorials, or BSN scenes that reference the old name.
- The method signature and behavior are unchanged — only the name differs.
#24742 — BSN nested entity references fix (no migration impact)
- #24742 MERGED (HeartofPhos, Jun 25, 0.19.1 milestone, A-Scenes, C-Bug, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24742]
- Migration impact: None — internal BSN scene expansion fix. If code had workarounds for nested entity reference spawning failures, those workarounds are no longer needed.
Updated practical checklist (Jun 26)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → RenameNextState::set_if_neqtoset_if_different— new breaking change from #24676. Find-and-replace required. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 19/28 closed (67%), 9 open.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 24/32 closed/open (43%).^[https://github.com/bevyengine/bevy/milestones]
2026-06-27 additions
#24672 — Apply temporal jitter to PreviousViewData (no migration impact)
- #24672 MERGED (JMS55, Jun 26, merged by alice-i-cecile, 0.20 milestone, A-Rendering, C-Bug, D-Straightforward).^[https://github.com/bevyengine/bevy/pull/24672]
- Migration impact: None — internal rendering fix for PreviousViewData temporal jitter. Adds
unjittered_clip_from_worldfor motion vector usage, but this is additive and does not break existing code.
Updated practical checklist (Jun 27)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → RenameNextState::set_if_neqtoset_if_different— breaking change from #24676. Find-and-replace required. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 20/28 closed (71%), 8 open.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 25/32 closed/open (44%).^[https://github.com/bevyengine/bevy/milestones]
2026-06-28 additions
#24776 — Stricter nonmax crate version requirement (no migration impact)
- #24776 MERGED (RCoder01, Jun 27, C-Dependencies, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24776]
- Migration impact: None — dependency version constraint fix. Only affects projects with pinned old
nonmaxversions.
#24770 — Clustered decal docs fix (no migration impact)
- #24770 MERGED (mgi388, Jun 27, A-Rendering, C-Docs, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24770]
- Migration impact: None — documentation-only fix.
#24768 — effective_speed accuracy fix (no migration impact)
- #24768 MERGED (akshitj11, Jun 26, A-Time, C-Bug).^[https://github.com/bevyengine/bevy/pull/24768]
- Migration impact: None — behavior correction. Code relying on previously incorrect
effective_speedvalues will see different (correct) numbers whenmax_deltaclamping is active.
Updated practical checklist (Jun 28)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → RenameNextState::set_if_neqtoset_if_different— breaking change from #24676. Find-and-replace required. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 20/28 closed (71%), 8 open.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 25/32 closed/open (44%).^[https://github.com/bevyengine/bevy/milestones]
2026-06-29 additions
#24736 — rust-version bumped to 1.96 (no migration impact)
- #24736 MERGED (taearls, Jun 29, A-Build-System, C-Bug, C-Testing, D-Trivial).^[https://github.com/bevyengine/bevy/pull/24736]
- Migration impact: None — build system fix. The declared minimum Rust version in
Cargo.tomlnow matches the actual requirement (1.96, due toassert_matches!usage in tests). No API change.
Updated practical checklist (Jun 29)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → RenameNextState::set_if_neqtoset_if_different— breaking change from #24676. Find-and-replace required. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 20/28 closed (71%), 8 open.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 25/32 closed/open (44%).^[https://github.com/bevyengine/bevy/milestones]
2026-06-30 additions
#23892 — Shrink previous mesh uniform to transform only (no migration impact)
- #23892 MERGED (pcwalton, Jun 29/30, A-Rendering, C-Performance, D-Modest).
- Migration impact: None — internal rendering optimization. No public API changes.
- Action items: None required. Projects using motion blur or TAA will benefit from the 3.68× speedup in
prepare_previous_mesh_uniformsautomatically.
Updated practical checklist (Jun 30)
→ 🔥 Carry forward: Remove
#{expr}name expressions from BSN — from May 31, still applies. → RenameNextState::set_if_neqtoset_if_different— breaking change from #24676. Find-and-replace required. → Removeinterner_namefromdefine_label!()calls — breaking change from #24445. → ReplacePbrNeutralwithKhronosPbrNeutral— #24530 merged. Find-and-replace required. → FixName::from(&str)calls — #24544 changedFrom<&str>toFrom<&'static str>. → UpdateEntitySet/EntityMaptrait implementations — #18408 addedAsEntitybound. Breaking for custom implementations. → Remove deprecated 0.18 API usage — #24687 removed deprecated bevy_ecs APIs. Code still using them will fail to compile. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → ReviewFont::from_bytes()usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → ReplaceComputePipelineDescriptor/VertexState/FragmentStateEqusage — #24502 removedEqderive. → ReplaceSCROLL_UNIT_CONVERSION_FACTORwith new Resource — #24512 removed constant. → Evaluate vertex buffer compression — new opt-in feature (#21926). → Test deferred/Solari/meshlet rendering — #24520 fixed regression. → Test Wayland fullscreen — fallback behavior changed (#22792). → Evaluate panic error handler — from Jun 2, still applies. → Retest queued scene spawning — from Jun 2, still applies. → Retest negative-scale double-sided meshes — from Jun 2, still applies. → Retest GPU HLOD / VisibilityRange — carry forward. → Gizmo regressions both fixed — from Jun 1, still applies. → Audit SortedRenderPhase usage — carry forward. → Check BSN caching syntax — carry forward. → 0.19.1 milestone: 20/35 closed (57%), 15 open. Scope expanded from 28 → 35 total items since Jun 29.^[https://github.com/bevyengine/bevy/milestones] → 0.20 milestone: 25/59 closed/open (42%). Scope expanded from 57 → 59 total items.^[https://github.com/bevyengine/bevy/milestones]
Related pages
- bevy — hub page for engine-level updates.
- bevy-game-dev-2026-06 — June engine changes.
- bevy-migration-2026-05 — May 2026 migration notes.
- bevy-migration-notes — Current watchlist and April 2026 migration notes.
- bsn — Bevy Scene Notation
- bevy-ui-text — Bevy UI text system concepts
- bevy-state-management — Bevy 0.16 状态管理指南