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 ScenePatchInstance incorrectly.^[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 FallbackErrorHandler instead 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_std projects 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!() with interner_name argument must remove it. The static interner is now hidden inside the intern() method.
  • Action items:
    • Remove interner_name argument from all define_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.

#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_compression field on Mesh or mesh_attribute_compression on GltfLoaderSettings.
  • 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() and last_run() methods on DetectChanges.

#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_and system 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. → 🆕 Remove interner_name from define_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. → Remove interner_name from define_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: PbrNeutral tonemapper renamed to KhronosPbrNeutral.
  • Migration impact (when merged): Find-and-replace PbrNeutralKhronosPbrNeutral in 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → 🔥 🆕 Review Font::from_bytes() usage — breaking change from #24362. Check migration guide at font_from_bytes.md. → 🆕 Watch PbrNeutralKhronosPbrNeutral rename — #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 PbrNeutralKhronosPbrNeutral in all code referencing this tonemapper variant.
  • Action items:
  • Search codebase for PbrNeutral and replace with KhronosPbrNeutral.
  • Review tonemapper docs — KhronosPbrNeutral is now explicitly NOT recommended as a default tonemapper.

#24519 — bsn! autocomplete fix (no migration impact)

#24538 — Text layout scheduling fix (no migration impact)

#24513 — resources_as_components migration guide docs (no migration impact)

  • #24513 MERGED (kfc35, Jun 6, merged into release-0.19.0 branch, 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → 🔥 🆕 Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Review Font::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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Review Font::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 From impls for SystemHandle → SystemId and impl Into<SystemId> on Commands::run_system*.

#24544 — Feathers scrollbar and list view (additive)

Updated practical checklist (Jun 8)

🔥 Carry forward: Remove #{expr} name expressions from BSN — from May 31, still applies. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Review Font::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: Eq derive removed from ComputePipelineDescriptor, VertexState, and FragmentState. Code that relied on Eq on these types will break.
  • Action items:
  • If code uses == or Hash-based collections on ComputePipelineDescriptor / VertexState / FragmentState, switch to alternative comparison.
  • New feature: materials can now specify WGSL pipeline constants in their specialize function.

#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_meshes renamed to ambient_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_meshes to use ambient_light_flags and the AMBIENT_LIGHT_FLAGS_AFFECTS_LIGHTMAPPED_MESHES_BIT constant.

#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_FACTOR replaced with a configurable Resource. If code referenced the constant directly, it will break.
  • Action items:
  • Replace MouseScrollUnit::SCROLL_UNIT_CONVERSION_FACTOR references 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Review Font::from_bytes() usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed ambient_light_affects_lightmapped_meshes to ambient_light_flags. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Review Font::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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Review Font::from_bytes() usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed ambient_light_affects_lightmapped_meshes to ambient_light_flags. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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 Name replaced with impl From<&'static str> for Name.
  • Migration impact: Breaking — code that passes non-static &str to Name::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) (takes String) or Name::from("static string") instead.
  • If using Name in 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_changed module is now public. Code that imported through bevy_asset::private can 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → 🔥 🆕 Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'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 both Resource and Component. → Review Font::from_bytes() usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed ambient_light_affects_lightmapped_meshes to ambient_light_flags. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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_settings crate 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'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 both Resource and Component. → Review Font::from_bytes() usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed ambient_light_affects_lightmapped_meshes to ambient_light_flags. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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)

  • #24659 MERGED (codecnotsupported, Jun 19, merged by alice-i-cecile, 0.19.1 milestone, A-Camera, A-Dev-Tools, C-Bug, +11/-5).
  • What changed: PanCamera now checks the correct mouse button (not just any button). Default pan button changed from MouseButton::Left to MouseButton::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::Left to 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → 🔥 🆘 Fix PanCamera default button — #24659 changed default from left-click to middle mouse. Configure pan_button: MouseButton::Left to restore old behavior. → Watch resources-as-components regression — #24591, #24592, #24594. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Fix PanCamera default button — #24659 changed default from left-click to middle mouse. → Watch resources-as-components regression — #24591, #24592, #24594. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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 AsEntity trait enables EntityHashSet/EntityHashMap to accept wrapper types. EntitySet/EntityMap trait bounds updated.
  • Migration impact: Breaking for code implementing EntitySet/EntityMap directly. Most user code using EntityHashSet/EntityHashMap is unaffected.
  • Action items:
  • If code implements EntitySet or EntityMap traits directly, add AsEntity bound to trait implementations.
  • Review migration guide for AsEntity trait 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → 🔥 🆕 Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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_neq renamed to set_if_different to resolve naming clash with std/core PartialEq::ne.
  • Action items:
  • Find-and-replace all set_if_neq calls with set_if_different in 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. → Rename NextState::set_if_neq to set_if_different — new breaking change from #24676. Find-and-replace required. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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_world for 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. → Rename NextState::set_if_neq to set_if_different — breaking change from #24676. Find-and-replace required. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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 nonmax versions.

#24770 — Clustered decal docs fix (no migration impact)

#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_speed values will see different (correct) numbers when max_delta clamping is active.

Updated practical checklist (Jun 28)

🔥 Carry forward: Remove #{expr} name expressions from BSN — from May 31, still applies. → Rename NextState::set_if_neq to set_if_different — breaking change from #24676. Find-and-replace required. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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.toml now matches the actual requirement (1.96, due to assert_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. → Rename NextState::set_if_neq to set_if_different — breaking change from #24676. Find-and-replace required. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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_uniforms automatically.

Updated practical checklist (Jun 30)

🔥 Carry forward: Remove #{expr} name expressions from BSN — from May 31, still applies. → Rename NextState::set_if_neq to set_if_different — breaking change from #24676. Find-and-replace required. → Remove interner_name from define_label!() calls — breaking change from #24445. → Replace PbrNeutral with KhronosPbrNeutral — #24530 merged. Find-and-replace required. → Fix Name::from(&str) calls — #24544 changed From<&str> to From<&'static str>. → Update EntitySet/EntityMap trait implementations — #18408 added AsEntity bound. 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. → Review Font::from_bytes() usage — breaking change from #24362. Check migration guide. → Update custom WGSL shaders for AmbientLightFlags — #24509 renamed field. → Replace ComputePipelineDescriptor / VertexState / FragmentState Eq usage — #24502 removed Eq derive. → Replace SCROLL_UNIT_CONVERSION_FACTOR with 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]