Bevy Engine Changes — July 2026

Monthly tracking page for Bevy engine main-branch changes. Sister page to bevy-migration-2026-07.

Continues from bevy-game-dev-2026-06.

2026-07-01 engine changes

  • 0 PRs merged Jun 30–Jul 1 — extremely quiet day. No merges in the 24-hour window.
  • 0.19.1 milestone: 20/38 closed (52% complete), 18 open. Scope expanded from 35 → 38 total items (3 new items added). Closed count unchanged at 20.^[https://github.com/bevyengine/bevy/milestones]
  • 0.20 milestone: 25/34 closed/open (42% complete), 34 open. Scope unchanged at 59 total items. Closed count unchanged at 25.^[https://github.com/bevyengine/bevy/milestones]
  • v0.19.0 stable remains latest release. No new RC or patch release.

2026-07-02 engine changes

  • 1 PR merged Jul 1–2 — quiet day with a single crash fix landing in 0.19.1.
  • #24807 — Prevent panic in check_dir_light_mesh_visibility (dylansechet, merged by alice-i-cecile, A-Rendering, D-Straightforward, P-Crash, 0.19.1). Fixes #24804. A subtle Local<Parallel<...>> buffer resizing bug in directional-light shadow visibility checking caused out-of-bounds indexing when mesh counts dropped and cascade counts rose in the same frame. Fix: resize all per-thread buffers before the parallel loop.
  • 0.19.1 milestone: 21/39 closed (53% complete), 18 open. Closed +1, scope +1 since yesterday.^[https://github.com/bevyengine/bevy/milestones]
  • 0.20 milestone: 25/59 closed/open (42% complete), 34 open. Unchanged.^[https://github.com/bevyengine/bevy/milestones]
  • v0.19.0 stable remains latest release. No new RC or patch release.

2026-07-03 engine changes

  • 0 PRs merged Jul 2–3 — no merges in the 24-hour window.
  • 0.19.1 milestone: 21/39 closed (53% complete), 18 open. Unchanged since yesterday.^[https://github.com/bevyengine/bevy/milestones]
  • 0.20 milestone: 25/60 closed/open (~42% complete), 35 open. Scope expanded from 59 → 60 total items (1 new open item added). Closed count unchanged at 25.^[https://github.com/bevyengine/bevy/milestones]
  • v0.19.0 stable remains latest release. No new RC or patch release.

2026-07-04 engine changes

  • 2 PRs merged late on Jul 3 (caught in today’s scan) — both documentation fixes, no functional changes.
  • #24852 — Fixes archived rfcs repo link in README.md (razlani, merged Jul 3, C-Docs, D-Trivial). Fixes stale README link to archived rfcs repository (#24709).
  • #24830 — document settings save location and TOML format (akshitj11, merged Jul 3, C-Docs, D-Trivial). Documents SettingsPlugin save paths across platforms and TOML format (#24699).
  • 0 PRs merged on Jul 4 itself.
  • 0.19.1 milestone: 21/39 closed (53% complete), 18 open. Unchanged since Jul 2.^[https://github.com/bevyengine/bevy/milestones]
  • 0.20 milestone: 25/60 closed/open (~42% complete), 35 open. Scope +1 total item since Jul 3; closed count unchanged.^[https://github.com/bevyengine/bevy/milestones]
  • v0.19.0 stable remains latest release.

2026-07-05 engine changes

  • 2 PRs merged Jul 4–5 — one rendering micro-optimization, one input bug fix.
  • #24844 — Increase MaterialProperties::draw_functions inline capacity (beicause, merged Jul 5, A-Rendering, D-Trivial, S-Ready-For-Final-Review). Increases the inline SmallVec capacity for draw functions in material properties. Rendering micro-optimization.
  • #24829 — Fix bevy_gilrs weak rumble motor never being driven (francisdb, merged Jul 5, A-Input, C-Bug, D-Trivial, S-Needs-Review). Fixes a bug where the weak rumble motor on gamepads was never actually driven. Only the strong motor worked.
  • 0.19.1 milestone: 21/40 closed (52% complete), 19 open. Scope +1 from Jul 4 (39 → 40 total). Closed count unchanged.^[https://github.com/bevyengine/bevy/milestones]
  • 0.20 milestone: 25/60 closed (~42% complete), 35 open. Unchanged.^[https://github.com/bevyengine/bevy/milestones]
  • v0.19.0 stable remains latest release.

2026-07-07 engine changes

  • 12 new PRs merged Jul 5–7 (excluding #24844 and #24829 already logged on 07-05) — significant burst of activity after a quiet period.
  • #24885 — Fix HandleTemplate::Value not adding the asset directly (andriyDev, merged ~Jul 6, A-Assets, A-Scenes, C-Bug, D-Straightforward, 0.19.1). Fixes a bug where HandleTemplate::Value did not correctly add the asset during scene/asset loading. Scene loading with inline handle values now works correctly.
  • #24880 — Solari: Fix normal maps and support two-channel maps (JMS55, merged ~Jul 6, A-Rendering, C-Bug, D-Straightforward, 0.19.1). Fixes normal map handling in Solari GPU path tracer and adds two-channel normal map support.
  • #24879 — Fix MP4 Audio Playback Failure in Bevy 0.19.0 (merged ~Jul 6, A-Audio, C-Bug, D-Straightforward, 0.19.1). Fixes MP4 audio playback failure introduced in Bevy 0.19.0.
  • #24859 — Text measurement min-content fix (merged ~Jul 6, A-UI, C-Bug, D-Straightforward, 0.19.1). Fixes text measurement behavior with min-content sizing. UI text layout bugfix.
  • #24781 — Update parley to version 0.11 (merged ~Jul 6, A-Text, C-Dependencies, 0.19.1). Bumps parley text layout dependency to v0.11.
  • #24764 — Solari: Fix removed RaytracingMesh3d component (merged ~Jul 6, A-Rendering, C-Bug, D-Straightforward, 0.19.1). Fixes an issue where RaytracingMesh3d component was removed in Solari path tracer.
  • #24863 — Expose bevy::pbr::gltf module (merged ~Jul 6, A-Rendering, C-Docs). Makes bevy::pbr::gltf module public.
  • #24838 — Remove old docs that no longer apply (merged ~Jul 6, C-Docs, D-Trivial). Documentation cleanup.
  • #24819 — Ignore ttf-parser advisory (merged ~Jul 6, C-Dependencies, D-Trivial). Cargo audit ignore for ttf-parser advisory.
  • #24761 — Bump super-linter/super-linter/slim from 8.6.0 to 8.7.0 (merged ~Jul 6, C-Dependencies, D-Trivial). CI dependency bump.
  • #24758 — Updated multiple_text_inputs example to use an observer (merged ~Jul 6, C-Docs, D-Trivial, A-Text). Example update to use observer pattern.
  • #24620 — Fix ScrollArea scroll speed (merged ~Jul 6, A-UI, C-Bug, D-Straightforward). Fixes scroll speed in ScrollArea UI widget.
  • 0.19.1 milestone: 29/48 closed (60% complete), 19 open. Significant progress since 07-05 (21/40 → 29/48). 8 new items closed, 8 new items added to scope.^[https://github.com/bevyengine/bevy/milestones]
  • 0.20 milestone: 25/61 closed (~41% complete), 36 open. Scope +1, closed unchanged.^[https://github.com/bevyengine/bevy/milestones]
  • v0.19.0 stable remains latest release. No new RC or patch release.

2026-07-08–23 engine changes

Gap update — 150 PRs merged across 16 days. Major milestones: 0.19.1 at 90.6% (imminent patch release), 0.20 at 57.6%. Key themes: wgpu 30, Solari v7, MeshUniform GPU allocation, bindless 2D, Feathers UI example migration (~30+ PRs), fallback fonts, rendering optimizations.

Architectural Milestones

  • #23662 — Move MeshUniform allocation from CPU to GPU (pcwalton, merged Jul 7). Major rendering architecture change. Mesh uniform data is now allocated directly on the GPU via AtomicSparseBufferVec, reducing CPU overhead.
  • #24841 — Upgrade to wgpu 30 (ChristopherBiscardi, merged Jul 16, 0.20). Significant graphics stack upgrade from wgpu 29 to wgpu 30.
  • #24767 — Solari v7 (JMS55, merged Jul 14, 0.20). 7th iteration of Bevy’s experimental GPU path tracer.
  • #24833 — Add bindless support for 2D materials (pcwalton, merged Jul 8). Extends bindless architecture from 3D to 2D materials.
  • #25005 — Use ECS for render world window data (IceSentry, merged Jul 22, M-Migration-Guide, 0.20). Breaking change: direct window data access in render systems replaced with ECS resource/component access.
  • #24378 — Fallback fonts (ickshonpe, merged Jul 17, 0.20). Support for fallback font chains, resolving missing glyphs from secondary fonts. Critical for CJK and emoji.

Rendering & Solari Fixes

  • #25070 — Remove expensive queue submit from sparse buffer vec (JMS55, Jul 21, C-Performance).
  • #25045 — Solari: Reduce transform GPU binding by 16 bytes per transform (JMS55, Jul 18, C-Performance).
  • #25046 — Solari: Reduce temporal shadow lag (JMS55, Jul 21).
  • #25043 — Fix previous frame depth-stencil view (JMS55, Jul 17, C-Bug).
  • #24957 — Fix parallel render graph (JMS55, Jul 14, P-Regression, 0.20).
  • #24984 — Fix crash in Bistro binning (pcwalton, Jul 16, P-Crash, P-Regression, 0.20).

0.19.1 Bugfix Cluster

  • #25068 — Fix Steam OSK shifted text input (0xEgao, Jul 22).
  • #24999 — Don’t cull rotated UI text glyphs (0xEgao, Jul 16).
  • #24998 — Fix atmosphere in rotated/Z-up worlds (Supremesv715, Jul 16).
  • #24982 — Wrong UI camera fix (ickshonpe, Jul 14).
  • #24977 — Fix crash adding ContactShadows at runtime (voidreamer, Jul 14, P-Crash).
  • #24972 — Fix remote entity allocation (ElliottjPierce, Jul 14, P-Unsound).
  • Plus #24861, #24843, #24866, #24876, #24817, #24802, #24797, #24749, #24746, #24734, #24674 — all 0.19.1 bugfixes.

New Features

  • #25007 — Entity label resolution for entity inspectors (alice-i-cecile, 0.20).
  • #24995 — Display impls for reflected types (alice-i-cecile, 0.20).
  • #24779 — Elliptical border radius support (ickshonpe).
  • #24784 — New menu-related widgets (viridia).
  • #25061 — ensure! macro for BevyError (0xEgao).
  • #24753 — World::resource_entity (Miguel0312).

Bulk UI/Feathers Migration

~30+ PRs from kfc35, taearls, and others migrating Bevy examples from legacy ui::widget::Button to Feathers UI widgets and bsn! syntax. This is Phases 1-6 of a systematic example overhaul, indicating Feathers is becoming the default widget framework.

Releases

No new releases since v0.19.0 (Jun 18). With 0.19.1 at 90.6%, patch release is imminent.

2026-07-24 engine changes

  • 3 PRs merged Jul 23 — all Feathers UI Phase 4 example migration (no functional changes).
  • #25130 — Migrate mixed_lighting to use FeathersRadio (kfc35, C-Examples).
  • #25124 — Migrate box_shadow to use FeathersRadio/FeathersNumberInput/FeathersButton + full bsn! (kfc35, C-Examples).
  • #25091 — Migrate occlusion_culling to use FeathersRadio (tevans-3, C-Examples).
  • Milestones: 0.19.1 unchanged at 58/64 (90.6%), 6 open; 0.20 scope +1 to 86 items, 49 closed (57.0%).^[https://github.com/bevyengine/bevy/milestones]
  • Releases: v0.19.0 (Jun 18) remains latest. No new RC or patch release.
  • Synthesis: Extremely quiet day. The Feathers UI example migration campaign continues steadily (Phase 4). No functional changes, no breaking changes, no performance impact.

2026-07-25 engine changes

  • 3 PRs merged Jul 24 — more substantive than yesterday: a Gizmo bug fix for 0.19.1, a Solari performance improvement, and code quality cleanup.
  • #25106 — Transform Gizmo Rendering Bug fix for custom viewport cameras (MrVintage710, milestone: 0.19.1). The overlay camera’s viewport was not being updated during position sync, causing place.
  • #25082 — Solari retained extract: only extracts changed entities instead of all entities per frame. 4 specialized systems replace the single extract-all loop. Performance improvement for the GPU path tracer (JMS55).
  • #25119Entity::PLACEHOLDER to Option<Entity> conversions in straightforward code paths. Progress on #25118 which aims to eliminate PLACEHOLDER as a null sentinel. Minor performance win. X-Contentious (greeble-dev).
  • No new releases. v0.19.0 (Jun 18) remains latest.
  • Milestones: 0.19.1: 59/64 (92.2%), 5 open (+1 since Jul 24). 0.20: 50/86 (58.1%), 36 open (+1 since Jul 24).^[https://github.com/bevyengine/bevy/milestones]

→ 续见 bevy-game-dev-2026-08