Bevy
Bevy is an open-source Rust game engine and ECS-first application framework. In this wiki, it is a first-class research and project area alongside AI Agent / enterprise AI topics.
Why it matters
ZoOL has multiple Bevy-related projects and learning/research threads. This page acts as the hub for Bevy engine notes, version changes, ecosystem findings, and project-specific references.
Current synthesis
-
bevy-ecs-game-type-fit captures a game-type selection heuristic for Bevy ECS: prefer high-density, high-frequency, homogeneous entity workloads, especially current 2D genres.
-
Recent main-branch activity suggests Bevy’s current momentum is strong in three directions that matter for application/game teams: ECS ergonomics, editor/UI capability, and migration hygiene for the upcoming release line.^[raw/articles/bevy-daily-2026-04-24-entitycommands-insert-if-neq.md]^[raw/articles/bevy-daily-2026-04-24-basic-clipboard-support.md]
-
2026-08-05 单日密集合并 14 PR(补采,此前搜索索引延迟遗漏),含 0.20 三个迁移级变更:shader 全面迁移 WESL(#25088, 378 files)、
iter_many返回Result(#25200, M-Migration-Guide)、ExtractComponentPlugin对AppLabel泛型化(#24423, M-Migration-Guide);另有 UI 破坏性变更CornerRadius值语义修正(#25050)与 BSN Ready event(#25296)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-08 ~ 08-11 main 连续 4 天无合并(commits API 验证:最后 commit 08-07T03:06Z #25184)——真实静默而非索引延迟;open PR 活动持续(#25352 ShaderModule 异步编译、#25319/#25358 SSAO 修复等),推测与维护者节奏/0.19.1 发布筹备相关[推测]。宽窗口复核 08-01..08-12 全部 31 个 merged PR 均已入库,另补采 4 个 08-02 盲区 PR(含 1 个 API 变更 #25267
set_display_handle→ unsafe)。 -
2026-08-11 合并恢复 + ECS 命令队列架构重构:合并暂停(08-08~08-11 连续 4 天静默)正式结束,单日合并 18 个 PR。其中 #25300(Simplify command queue by removing
RawCommandQueue, +189/-349, 5 files)是本月最重要的架构级变更——移除 ECS 命令队列的RawCommandQueueunsafe 抽象,命令队列直接存于 World 的UnsafeCell,Commands可重新#[derive(SystemParam)],净删 160 行且 unsafe 代码净减少。内部重构,public API 影响小,但长期使命令队列更安全、更可组合。^[raw/articles/bevy-pr-25300-remove-rawcommandqueue.md] -
2026-08-11 全景(18 PR 中另 10 个,宽窗口补采):0.19.1 milestone 100% closed(76/76),0.19.2 milestone 新出现(3 open)——补丁发布管线重新转动,0.19.1 tag 发布在即(v0.19.0 仍最新);0.20 72/114 closed(63.2%)。0.20 渲染侧继续集中推进:#24148(UI CPU clipping 支持旋转/缩放,
CalculatedClip变 enum,M-Deliberate-Rendering-Change,0.20 破坏性变更)、#24971(阴影间接参数越界写修复,P-Regression)、#25058(material bind group 复用,pcwalton)、#24928(2D mesh 保留式提取)、#25338/#25334(SSAO 双修复);另有 0.19.1 收尾 25367/25361/25253 与迁移项 #25294(EntityCursor 移至 bevy_picking)。迁移清单新增 2 项,详见 bevy-migration-2026-08。 -
2026-08-13 v0.19.1 正式发布(距 v0.19.0 55 天):0.19 系列首个补丁版本落地(08-13T00:02:58Z),终结了 08-05 起 5 个月观察期的 “v0.19.0 remains latest” 状态;0.19.1 milestone 关闭(75 closed,total 76→75 一项移出),0.19.2 已开启(3 open),0.20 74/114 closed(64.9%,+2)。补丁内容为 0.19.1 收尾的渲染/UI bugfix 批次(2D flicker #25253、SSAO 双修复 25334/25338、mesh GPU 内存泄漏 #25259 等)[推测——release notes 无逐项清单]。^[https://github.com/bevyengine/bevy/releases]^[raw/articles/bevy-daily-2026-08-12-merged-prs.md]
-
2026-08-12/13 merged 5 PR(08-12 凌晨批次 3 个为并发窗口盲区补采):ECS 多线程执行器 6 天内第 2 次修复(#25379 local_thread_running 标记泄漏,P-Crash,与 08-07 #25287 P-Unsound 构成
multi_threaded.rsbug 簇);Feathers UI 继续扩张(#25301 FeathersNumberInput 单位支持NumberInputUnits,修复 #25241);Solari 反射测试台(#25359,为未来反射 PR 铺路);#25362 wireframe_2d 示例迁移 FeathersRadio(#25032 系列)。详见 bevy-game-dev-2026-08。^[raw/articles/bevy-daily-2026-08-12-merged-prs.md] -
2026-08-14 补采 08-13 全天 8 PR(前次窗口 08-12T16:00–08-13T15:59 仅捕获 2/10):最重的是 #25157 per-column change tracking(pcwalton,0.20,+751/-39,31 files)——系统可跳过”自上一帧无组件变化”的整张表,明确以 Unity Megacity(~450 万实体)为规模目标,是 0.20 大规模场景性能的关键一步,与 08-05 25200/24312 同属 0.20 ECS 性能线;#25183 Extended material 2D 将
AsBindGroup从 bevy_pbr 提取至 bevy_render,bevy_sprite_render 新增MaterialExtension2d/ExtendedMaterial2d(2D 材质扩展机制,非破坏);另有 #24178 headless_renderer 复制时序修复、#25382 TilemapChunk mesh 缓存从未写入的修复、#25372 uniform buffer 加 label、#25397 PanCamera bsn! 宏支持、#25364 spin 0.12.2、#25387 testbed/ui 示例。Milestones:0.19.1 closed、0.19.2 2 open(-1)、0.20 75/115(65.2%,+1 closed)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-14 双 0.20 API 迁移级合并:#25337 Flat Pointer Events(cart,+875/-792,62 files)——Pointer 事件 API 扁平化
On<Pointer<Press>>→On<Press>,释放Press等名字供更高级事件(如Button)使用,picking 用户的大迁移项;#24013 Observer EventPatterns(ItsDoot,+517/-319,48 files)——新增EventPatterntrait 隐藏On的B类型参数(On<'w, 't, E: EventPattern>),observer 泛型简化,与 bevy-ecs-event-state-roadmap 的 observer 演进线衔接。两者均 M-Migration-Guide + 0.20,迁移清单 +2。另:bevy_examples crate 基建系列 issue(#25402–#25406,全部 0.20)启动——独立 examples crate + 官网导出流程;0.19.2 进入 bugfix 收尾(4 open:1 issue + 3 PR);0.20 77/122(63.1%,+7 total scope growth)。main 自 08-14T01:47Z 起约 22h 静默(合并节奏回落)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-15 ~ 08-16 合并暂停第 2 天(0 PRs merged):main 自 08-14T01:11Z 起约 47h 静默(commits API 验证,非索引延迟),但 open PR 活跃(568 个,最晚更新 08-15T23:37Z #25275)——判定为 merge pause 而非 dev stop,与 08-08~08-11 模式一致。Milestones 无变化(0.19.2 4 open / 0.20 77/122 63.1%);新信号:#25418
Dir2::perp缺失 ↔ 开放 PR #25422;#25416mark_dirty_treesentity 复用后跳过 live entities ↔ 开放 PR #25419;0.20 新增 #25413(Taffy 13 升级,bevy_ui 布局依赖大版本)与 #25408(insertion 性能回归缓解)。合并恢复后首批候选:#25421 SpriteMesh 内存泄漏修复、#25414 clearcoat div-by-zero、#25319 SSAO viewport 修复。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-17/18 合并暂停修正 + 静默延续:08-16 凌晨静默观察(0 PRs)之后,#25391 于 08-16T20:38Z 晚点合并(
impl EntityCommand for Arc<dyn Fn(EntityWorldMut)>,Person-93,+14/-0,1 file,纯增量 API——补齐 Arc 命令闭包实现,跨线程共享/克隆命令场景可用)——暂停被单个 PR 打破而非批量恢复;随后 08-17/08-18 0 commits(main 自 08-16T20:05Z 约 36h 无新 commit)。Milestones:0.19.2 6 open(+2)、0.20 77/117(65.8%,total -5 scope 收缩)。开放 PR 持续活跃(#25417/#25392 picking MouseButton 重构、#25390 DynamicArrayUniformBuffer、#25389 multiview_mask 暴露)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-18 合并恢复(14 PRs merge-queue drain):合并暂停正式结束——08-16 单 PR 打破后,08-18 全天三波合并 14 PR。最重要信号:① 0.20 迁移项 +1——#25444 删除全部 deprecated
load_*方法(完成 #23663 迁移,旧 asset API 在 0.20 编译失败);② HDR 输出系列启动——#25393 bevy_color primaries 模块(CIE 1931 xy 色度学 + RGB 转换矩阵,明确标注 “first piece of that series”)+ #25394with_luminance去 clamp / Laba→Lcha 修复,0.20 渲染输出方向新信号;③ ECS 性能线延续——#25429 静态提示恢复 08-13 #25157(per-column change tracking)的 benchmark 回退;④ 渲染 bugfix 簇——#25424(light texture 误当 decal,fixes #24836)、#25421(SpriteMesh 哈希碰撞 + 内存泄漏)、#25451(entity_pair_is_visible 二分查找)。0.19.2 bugfix 收尾 2 项落地(#25414 clearcoat div-by-zero、#25451 entity_pair_is_visible——milestone 自 6 open/0 closed 变为 2 closed/7 open,0.19.2 stable 补丁集实质启动)。Milestones:0.19.2 2 closed / 7 open、0.20 79/118(66.9%)。08-15/16 预言的合并恢复候选(#25421/#25414/#25422)全部兑现。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-19 merge surge(25 PRs,8 月单日纪录):合并暂停彻底结束,单日合并量两倍于 08-18(14)与 08-05(14)。核心信号:① extraction 基建独立 crate 落地——#22852
bevy_extract(M-Migration-Guide, 0.20, 51 files)兑现 08-05 对 tracking #24483 最终步的预言,ExtractComponent/ExtractResource迁出bevy_render,自定义渲染插件 0.20 需改 import;② 编辑器相机上游化——#25434 bevy_editor_cam(+3622 行, M-Release-Note),Bevy Editor 相机能力进入官方核心;③ UI 相对单位——#25231Val::Em/Val::Rem(0.20, +816);④ pcwalton 双性能 PR——#24922 GpuComponentArrayBuffer 任意 instance 数据 + #25292 动画子图求值;⑤ 0.19.2 补丁集推进——4 个 0.19.2 bugfix 落地(#25386/#25443/#25427/#25450),milestone closed 2→7;⑥ Taffy 13 升级落地(#25413, 0.20 UI 布局依赖)。Milestones:0.19.2 7/10(70%)、0.20 83/121(68.6%)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-20 ~ 08-21(8 PRs,合并节奏回落至常态):核心信号:① ECS 性能线收官一步——#25264 parallel contiguous iteration(A-ECS, C-Performance, X-Contentious, +1114/-34)把
par_iter/par_iter_mut基建带到 contiguous 迭代(新ContiguousQueryDatatrait),补全 08-13 #25157 summary ticks 的并行化缺口,many_cubes 160 万实例下extract_meshes_for_gpu_building5.13 ms → 0.039 ms(132×)——0.20 ECS 性能三件套(#25157/#25429/#25264)齐备;② 0.20 render-path work 前哨——#25480 Tonemapping/DebandDither 移至bevy_render::view(旧路径 re-export 兼容 import,但 reflected type path 变化影响 scene 文件与 BRP 键,0.20 迁移项 +1),为 upcoming render-path 重构铺路,Tonemapping::LinearPR 将构建其上;③ #25423 Solari 反射去噪扩展(PSR 覆盖更多表面类型);④ #24989 winitReactive(Duration::MAX)失焦无限重绘 bugfix;⑤ #25493 Rust 1.98.0 CI 修复(P-Critical,工具链跟随)。Milestones:0.19.2 7/12(58.3%,scope +2)、0.20 83/122(68.0%,scope +1)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-22(5 PRs,42.5h 静默后晚间 drain):核心信号:① Area Light 深化启动——#24827 Cluster
RectLight(+270/-74, 15 files, X-Uncontroversial)把矩形 area light 纳入 GPU clustering 管线,解除数量上限并提升性能(WebGL2 回退非聚簇路径),Addresses #23700 第一个 item——0.19 引入 Area Lights 后 0.20 的深化方向,承接 08-18 #25424(light texture 误当 decal)同域修复;② 测试基建常态化——ickshonpe 同日 3 PR:#25482 font change detection 回归测试 + #25299 testbed_ui ChangeDetection 场景 + #25486 Feathers shader import 1 行修复,change detection 正确性测试持续加码;③ 计时模式参考——#25489 将 pan_orbit_camera 动画从全局Instant::now()改为Res<Time<Real>>+Timer(closes #25469,bevy_editor_cam 上游化收尾),相机动画/工具代码可参考该模式。Milestones:0.19.2 7/12 持平、0.20 83/124(scope +2)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-23(2 PRs,依赖清理日):main 自 08-22T21:01Z 起约 21.4h 静默后仅 2 个依赖层小合并——① #25522 移除
bevy_ptr的bevy_utils依赖(mnmaita, D-Trivial, +0/-1, 1 file)——08-20 #25264(parallel contiguous iteration)重写后的遗留清理,印证大 PR 的持续影响链;② #25323 base64 0.22→0.23 例行 bump(dependabot)。零迁移敏感项、零 important;Milestones 双持平(0.19.2 7/12、0.20 83/124)。非 merge pause(open PR 586 活跃至 08-23T23:07Z)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。 -
2026-08-24 ~ 08-25 静默延续(0 PRs merged):main 自 08-23T22:25Z(#25323)起约 26h 无新 commit(commits API 验证;宽窗口 merged:08-22..08-26 total 7 全部已入库,无遗漏)——8 月第 3 次静默窗口,merge pause 延续(open PR 活跃至 08-25T00:17Z #25506,非 dev stop)。Milestones:0.19.2 7 closed / 7 open(total +2 scope growth——新增 25525/25535 两个 UI bugfix PR,closed 持平 7/14=50%)——补丁发布后移;0.20 83/125(closed 自 08-21 起连续持平 83,total +1)——0.20 冻结态等待 0.19.2 收尾。新信号:#25539 FXAA+后处理快速闪烁 bug(C-Bug, S-Needs-Triage);开放 PR 候选 #25514(bevy::extract 导出修复,#22852 收尾)、#25542(Timer::almost_finish panic 修复)。详见 bevy-game-dev-2026-08 与 bevy-migration-2026-08。
2026-04-24 watchlist
EntityCommands::insert_if_neqgives ECS code a cleaner way to avoid redundant component writes when values have not changed; this is especially relevant for change-detection-sensitive gameplay and UI update flows.bevy_clipboardadds a real clipboard abstraction for text/image workflows, which raises Bevy’s usefulness for in-engine tools, dev overlays, and editor-like UX rather than gameplay-only shells.- Picking now supports custom hit metadata, making it easier to propagate richer interaction context from raycasts into downstream systems without parallel side channels.
- Two merged migration-guide PRs indicate that 0.19-era upgrades will likely include feature-flag cleanup in
bevy_transformand UI type renames in the widget layer.^[raw/articles/bevy-daily-2026-04-24-bevy-transform-feature-flags.md]
2026-04-25 watchlist
- Bevy main had no new GitHub release in the checked window, but several merged PRs reinforce the 0.19 direction: UI/text input polish, remote/dev-tool examples, and rendering correctness for web / color-management edge cases.^[raw/articles/bevy-daily-2026-04-25-text-input-default-colors.md]^[raw/articles/bevy-daily-2026-04-25-brp-screenshot-example.md]
- UI focus events are now deduplicated when focus does not actually change; code that previously worked around repeated
FocusLost/FocusGainedevents should be rechecked during upgrade. - Rendering fixes landed for
CompositingSpace::Srgbclear color, WebGL2 motion blur, and Solari BRDF tangent-space seams. These are most relevant to browser targets, color-sensitive 2D/3D visuals, and experiments with Bevy’s newer rendering paths.^[raw/articles/bevy-daily-2026-04-25-srgb-clear-color-fix.md]^[raw/articles/bevy-daily-2026-04-25-motion-blur-webgl2-fix.md] - Two open issues are worth watching rather than treating as settled facts:
AssetServer::load_foldercan deadlock with file-watcher add/remove events, and composed run conditions usingnot(...).and(...)may not behave as expected in 0.18.1 / main reports.^[raw/articles/bevy-daily-2026-04-25-load-folder-file-watcher-deadlock.md]
2026-04-26 watchlist
- Bevy 0.19 milestone is 95% complete (330 closed, 15 open issues → now ~11 open). No release date announced yet, but the merge train is clearly accelerating. Key open blockers include a rendering performance regression in mesh specialization (#23114), Vulkan flashing in the Bistro scene (#23183), and an ECS query performance regression from FilteredAccess changes (#23464).
- IME support for text input merged (#23841). alice-i-cecile shipped CJK input method editor integration as a text-input MVP. This is critical for any Bevy project targeting East Asian users or needing multi-language text input.
- Number input widget merged (#23842). New numeric input widget for editing Vec3 and similar types; aimed at editor/tooling prototyping. Merged as MVP with follow-up issues planned.
- Point/spot light shadow maps now render once (#23713). Regardless of how many cameras view the same light, the shadow map is computed only once. Significant performance win for split-screen, camera-stack, or reflection scenarios.
- Camera swap chain and rendering fixes (#23959). Camera output swap chain acquisition and view target rendering bugs were fixed, improving rendering correctness for the 0.19 milestone.
- ECS event reflection for dynamic observers (#23973).
register_event_keyis now exposed through reflection, enabling dynamic observer patterns without manual registration. - Asset processing directory stuck bug fixed (#23984). Empty processed directories could previously get permanently stuck; now cleaned correctly.
2026-04-27 watchlist
load_folderhot-reload deadlock is now FIXED (#23980). The previously tracked deadlock bug whereAssetServer::load_foldercould freeze during hot-reload file-watcher events has been resolved. Projects relying on folder hot-reload should see stable behavior in 0.19.FocusGainedevent gainsFocusCauseenum (#23993). A newFocusCauseenum (Pressed,Navigated) distinguishes how a widget received focus. Single-line text inputs now select-all on navigation (HTML-aligned behavior). Breaking for code that pattern-matches onFocusGainedfields.web_asset_cachecompiles in single-threaded mode (#23994). The web asset cache feature now works withoutmulti_threaded, usingFileReaderinstead ofasync_fs::File. Relevant for wasm / single-threaded builds.- 0.19 milestone now has ~11 open issues (down from 15). Remaining blockers include rendering regressions on Vulkan (#23183) and DX12 (#23573), WebGL2 issues (#23627, #23975), Safari/WebGPU flashing (#23753), and shadow map visibility range (#23991).
2026-04-28 watchlist
- 0.19 milestone now 93% complete (294/315 closed, 21 open issues total per milestones page; 14 visible in current milestone view). The increase from ~11 to 21 open issues reflects new issues filed against the milestone rather than regressions — the merge train is still progressing.
- PR #23996 — visibility range shadow fix (kfc35, open, awaiting pcwalton review). Fixes shadows popping in
visibility_rangeexample by correctingNoCpuCullingopt-in for GPU visibility range culling. Does NOT fix the--no-cpu-cullingcase. - PR #24001 — GhostNode update fix (ickshonpe, open). UI node and Taffy node trees were not synchronized after
GhostNodeadd/remove/detach. Fix collects non-ghost ancestors and updates Taffy children. Previously-failing tests now pass. - PR #23790 — PCSS light despawning fix (kfc35, approved by alice-i-cecile). Adds shadow maps and extracted lights to
SyncComponentfor light entities, fixing the broken PCSS example (#23769). Also eliminates one-frame darkness blip when toggling light types. - PR #23982 — mesh view bind group layout on demand (beicause, approved by kfc35, awaiting IceSentry). Fixes WebGL2 3D scene (#23627) by creating bind group layouts on demand instead of pre-allocating exponential combinations. Reduces sampled textures to 17. Has migration guide.
- New issue #23997 — spotlight/rect_light examples render incorrectly (mockersf, 2026-04-27). Visibly broken rendering on Linux and macOS. Added to 0.19 milestone.
2026-05-01 watchlist
- Scene Components merged (#24008, by cart). A landmark architectural PR: introduces
SceneComponenttrait + derive, enabling components to bind to associated scenes that are expanded through BSN inheritance syntax such as:Player. Plaincommands.spawn(Player::default())does not expand the scene and logs an error. Scene logic lives inbevy_scene, notbevy_ecs. Future static enforcement deferred to 0.20. This is the single most significant merge since Required Components. - EditableText scrolling/cursor fixes (#24032, by ickshonpe). Fixes Chinese text cursor jitter (#23931) and partially addresses cursor racing during text deletion (#23933). API change:
cursor: Option<Rect>→cursor: Option<(bool, Rect)>. Critical for any project with CJK text input. - Point light ExtractedView/Frustum fix (#24038, by kfc35, merged by alice-i-cecile). Shadows from dynamic point/spot lights no longer disappear or glitch when lights move. Completes the “render once” shadow map optimization.
- 0.19 milestone now 96% (349/363 closed, 14 open). Up from 93% / 21 open on 2026-04-28. 0.20 milestone already created (5/15, 33%). Release is very close.
- New issue: AppExit hang (#24035) on 0.18.1 macOS Metal. App hangs indefinitely when adding per-frame systems after screenshot queuing or overwriting
init_resourceviainsert_resource. Workarounds documented but issue is open.
2026-05-02 watchlist
- #23982 — Mesh view bind group layout on demand: removes exponential pre-allocation, fixes WebGL2
3d_sceneregression (#23627). Trade-off:get_view_layoutslightly slower. - #24049 —
TextLayoutconstructor rename:new_with_justify→justify,new_with_linebreak→linebreak,new_with_no_wrap→no_wrap. Breaking API change. - 0.19 milestone: 349/363 closed, 14 open (96%). Remaining open issues are mostly rendering bugs: DX12 black meshes (#23573), Safari+WebGPU strobing (#23753), WebGL2 deferred rendering (#23975), visibility range shadow popping (#23991), OOM recovery flashes (#23183).
- 0.20 milestone also created: 5/15 closed (33% complete).
- Related: bevy-migration-notes, bevy-game-development, bevy-projects
2026-05-03 watchlist
- #24066 — CAS + SMAA flickering fix (JMS55, merged May 2). Fixes screen flicker when contrast-adaptive sharpening (CAS) is combined with SMAA anti-aliasing at non-zero sharpening strength.
- 0.19 release notes being drafted — #24029 (Trashtalk217, merged Apr 30) is the first pass at 0.19 release notes. This is a strong signal that 0.19 launch is imminent — the release team is actively preparing the announcement.
- 0.19 milestone: 359/381 closed (94.2%). Open issues increased from 14 to 22 over the weekend as new edge cases were filed. This is typical behavior as release approaches — the total milestone scope expands. 0.20 remains at 5/15 (33%).
- andriyDev batch: ~20 old PRs (mostly asset pipeline improvements from 2025) were batch-updated on May 2, possibly for label/status cleanup or stabilization review. Signals ongoing asset infrastructure maintenance ahead of 0.19.
2026-05-05 watchlist
- Feathers API reaches final form (#24108, alice-i-cecile).
bevy_experimental_feathersrenamed tobevy_feathers. With Scene Components completing the architecture, feathers is no longer experimental. Migration guide included. Bevy examples migration to feathers widgets now unblocked.- wgpu bumped to 29.0.3 (#24064, kfc35). Should fix the long-standing DX12 black meshes regression (#23573), a major 0.19 blocker. Also fixes #23220.
Commands::insert_resource_if_neq(#24082, micttyoid). New ECS API — resource companion toEntityCommands::insert_if_neq. Fixes #24041.- Resources stored on sparse sets (#24077, Trashtalk217). Micro-benchmarks show ~10% faster
resource::get(6.38ns). ECS performance optimization.From<Val>forFontsize(#24076, ickshonpe). UseValpx/vh/etc helpers to set font sizes in bsn! macro.Val::Auto→FontSize::Rem(1.),Val::Percent(x)→FontSize::Rem(x/100.).- Window resize events pushed to
bevy_window_events(#24046, ProffDea).WindowResized,WindowBackendScaleFactorChanged,WindowScaleFactorChangednow correctly delivered asWindowEventvariants. Fixes long-standing #15268.- WebGL2 background motion vectors fix (#24067, kfc35). Fixes Forward+Prepass option on
deferred_renderingexample for WebGL2 (#23975).- LTC LUT feature gate (#24065, beicause). LTC LUTs now behind feature flag instead of always requiring ktx2+zstd. Reduces default dependency footprint.
- 0.19 milestone: 382/391 (97.7%), only 9 open. Up from 359/381 (94.2%) on May 3. 23 more issues closed. Release is extremely close — potentially this week.
- 0.20 milestone: 7/18 (39%). Steadily growing.
2026-05-06 watchlist
- Disabled/Enabled state scoped components (#24142, Freyja-moth). New ECS feature mirroring the
DespawnWhen/DespawnOnEnter/DespawnOnExitpattern:DisableWhen,DisableOnEnter,DisableOnExit,EnableWhen,EnableOnEnter,EnableOnExit. Tagged X-Contentious but approved and merged. Useful for clean state-driven entity toggling without manual system logic.- Prepass indirect parameters fix (#24113, beicause). Fixes rendering when early prepass is enabled without depth prepass or shadow maps — e.g.
motion_blurexample was broken. Milestone: 0.19.- clip_check_recursive improvements (#24135, ickshonpe). UI/picking optimization: skips clip containment test when no clipping active, uses
try_inversefor non-invertible transforms.- 0.19 milestone: 384/396 (97.0%), 12 open issues. Up from 382/391 (97.7%, 9 open) — 3 new issues filed against milestone. Still no release published; v0.18.1 remains latest.
- Watch: feature flag reshuffle (#22488, 0.19, X-Contentious). Moves
bevy_window,bevy_input_focus,custom_cursorto alternate feature collections. Merged migration guide included; could land before 0.19 final.- Watch: quit on RenderErrors by default (#24131, kfc35, 0.19, X-Contentious). Proposal to quit application on any render error instead of silently degrading. Controversial trade-off between reliability and accessibility.
2026-05-07 watchlist
- #24131 — Quit on RenderErrors MERGED (kfc35, 0.19). Previously tracked as a watch item; now merged. Default error policy changed from
Ignoreto quitting the application on anyRenderError. Applications that survived render errors (e.g. lost device on WebGL2) will exit instead. X-Contentious but approved.- #24124 — bsn! codegen reduction (cart, 0.19). Reduces codegen and debug symbols by combining scene implementations into a single
SceneFunction. Build-time and debug-size improvement.- #24158 — Disable/Enable recursive over Children (Freyja-moth, 0.19). Bug fix for #24142: disabling/enabling now recurses over the Children hierarchy via
insert_recursive(Disabled).- #24095 — EnvironmentMapUniform removed (beicause, 0.19, M-Migration-Guide). View environment map rotation now stored in
LightProbesUniform. Breaking change with migration guide.- #24154 — ImageNode measure + VisualBox rename (ickshonpe).
OverflowClipMarginBox→VisualBox, fixes image measurement and border/padding drawing.- #24037 — ShaderDefVal Cow allocation (CaptainTimon).
String→Cow<'static, str>eliminates heap allocation for static shader defines.- **New issue 24162 — Shadows no longer render after minimize/restore (andriyDev, 0.19, P-Regression). New regression filed May 6.
- 0.19 milestone: 395/398 (99%), only 3 open issues. Down from 384/396 (97.0%, 12 open) on May 6. 11 issues closed, 2 new filed. Release is imminent — could be within days.
- 0.20 milestone: 7/19 (36%), 12 open. Steadily growing.
- 0.20 milestone: 7/19 (36%), 12 open. Steadily growing.
2026-05-08 watchlist
- #24152 — AnimationClip curve sampling (Hilpogar, 0.19). Adds
sample_clampedmethod toAnimationClipandAnimationCurvetrait for sampling animation properties at a specific time. First part of a larger root motion proposal (#23355). Enables third-party crates to sample animation curves directly.- #24180 — RenderVisibleEntitiesClass made public (komadori, 0.19). Exposes
added_entities,prepare_for_new_frame(), andupdate_cpu_culled_entities()onRenderVisibleEntitiesClassfor third-party rendering crates needing custom visibility systems.- #24168 — World::register_resource deprecated (SpecificProtagonist, 0.19). Small ECS cleanup — previously missed deprecation.
- #24167 — Render graph as systems release notes (tychedelia, 0.19). Documentation improvement for upcoming 0.19 release notes.
- 0.19 milestone: 398/404 (98.5%), only 6 open issues. Up from 395/398 (99%, 3 open) on May 7 — 3 new issues filed, 0 closed. Release is extremely close.
- 0.20 milestone: 7/19 (36%), 12 open. Unchanged from May 7.
2026-05-09 watchlist
- Resource hooks & immutable resources (#24164, SpecificProtagonist, 0.19, M-Release-Note). Major new ECS feature for 0.19: hooks and immutable resources, enabling listening to resource changes similarly to component hooks, plus resources that cannot be mutated after insertion. 23 comments, well-reviewed.
- 0.19 release note sprint — Four release-note/cleanup PRs merged in one day: #24176 (alice-i-cecile, comprehensive pass), #24202 (Feathers widgets), #24200 (Solari), #24198 (mockersf, final content cleanup). The strongest signal yet that 0.19 is about to ship.
- Fix stale directional light shadow map caching (#24199, JMS55, 0.19, P-Regression). Fixes a rendering regression where directional light shadow maps could become stale.
- Support all text styles for text input (#24187, chronicl, 0.19). Text input widget now supports all text styles.
- Tileset grid support (#24132, Blue-Pilkinton-Ching, 0.19). Adds tileset grid support via
ImageArrayLayoutfor tilemap and sprite-sheet workflows.- OpenType font variations (#24088, chronicl, 0.19). Variable fonts support (weight/width/slant axes) added to Bevy text rendering.
- 0.19 milestone: 417/420 (99.3%), only 3 open issues. Up from 398/404 (98.5%, 6 open) on May 8. 19 more issues closed. The three remaining open issues are all visibility-range shadow rendering regressions with PR fixes in progress.
- 0.20 milestone: 7/20 (35%).
2026-05-10 watchlist
- #24214 — Fix typo in doc comment (amtep, 0.19, D-Trivial). Only one PR merged since May 9; the merge train has slowed as the release enters final freeze.
- 0.19 milestone: 418/423 (98.8%), 5 open issues. Up from 417/420 (99.3%, 3 open) on May 9 — 1 issue closed, but 2 new issues added to milestone scope. Release remains imminent but not yet published.
- 0.20 milestone: 7/20 (35%).
- No 0.19 release published yet; v0.18.1 remains latest.
2026-05-13 watchlist
- #24216 — Fix flickering shadows (JMS55, merged May 12). Fixes #24215: on Windows 11 Vulkan, shadows flickered for exactly one frame after minimizing and restoring the window. This is the follow-up fix for #24162 (shadows disappear after minimize/restore, tracked May 7).
- 0.19 milestone: 423/431 (98.1%), 8 open issues. Up from 418/423 (98.8%, 5 open) on May 10. Five issues closed, three new issues added. Release remains imminent.
- #24252 — GPU visibility range culling revert pending (kfc35, May 11, open, approved). If the two targeted fixes (#24133, #24197) cannot land in time, the team will revert #23115 (GPU visibility range culling) to avoid shipping a shadow regression. JMS55 and Zeophlite both approved the pragmatic revert. This is the current 0.19 release gate.
- Shadow pass split migration guide merged (kfc35). Documentation PR for the shadow_pass architecture change.
- RunGeometry bounds fix merged (ickshonpe). UI/Text bug fix for RunGeometry bounds calculation.
- DespawnOnExit/DespawnOnEnter log spam fix (Pronoiai, 0.18 backport). Fixes excessive log spam from state-scoped components.
- 0.20 milestone: 7/20 (35%).
- No 0.19 release published yet; v0.18.1 remains latest.
2026-05-14 watchlist
- 🚨 Bevy v0.19.0-rc.1 RELEASED (mockersf, May 13). First release candidate for 0.19. Pre-release tag. 36 community reactions. This is the first RC for the 0.19 cycle.
- #24252 — GPU visibility range culling REVERT MERGED (kfc35, May 13). The tracked release gate has been resolved. Rolls back #23115 to avoid shadow regressions in 0.19. This was the single biggest blocker for the 0.19 release.
- #24260 — EditableText drag selection fix (ickshonpe, May 13, 0.19). Fixes drag selection behavior in editable text fields.
- #24265 — RenderGraph in prelude + migration guide (kfc35, May 13, 0.19). Adds RenderGraph to
bevy_render::preludeand specifies its location in the migration guide.- #24225 — FXAA/SMAA systems made public (komadori, May 13, 0.19). Exposes FXAA and SMAA system symbols for user-level system ordering constraints.
- Minor docs: #24249 (ECS docs, eswartz), #24222 (resources-as-components trait tags, SpecificProtagonist), #24271 (typo, mamekoro) — all merged May 13.
- 0.19 milestone: 433/440 (98%), 7 open issues. Up from 423/431 (98.1%, 8 open) on May 13.
- Known rc.1 issues: #24282 (
bevy_settingsfails to compile in 0.19.rc.1), #24279 (crates.io naming conflict forbevy-settings), #24275 (tileset y-axis revert pending).
2026-05-15 watchlist
- No new merged PRs since May 14 — the merge train is frozen post-rc.1. Only CI/merge queue retries for previously-approved PRs.
- 0.19 milestone: 434/443 (97%), 9 open items. Unchanged from May 14. Release is blocked on SME decisions and a few remaining fixes.
- 🆕 #24289 — pcwalton’s proper visibility range shadow fix (opened May 14, S-Needs-Review). This is architecturally significant: introduces
ShadowLodOrigincomponent for shadow map visibility range resolution, and addslod_view_world_positionto the GPU View uniform. This is the correct fix for #23991 that replaces the temporary GPU culling revert (#24252 merged May 13). If this lands, the team may un-revert #23115 in 0.19 or defer to 0.20. 209 additions / 24 deletions across 10 files. 12 comments. Key insight: visibility ranges for point/spot light shadow maps now resolve relative to a “shadow LOD origin” instead of the view.- #24278 — SelectAllOnFocus (ickshonpe, approved by alice-i-cecile, in merge queue). Makes text input select-all-on-focus opt-in via
SelectAllOnFocuscomponent instead of default behavior. CI previously failed; retrying.- #24286 — TextLayout migration guide (urben1680, approved by mnmaita, in merge queue). Adds migration guide for
TextLayoutconstructor renames and fixesAccessdeprecation messages. Also retrying after CI failure.- #24282 — bevy_settings compile failure (alice-i-cecile, S-Ready-For-Implementation, D-Trivial). Trivial fix — missed renames from #24279. Not yet picked up.
- #24279 — crates.io naming conflict (mockersf, S-Waiting-on-SME).
bevy-settingscannot be renamed tobevy_settingsbecause crates.io rejects previously-named crates. alice-i-cecile suggests asking crates.io team for override. This is an RC-blocking issue.- #24275 — tileset y-axis revert (hxYuki, S-Waiting-on-SME). Proposes reverting #21684 tile y-axis direction. Awaiting subject matter expert decision.
- #24294 — multiple_text_input example layout fixes (ickshonpe, S-Needs-Review). UI/text example fixes.
- #24295 — multiple_text_inputs navigation on submission (ickshonpe, S-Needs-Review). Example improvement: Tab-to-next-input behavior.
- #24283 — Bevy Book Release Note (kfc35, S-Ready-For-Implementation). Release documentation still pending.
2026-05-16 watchlist
- #24243 — Solari BRDF layering improved (dylansechet, merged May 15). Fixes energy distribution between specular and diffuse lobes in the Solari BRDF by adopting an OpenPBR-inspired layering model with Filament’s multiscattering correction. Breaks reciprocity but acceptable for unidirectional path tracer. Also hoists
F_ABtexture sampling for performance. Split from #23818. Related: #24246 (energy conservation improvement, still open). See bevy-solari-pathtracer for deep-dive.- 0.19 milestone: 434/445 (97%), 11 open. Two new issues filed: #24306 (selection rect gap fix, ickshonpe) and #24309 (remove .bsn asset format mentions from docs, laundmo). Milestone scope expanded by 2 issues since May 15.
- Still no rc.2 or 0.19 final. Four PRs are community-approved (S-Ready-For-Final-Review) and waiting for maintainer merge: #24278 (SelectAllOnFocus), #24286 (TextLayout migration guide), #24289 (pcwalton shadow visibility range fix — the architecturally correct one), #24294 (text input example fixes).
- SME-blocked items unchanged: #24279 (crates.io naming), #24275 (tileset y-axis revert).
- **New issue 24309 (laundmo, S-Needs-Triage): requests removal or warning of
.bsnasset format mentions from 0.19 docs, since the format is not yet supported.
2026-05-17 watchlist
- 0 new merged PRs — the merge train remains frozen post-rc.1. No changes to user-facing API.
- 0.19 milestone: 434/446 (97.3%), 12 open. One additional open issue since May 16 (445→446 total). Still no rc.2 or 0.19 final.
- **New issue 24320 (Semihazah, C-Bug):
ScenePatchInstancefails silently when spawning viabsn!macro — scene won’t spawn, but no error. Works when spawning viaCommands::spawn. Directly relevant to bsn workflows.- **New issue 24318 (beicause, C-Feature): Request to add Snapdragon Game Super Resolution (SGSR) upscaler support. BSD-3 licensed, cross-platform shaders. Would complement existing DLSS support.
- Notable active open PRs: #24312 (ECS Column::initialize_from_unchecked swap→memcopy perf), #24323 (FixedNode UI PR by ickshonpe), #24322 (require attribute in resource derive), #24319 (transform_vector methods), #23519 (pcwalton opt-in change indexes for dense components — S-Blocked).
- SME-blocked items unchanged: #24279 (crates.io naming), #24275 (tileset y-axis).
2026-05-18 watchlist
- #24174 — bsn: EntityTemplate in scene functions MERGED (laundmo, May 17, D-Complex, X-Contentious). Enables passing
EntityTemplate(entity name references) into scene functions (-> impl Scene) and Scene Component@props. Previously, scene functions could not receive entity name references — this unlocks parameterized scene composition where a template can reference named entities in the scene hierarchy.^[https://github.com/bevyengine/bevy/pull/24174]- #24329 — libdisplay-info1 CI fix (amtep, May 17). Adds missing Linux dependency to CI cache. No user-facing impact.
- 0.19 milestone: 435/449 (96.9%), 14 open. Up from 434/446 (97.3%, 12 open) on May 17. Three new items added to milestone scope: #24336 (bsn! const/unsafe block support), #24334 (required components should not be resources), #24322 (require attribute in resource derive — already tracked).
- **New 0.19 milestone item 24336 (pcwalton): Adds
constandunsafeblock support tobsn!macro. Expands BSN expressiveness for low-level patterns.^[https://github.com/bevyengine/bevy/pull/24336]- **New issue 24334 (SpecificProtagonist, A-ECS, S-Ready-For-Implementation): Required components should not be resources. Architectural discussion about ECS boundary between components and resources.^[https://github.com/bevyengine/bevy/issues/24334]
- **New issue 24337 (ganluo960214, C-Bug): PresentMode::AutoVsync/Fifo/FifoRelaxed/Mailbox not working — app runs at max FPS instead of vsync.^[https://github.com/bevyengine/bevy/issues/24337]
- **New issue 24338 (Wtoll, C-Feature): ComponentInfo extensions — requests additional metadata API on component registration.
- **New issue 24330 (musjj, C-Feature): Despawning resource entities — feature request for despawning entities that are registered as resources.
- **New issue 24325 (hsnoil, C-Bug): Touch position issues in WASM builds.^[https://github.com/bevyengine/bevy/issues/24325]
- SME-blocked items unchanged: #24279 (crates.io naming), #24275 (tileset y-axis).
2026-05-19 watchlist
- #24289 — Shadow visibility range fix MERGED (pcwalton, May 18). The architecturally correct shadow fix has landed. Introduces
ShadowLodOrigincomponent for shadow map visibility range resolution andlod_view_world_positionin GPU View uniform. This may enable un-reverting GPU visibility range culling (#23115) in 0.19 — pcwalton’s #24343 (re-apply GPU-driven HLOD evaluation) is now in the 0.19 milestone and ready for final review.^[https://github.com/bevyengine/bevy/pull/24289]- #24274 — bevy_text uses u32 for line/section indices (ickshonpe, May 19, merged). Changes line and section indices from
usizetou32inbevy_text. Potential migration impact for code that stores or passes these indices.^[https://github.com/bevyengine/bevy/pull/24274]- #24341 — Missing Reflect for bevy_picking resources (mgi388, May 19, merged). Adds missing
Reflectderive to picking resources. No breaking change.^[https://github.com/bevyengine/bevy/pull/24341]- 0.19 milestone: 436/450 (96.9%), 14 open. Up from 435/449 on May 18. One item closed (#24289), one new item added (#24343 — pcwalton’s GPU-driven HLOD re-application).^[https://github.com/bevyengine/bevy/milestones]
- #24343 — Re-apply GPU-driven HLOD evaluation (pcwalton, 0.19 milestone, S-Ready-For-Final-Review). Builds on top of the merged #24289. If this merges, GPU visibility range culling returns to 0.19 with the correct architecture.^[https://github.com/bevyengine/bevy/pull/24343]
- **New issue 24342 (ickshonpe):
bevy_pickingshould use OS multi-click interval instead of hardcoded value. S-Ready-For-Implementation.^[https://github.com/bevyengine/bevy/issues/24342]- **New issue 24339 (beicause): Proposes decoupling texture views from Image assets as separate assets. Architectural proposal.^[https://github.com/bevyengine/bevy/issues/24339]
- No rc.2 or 0.19 final published yet. v0.19.0-rc.1 (May 13) remains latest.
- SME-blocked items: #24279 (crates.io naming — rename PR #24317 now open), #24275 (tileset y-axis revert).
2026-05-20 watchlist
- 🚨 #24343 — GPU-driven HLOD evaluation RE-APPLIED (pcwalton, May 19, merged). Undoes the #24252 revert and restores GPU visibility range culling (#23115) using the new
ShadowLodOriginarchitecture from #24289. GPU-driven semantics now align with CPU-driven evaluation. This is the landmark resolution: GPU visibility range culling returns to 0.19 with correct shadow LOD behavior.^[https://github.com/bevyengine/bevy/pull/24343]- ⚠️ #24352 — RenderShadowLodOrigin crash without PBR (laundmo, May 19, P-Crash, 0.19 milestone).
bevy_renderunconditionally requiresRenderShadowLodOriginresource, but it is only initialized byPbrPlugin(behindbevy_pbrfeature). 2D-only apps or custom feature sets that omitbevy_pbrwill panic on startup. Introduced by #24289. Fix pending.^[https://github.com/bevyengine/bevy/issues/24352]- #24355 — Remove CI badge from readme (mockersf, May 19, approved by alice-i-cecile, 0.19 milestone). Cleanup — readme published to crates.io shouldn’t show development CI status.^[https://github.com/bevyengine/bevy/pull/24355]
- 0.19 milestone: 437/452 (96.7%), 15 open. Up from 436/450 (96.9%, 14 open) on May 19. One item closed (#24343), two new items added (#24352 crash, #24355 readme).^[https://github.com/bevyengine/bevy/milestones]
- New issues: #24356 (FeathersNumberInput fails in Update schedule), #24350 (pixel_grid_snap rounding error), #24348 (docs.rs rc.1 build failure), #24346 (CommandQueue un-applied commands on exit), #24353 (CoordSystemTransform for atmosphere — feature request).^[https://github.com/bevyengine/bevy/issues]
- Still no rc.2 or 0.19 final. RC-blocking: #24282 (compile failure), #24279 (crates.io naming), now also #24352 (2D crash regression).
2026-05-21 watchlist
- 🚨 #24359 — RenderShadowLodOrigin crash FIXED (pcwalton, May 20, merged). Closes #24352 — the 2D crash regression tracked since May 19.
RenderShadowLodOriginis now treated as optional duringViewconstruction, restoring 2D/non-PBR rendering compatibility broken by #24289. Approved by JMS55, Zeophlite, laundmo.^[https://github.com/bevyengine/bevy/pull/24359]- 🚨 #24317 — bevy_settings renamed to bevy-settings (mockersf, May 20, merged). Fixes BOTH rc.1 blocking issues: #24282 (compile failure) and #24279 (crates.io naming). Crate renamed to hyphenated
bevy-settingswhile keepingbevy_settingsas Cargo feature name (Cargo normalizes-to_).^[https://github.com/bevyengine/bevy/pull/24317]- #24336 — bsn! const/unsafe block support MERGED (loreball, May 20). Adds
constandunsafeblock expressions insidebsn!macro.asyncblock support attempted but removed due to type system limitations (unnamable futures). cart noted it’s “a bit of a hack, but the right move for now”.^[https://github.com/bevyengine/bevy/pull/24336]- #24322 — require attribute in Resource derive MERGED (musjj, May 20). Exposes
requireattribute inResourcederive macro, since resources are now components.^[https://github.com/bevyengine/bevy/pull/24322]- #24286 — TextLayout migration guide MERGED (urben1680, May 20). Community-contributed migration guide for
TextLayoutconstructor renames +Accessdeprecation fix.^[https://github.com/bevyengine/bevy/pull/24286]- #24366 — SceneComponent docs link fix (cookie1170, May 20). Trivial docs fix.
- 0.19 milestone: 448/457 (98%), 9 open. Down from 437/452 (96.7%, 15 open) on May 20. 11 issues closed, 5 new items added to scope. Release is closer than ever — both rc.1 blockers (#24282, #24279) are now resolved, and the 2D crash (#24352) is fixed.^[https://github.com/bevyengine/bevy/milestone/40]
- RC-blocking issues status: ✅ #24282 FIXED by #24317, ✅ #24279 FIXED by #24317, ✅ #24352 FIXED by #24359. Path clear for rc.2.
- Still no rc.2 or 0.19 final. Remaining 9 open items are mostly UI/Text fixes (6 by ickshonpe) + 3 docs items.
2026-05-22 watchlist
- 🚨 #24375 — MovingPtr unsoundness FIXED (SkiFire13, May 21, P-Unsound).
MovingPtr::assign_tocould cause double-drop if the destructor of*dstpanics. Fixed with a drop guard that ensures*dstis always overwritten regardless of panic. Avoids doublememcpy(the simpler normal-assignment approach was rejected because of the extra copy). ECS-internal — no user-facing API impact.^[https://github.com/bevyengine/bevy/pull/24375]- 🚨 #24367 — BSN prefix overhaul MERGED (laundmo, May 21, D-Macros). Breaking BSN syntax change:
@Template→~Template,:SceneComponent→@SceneComponent,:now means “cacheable” (no longer called “inheritance”). Terminology updated to “include”/“included”. Caching is NOT yet enabled — this PR lays the groundwork. Approved by cart, Zeophlite, mockersf.^[https://github.com/bevyengine/bevy/pull/24367]- #24365 — GPU batching bugfix MERGED (issam3105, May 22, 0.19 milestone). GPU preprocessing path now respects
AUTOMATIC_BATCHING = falsefor sorted phases. Critical forTransmissive3dand any phase that uses ordered chunk rendering. RenderDoc verified.^[https://github.com/bevyengine/bevy/pull/24365]- #24332 — Solari light leak prevention MERGED (JMS55, May 21, C-Refinement). Jitter gated to specular GI only; cell-size heuristic now picks largest cell >
ray_tinstead of immediate snap. Improves GI quality.^[https://github.com/bevyengine/bevy/pull/24332]- #24324 — SpotLight Frustum docs MERGED (Pnoenix, May 21, C-Docs). Added bold warning:
SpotLight+Cameraon same entity = Frustum overridden, frustum culling silently broken.^[https://github.com/bevyengine/bevy/pull/24324]- #24323 — FixedNode MERGED (ickshonpe, May 21, A-UI, M-Release-Note). New marker component for viewport-relative UI positioning (like CSS
position: fixed). Treated as UI root in Taffy, breaks out of parent layout/clipping/transform context. RequiresNode+OverrideClip. Primary use case: modal dialogs portaled from deep UI hierarchy. Closes #9564.^[https://github.com/bevyengine/bevy/pull/24323]- #24242 —
impl SceneList for Vec<Box<dyn SceneList>>(chronicl, 0.19 milestone). BSN/Scenes usability — enables dynamic scene lists as Children.^[https://github.com/bevyengine/bevy/pull/24242]- #24245 — TextLayoutInfo scale_factor centralization (ickshonpe). Text/UI code quality fix —
TextLayoutInfo::sizenow in physical pixels,scale_factorset by layout function not callers. **⚠️ Caused regression 24384 (multi_window_text example broken).^[https://github.com/bevyengine/bevy/pull/24245]- Spotlight shadow fix (JeroenHoogers). Fixed incorrect basis reconstruction causing spotlight shadow rendering artifacts.
- Premultiplied Alpha for OIT (Schmarni-Dev). Bug fix for order-independent transparency alpha compositing.
- Solari BRDF energy conservation (dylansechet). Further improvements to Solari BRDF energy conservation.^[https://github.com/bevyengine/bevy/pull/24367]
entity_commandsmethod on EntityWorldMut (WeiTheShinobi). ECS usability — addsentity_commands()method toEntityWorldMutfor accessing entity command builder.^[https://github.com/bevyengine/bevy/pull/24242]- ShaderDefVal → Cow<‘static, str> (beicause). Rendering performance — eliminates heap allocations for static shader defines.
- 0.19 milestone: 462/472 (97.9%), 10 open. Up from 448/457 (98%, 9 open) on May 21. 14 issues closed, milestone scope expanded by 15 items.^[https://github.com/bevyengine/bevy/milestone/40]
- **New regression 24384 — TextLayoutInfo::scale_factor change broke multi_window_text example (milestone 0.20). Open, no fix yet.^[https://github.com/bevyengine/bevy/issues/24384]
2026-05-23 watchlist
- 🚨 Bevy v0.19.0-rc.2 RELEASED (mockersf, May 22). Second release candidate for 0.19. Pre-release tag. 25 community reactions (🎉16). Based on commit
a389b92.^[https://github.com/bevyengine/bevy/releases/tag/v0.19.0-rc.2]- #24389 — Fix skybox render-world cleanup (issam3105, May 22, 0.19 milestone, C-Bug).
Skyboxcomponent removal was not reflected in the render world — the extracted skybox persisted even after the component was removed. Fix: manually registerSyncComponentPluginforSkybox(lost during the move tobevy_lightin #22682). Approved by IceSentry, goodartistscopy.^[https://github.com/bevyengine/bevy/pull/24389]- #24278 — SelectAllOnFocus now opt-in (ickshonpe, May 22, 0.19 milestone). Single-line text inputs no longer automatically select-all on focus. The
SelectAllOnFocuscomponent must now be explicitly added. Approved by alice-i-cecile, mockersf, jordanhalase, NiklasEi, kfc35.^[https://github.com/bevyengine/bevy/pull/24278]- #24382 — bevy_reflect generic type info on opaque types (MrGVSV, May 22, C-Bug, D-Trivial). Opaque types (e.g.
Arc<T>) were not capturing generic type information in reflection metadata. Fix ensures#[reflect(opaque)]andimpl_reflect_opaque!capture generics when possible.^[https://github.com/bevyengine/bevy/pull/24382]- #24276 — 0.19 release content cleared from main (mockersf, May 22, D-Trivial). Release notes and migration guides removed from
mainbranch — signals that 0.19 has branched and development is proceeding toward 0.20.^[https://github.com/bevyengine/bevy/pull/24276]- #24388 — ComputedNode documentation (amtep, May 22, C-Docs, D-Trivial). Clarified
ComputedNodedocs.- 0.19 milestone: 466/474 (98%), 8 open. Down from 462/472 (97.9%, 10 open) on May 22. 4 more issues closed. Remaining 8: UI/Text bugs (3), docs (3), scenes (2).^[https://github.com/bevyengine/bevy/milestone/40]
- rc.2 is LIVE — the three rc.1 blockers (#24282, #24279, #24352) are all resolved. Remaining issues are non-blocking UI/Text/docs. 0.19 final release is imminent.
2026-05-25 watchlist
- 0 new merged PRs — the merge train remains quiet post-rc.2. No changes to user-facing API.
- 0.19 milestone: 466/480 (97%), 14 open issues. Up from 466/478 (97.5%, 12 open) on May 24. Milestone scope expanded by 2 items: “Immutable resources need a migration guide” and “Immutable Resources fix”. No critical blockers.^[https://github.com/bevyengine/bevy/milestone/40]
- Still waiting for 0.19 final. rc.2 (May 22) remains the latest pre-release; v0.18.1 is still tagged “Latest”.
- New milestone items to watch: Immutable resources documentation + bug fix (two related items added May 24-25).
2026-05-26 watchlist
- 0 new merged PRs — merge train still frozen post-rc.2 (3 consecutive days with no merges).
- 0.19 milestone: 466/485 (96%), 19 open. Down from 466/480 (97%, 14 open) on May 25. Milestone scope expanded by 5 items; 0 items closed. Progress percentage dropped because new issues are being filed faster than existing ones are resolved.^[https://github.com/bevyengine/bevy/milestone/40]
- Two new rc.2 gizmo regressions:
- #24429 — Scale gizmo breaks when target is scaled to 0.
- #24431 — Transform gizmo local space snapping renders gizmo unusable. Both filed against rc.2; could become release blockers if unresolved before 0.19 final.
- Open PRs in progress (not yet merged):
- #24424 (Trashbalk217) — Immutable Resources fix (addresses #24285).
- #24433 (kfc35) — Fix: Add system set for DiagnosticsOverlay Setup (addresses #24377).
- #24402 (laundmo) — bsn: fix accidental scene entity deduplication due to name references.
- #24404 (kristoff3r) — Rename SortedRenderPhase add to add_retained.
- #24407 (kristoff3r) — Remove false positive error log for morph targets.
- #24408 (kristoff3r) — Update change list migration guide.
- #24406 (eugineer2) — Add RelationshipHookMode argument to BundleWriter::write.
- #24418 (oelison) — bugfix android activity.
- #24440 (hxYuki) — Replace unnecessary FromTemplate with Default + Clone.
- Still waiting for 0.19 final. rc.2 (May 22) remains latest pre-release; v0.18.1 tagged “Latest”. 0.20 milestone at 10/29 (34%).
- 0.19 milestone trend: scope has grown from 472 (May 22) → 478 (May 23) → 480 (May 25) → 485 (May 26) → 489 (May 27) while closed count stayed at 466. The 0.19 final release may be delayed if open PRs don’t merge and new regressions keep appearing.
2026-05-27 watchlist
- 2 minor doc PRs merged — #24458 (typo fix in bevy_scene docs, malfuu) and #24439 (cut-and-paste error in UntypedHandle docs, amtep). No functional changes.
- 0.19 milestone: 466/489 (~95.3%), 23 open. Up from 466/485 (96%, 19 open) on May 26. Scope expanded by 4 items; 0 closed. 4 consecutive days with 0 net progress.
- ⚠️ #24448 — 0.19 Performance Regression (AlephCubed, filed 20h ago, S-Needs-Investigation). New performance regression reported against 0.19. Labeled C-Bug, C-Performance, P-Regression. Status: under investigation. Potential release blocker.^[https://github.com/bevyengine/bevy/issues/24448]
- #24456 — Expose TAA and CAS nodes as public (nyaalexx, filed 9h ago, A-Rendering, S-Ready-For-Final-Review). Makes TAA and Contrast Adaptive Sharpening render graph nodes accessible to custom render pipelines. D-Trivial, ready for final review.^[https://github.com/bevyengine/bevy/pull/24456]
- Still waiting for 0.19 final. rc.2 (May 22) remains the latest pre-release. The growing open count (8 → 14 → 19 → 23 over 4 days) suggests 0.19 final may be further delayed.
2026-05-29 watchlist
- 🔥 8 PRs merged today — the merge train resumes after 6 days of silence. Multiple functional fixes across ECS, rendering, UI, scenes, and dev-tools.
- #24472 (amtep) —
bevy_ui_widgetsmissing dependency fix. Fixes panic when starting app withbevy_ui_widgets/bevy_feathersbut nouifeature. D-Trivial.^[https://github.com/bevyengine/bevy/pull/24472]- #24456 (nyaalexx) — Expose TAA and CAS render graph nodes as public. Makes TAA and CAS accessible for custom render pipelines, matching existing FXAA/SMAA exposure. D-Trivial.^[https://github.com/bevyengine/bevy/pull/24456]
- #24440 (hxYuki) — Replace unnecessary
FromTemplatewithDefault + CloneonTilemapChunkTileDataandScrollbarThumb. Fixes #24416.^[https://github.com/bevyengine/bevy/pull/24440]- #24433 (kfc35) — Move DiagnosticsOverlay setup to PreStartup schedule. Fixes #24377 — diagnostics overlay was broken. Highlights common Bevy pattern: setup that must be globally available before other plugins’ Startup systems should run in PreStartup.^[https://github.com/bevyengine/bevy/pull/24433]
- #24424 (Trashtalk217) — Immutable Resources fix. Adds
get_resource_mut_assume_mutable,World::modify_resource,World::modify_resource_by_id. Fixes #24285.^[https://github.com/bevyengine/bevy/pull/24424]- #24408 (kristoff3r) — Update change list migration guide (for SortedRenderPhase rename). Merged into release-0.19.0 branch.^[https://github.com/bevyengine/bevy/pull/24408]
- #24405 (Shatur) — Implement
SystemParamforSmallVec. Stack-allocated variable-length system parameters, avoiding heap allocation for small counts.^[https://github.com/bevyengine/bevy/pull/24405]- #24404 (kristoff3r) — Rename
SortedRenderPhase::addtoadd_retained. Breaking change: old code won’t compile, forcing explicit choice betweenadd_retained()andadd_transient().^[https://github.com/bevyengine/bevy/pull/24404]- 0.19 milestone: 480/495 (~97.0%), 15 open. Up from 466/490 (~95.1%, 24 open) on May 28. 14 items closed today! Scope expanded by 5 new items (495 total). This is the first net-closure day since May 23.
- ⚠️ #24448 — Performance regression status: S-Waiting-on-SME. Root cause identified: commit
894d8d7from PR #23481 (GPU bin unpacking).prepare_preprocess_bind_groupsis ~30x slower. PR #23662 (MeshUniform GPU allocation) tested but WORSENED performance (+14.12ms). No fix yet — awaiting SME decision.^[https://github.com/bevyengine/bevy/issues/24448]- New open issues: #24471 (OnMonitor Relationship for window), #24470 (RemoteFreeList for EntityIndexAllocator), #24469 (Enums not working in bsn! without FromTemplate derive), #24468 (Custom GPU diagnostics buffer size), #24466 (Asset processor meta data), #24465 (Name::from<&str> heap allocation footgun).
- rc.2 (May 22) still latest pre-release. But today’s 8 merges are a strong signal that the merge queue is active again.
2026-05-28 watchlist
- 0 new merged PRs — merge train frozen for 6th consecutive day.
- 0.19 milestone: 466/490 (~95.1%), 24 open. Scope keeps growing (485→489→490) while closed count stays at 466.
- ⚠️ #24448 — Performance regression under investigation (AlephCubed). Voxel engine drops 60fps → 25fps dev / 45fps release.
prepare_preprocess_bind_groups30x slower. No root cause yet.- **New: 24464 (laundmo, Draft) — bsn docs + tests overhaul. 1125 additions / 667 deletions. Depends on #24402.
- **New: 24462 (Hilpogar) — Animation completion tracking for delta > clip duration. Related to root motion (#24201).
- **New: 24460 (Freyja-moth) — Feature request:
#[inherit(...)]attribute for SceneComponent derive.- rc.2 (May 22) still latest pre-release. 0.19 final drifting — 24 open items with 0 net closures for 6 days.
2026-05-24 watchlist
- #24392 — Deprecate
AssetId::invalid()(greeble-dev, May 23, M-Migration-Guide). Progresses #19024 (removing UUID handles).AssetId::invalid()deprecated in favor ofAssetId::default(). Last internal usage replaced incustom_phase_itemexample. Initially planned as hard removal, changed to deprecation after review.- #24345 — Allow plugin functions in
plugin_group!(Jengamon, May 23, A-App, X-Uncontroversial). Functions with signaturefn(&mut App)(which already implementPlugin) can now be used insideplugin_group!via new@fnblock syntax. Declaration order preserved in build order.- #24399 — Text2d size fix (ickshonpe, May 23, C-Bug). Fixes #24384 — the
TextLayoutInfo::scale_factorchange from #24245 brokemulti_window_textexample. Text2d bounds now correctly use logical (not physical) size; anchor offsets multiply by inverse scale factor.- 0.19 milestone: 466/478 (97.5%), 12 open. Scope expanded slightly since May 23 (474→478 total). No new critical blockers.
- Still waiting for 0.19 final. rc.2 (May 22) remains the latest pre-release.
2026-05-30 watchlist
- 4 PRs merged since May 29 — the merge train continues after yesterday’s burst of 8. Milestone progress: 480/495 (97.0%) → 485/497 (97.6%), open count dropped from 15 → 12.^[https://github.com/bevyengine/bevy/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-05-29..2026-05-31]
- #24486 — Fix transform gizmo local translation snapping (bugsweeper, 0.19, A-Gizmos, C-Bug). Fixes #24431 — transform gizmo snapping broke local-space translation on rotated entities. Root cause: snapping individual
x/y/zworld-space components doesn’t work when a local axis affects multiple world components. Fix: snap the scalar drag distance along the selected gizmo axis normal instead. Approved by laundmo and cart.^[https://github.com/bevyengine/bevy/pull/24486]- #24473 — bsn: throw error on unsupported caching syntax (laundmo, 0.19, A-Scenes, C-Usability). BSN macro now emits a compile error when caching syntax is used on scene entries that don’t support it. Designed to be easy to remove once caching is fully implemented. Includes workaround for Rust trait error ergonomics (related upstream issue rust-lang/rust#141258). Approved by cart and alice-i-cecile.^[https://github.com/bevyengine/bevy/pull/24473]
- #24407 — Remove false positive error log for morph targets (kristoff3r, 0.19, A-Diagnostics, D-Trivial). Removes spurious error log when unloading mesh assets that never had morph targets — the error was always printed even when no morph targets were allocated. Approved by cart and greeble-dev.^[https://github.com/bevyengine/bevy/pull/24407]
- #24406 — Add RelationshipHookMode to BundleWriter (eugineerd, 0.19, A-ECS, D-Straightforward). Adds
BundleWriter::write_with_relationship_hook_insert_modemethod +#[track_caller]annotation. DefaultRunmode is correct for new entity spawning;RunIfNotLinkedneeded when inserting relationships on existing entities to preserveRelationshipTargetordering. Future work: portEntityCloner’s customBundleScratchto use this API.^[https://github.com/bevyengine/bevy/pull/24406]- 0.19 milestone: 485/497 (97.6%), 12 open. Up from 480/495 (97.0%, 15 open) on May 29. 5 more issues closed, 2 new items added to scope. Open count dropped by 3 — the merge train is actively closing items now.
- #24431 (gizmo local snapping) now FIXED by #24486. One of the two rc.2 gizmo regressions resolved. #24429 (scale gizmo at scale 0) remains open.
- rc.2 (May 22) still latest pre-release. 0.19 final is closer with 12 open items.
2026-06-01 watchlist
- 7 PRs merged May 31 – June 1 — the merge train continues. Milestone progress: 485/497 (97.6%) → 492/499 (98%), open count dropped from 12 → 7.^[https://github.com/bevyengine/bevy/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-05-31..2026-06-01]
- #24477 — Fix scale gizmo snap minimum (kfc35, 0.19, A-Gizmos, D-Straightforward). Fixes #24429 — the second rc.2 gizmo regression. Snapped scale values now have a minimum of
snap_scaleinstead of being able to reach 0 (which breaksGlobalTransformrotation extraction). Both rc.2 gizmo regressions (#24431, #24429) are now resolved.^[https://github.com/bevyengine/bevy/pull/24477]- #24402 — bsn: fix accidental scene entity deduplication (laundmo, 0.19, A-ECS, A-Scenes, C-Bug, D-Domain-Expert). Fixes a bug from #24174: named entity references (
#Name) caused accidental deduplication when the same bsn! macro was called multiple times. Solution: runtime per-call-site counter. Also removes#{expr}name expressions entirely — cart argued they added complexity without sufficient value.named_entity_referencebenchmark showed ~4% regression, but overhead disappears when names aren’t used.^[https://github.com/bevyengine/bevy/pull/24402]- #24381 — Stabilize VisibilityRange buffer indices (stuartparmenter, 0.19, A-Rendering, C-Bug, D-Modest). Fixes GPU-driven HLOD culling corruption:
RenderVisibilityRangeswas reassigning buffer indices on every frame, causing stale indices inMeshInputUniform. Solution: indices are now stable for the lifetime of the app. No public API change. Fixes meshes vanishing or crossfading to wrong LOD when other VisibilityRange entities spawn/despawn.^[https://github.com/bevyengine/bevy/pull/24381]- #24087 — SystemId scene templating (ItsDoot, merged by alice-i-cecile). New
SystemIdTemplatetype enables passingSystemIdvalues into bsn! scene templates, analogous to howHandleTemplateworks for asset handles. Stores either aSystemIdorArc<Mutex<Either<SystemId, Box<dyn System>>>>. 184 additions / 2 deletions. Additive API.^[https://github.com/bevyengine/bevy/pull/24087]- #24490 — Activate missing-docs warning for bevy_sprite (amtep, C-Docs, D-Straightforward). Documentation quality enforcement. No user-facing impact.^[https://github.com/bevyengine/bevy/pull/24490]
- #24504 — Update ratatui dependency to 0.30 (amtep, C-Dependencies, D-Trivial). CI/dependency update.^[https://github.com/bevyengine/bevy/pull/24504]
- 0.19 milestone: 492/499 (98%), 7 open. Down from 485/497 (97.6%, 12 open) on May 30. 7 more issues closed, 2 new items added to scope. Both rc.2 gizmo regressions are now fixed. Remaining 7 open items are mostly UI/Text/BSN bugs + docs.
- rc.2 (May 22) still latest pre-release. But with only 7 open items and both gizmo regressions fixed, 0.19 final is very close.
2026-06-06 watchlist
- #24530 — PbrNeutral → KhronosPbrNeutral MERGED (Elabajaba, Jun 6, 0.19 milestone, A-Rendering, C-Docs, M-Migration-Guide, +17/-14). Breaking rename:
PbrNeutraltonemapper renamed toKhronosPbrNeutralto clarify it’s specifically the Khronos PBR Neutral tonemapper, not a generic neutral default. Docs improved to recommend against it for general use. Previously tracked as an open item.^[https://github.com/bevyengine/bevy/pull/24530]- #24519 — Fix bsn! autocomplete in function arguments (cart, Jun 6, 0.19 milestone, A-Scenes, C-Bug, +132/-84). Fixes #24174 side-effect:
bsn!macro used strict Rust parsing for function arguments, which failed during typing (incomplete syntax). Replaced with loose scope-aware TokenStream splitting on top-level commas. Reviewed by cookie1170, MrGVSV.^[https://github.com/bevyengine/bevy/pull/24519]- #24538 — Schedule update_editable_text_layout before AssetEventSystems (ickshonpe, Jun 6, 0.19 milestone, D-Trivial, A-Rendering/A-Text/A-UI). Fixes #24537: text layout system ordering issue. 1 file changed.^[https://github.com/bevyengine/bevy/pull/24538]
- #24513 — resources_as_components migration guide update (kfc35, Jun 6, C-Docs, A-ECS, +7/-2, merged into
release-0.19.0branch). Documents immutable resources workarounds for the resources_as_components migration guide.^[https://github.com/bevyengine/bevy/pull/24513]- 0.19 milestone: ~502/507 (~98.8%), 5 open. Down from ~498/509 (~97.8%, 8 open) on Jun 5. 3 milestone items merged today (#24530, #24519, #24538). Remaining 5 open items: bsn field shorthand (#24526), 0.19 Release Notes: Next Generation Scenes (#24523), partial_bindless release note (#24506), bsn docs/tests (#24464), bsn macro docs relocation (#24299). All are docs/BSN-polish — no blocking bugs remain.
- rc.2 (May 22) still latest pre-release. With only 5 open items (all docs/BSN), 0.19 final is extremely close.
2026-06-08 watchlist
- 3 PRs merged Jun 7–8 — ECS hierarchy fix + ECS ergonomics + Feathers UI widget. Milestone ~514/520 (98.8%, 6 open — Feathers PR closes #24092).^[https://github.com/bevyengine/bevy/issues?q=is:pr+is:merged+merged:2026-06-07..2026-06-09+sort:created-desc]
- #24550 — HierarchyPropagatePlugin remove insert fix MERGED (ickshonpe, Jun 8, merged by alice-i-cecile, 0.19 milestone, A-App, C-Bug, D-Straightforward, +30/-1). Fixes #24549 — when a component with
Propagate<C>was removed and reinserted in the same frame, theHierarchyPropagatePluginwould incorrectly remove the propagated value. Fix: addedWith<Propagate<C>>query inupdate_sourceto skip removal when the component is still present.^[https://github.com/bevyengine/bevy/pull/24550]- #24527 — Add missing run support for SystemHandle MERGED (hxYuki, Jun 8, merged by alice-i-cecile, 0.19 milestone, A-ECS, C-Usability, D-Straightforward, +40/-5). Implements
From<SystemHandle<I, O>>andFrom<&SystemHandle<I, O>>forSystemId<I, O>, makingSystemHandleusable withrun_system. Also makesCommands::run_system*acceptimpl Into<SystemId>. Tracked by #24165 (Tracked one-shot systems).^[https://github.com/bevyengine/bevy/pull/24527]- #24544 — Feathers scrollbar and list view MERGED (viridia, 0.19 milestone, A-UI, C-Feature, D-Modest, M-Release-Note). New Feathers UI widgets: scrollbar and list view components. Tagged M-Release-Note — will appear in 0.19 release blog. Closes the long-open #24092 milestone item.
- 0.19 milestone: ~514/520 (~98.8%), ~3 open. Down from 511/517 (6 open) on Jun 7. Feathers scrollbar/list view (#24544) and #24550, #24527 all closed milestone items. Remaining items likely docs-only.
- rc.2 (May 22) still latest pre-release. 0.19 final release is imminent — only docs items likely remain.
2026-06-07 watchlist
- 5 PRs merged Jun 6–7 — Scene ecosystem day: 3 Scene/BSN PRs + 1 UI fix + 1 text fix. Milestone progress: ~502/507 (~98.8%, 5 open) → 511/517 (98.8%, 6 open). Scope grew by 10 items but 9 closed.^[https://github.com/bevyengine/bevy/issues?q=is:pr+is:merged+merged:2026-06-06..2026-06-08+sort:created-desc]
- #24542 — Impl SceneList for SmallVec MERGED (Shatur, Jun 7, 0.19 milestone, A-Scenes, C-Usability, D-Straightforward). Implements
SceneListtrait forSmallVec, enabling stack-allocated scene lists without heap allocation. QoL improvement for scenes that contain few elements. Reviewed by amtep, mardzie.^[https://github.com/bevyengine/bevy/pull/24542]- #24536 — Implement Scene for Option
where P: Scene MERGED (0.19 milestone, A-Scenes, C-Usability, D-Straightforward). Enables optional scene values directly in BSN declarations —
Option<T>whereT: Scenenow works natively. QoL improvement.- #24523 — 0.19 Release Notes: Next Generation Scenes MERGED (cart, Jun 7, merged into
release-0.19.0branch, A-Scenes, C-Docs, D-Modest). The official release notes documentation for BSN/Scene changes in 0.19. Covers BSN syntax, SceneComponent, scene layering, scene assets and caching. 5 commits.^[https://github.com/bevyengine/bevy/pull/24523]- #24539 — Fix MenuButton blocking tab navigation MERGED (viridia, Jun 6, 0.19 milestone). UI bugfix: MenuButton was intercepting tab key events, preventing users from tabbing through other UI elements.^[https://github.com/bevyengine/bevy/pull/24539]
- #24421 — Fix IME text input wrapping MERGED (A-Text, C-Examples, D-Trivial). Fixes #23932: IME (Input Method Editor) text input wrapping behavior. Example fix.^[https://github.com/bevyengine/bevy/pull/24421]
- **New 0.19 milestone open item: 24541 (Shatur, 12h ago, A-Scenes, C-Docs). Docs need to be updated after
:→@migration in BSN syntax.- 0.19 milestone: 511/517 (98.8%), 6 open. Up from ~502/507 (5 open) on Jun 6. Scope grew significantly with Scene release notes (#24523) and docs items closing. 6 remaining open: #24541 (BSN
:→@docs), #24526 (BSN field name shorthand), #24506 (partial_bindless release note), #24464 (BSN docs/tests), #24299 (BSN macro docs relocation), #24092 (Feathers scrollbar/list view).- rc.2 (May 22) still latest pre-release. With 6 open items (all docs/BSN-polish + Feathers UI), 0.19 final remains imminent.
2026-06-02 watchlist
- 5 PRs merged Jun 1–2 — merge train continues at lower pace. Milestone progress: 492/499 (98%) → 494/500 (98.8%), open count dropped from 7 → 6.^[https://github.com/bevyengine/bevy/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-06-01..2026-06-03]
- #24474 — ScenePatchInstance queue fix (cart, 0.19, A-Scenes, C-Bug). Fixes #24320 — queued scenes incorrectly used
ScenePatchInstanceinstead ofQueuedScenesdirectly. Reviewed by laundmo.^[https://github.com/bevyengine/bevy/pull/24474]- #24395 — Fix double-sided normals for negative-scale meshes (issam3105, A-Rendering, C-Bug, D-Shaders). Adds winding-corrected front-facing helper in PBR shader. Follow-up to #8859 (single-sided fix). Tested with Khronos NegativeScaleTest.^[https://github.com/bevyengine/bevy/pull/24395]
- #24240 — Pass panics to fallback error handler (SpecificProtagonist, merged by alice-i-cecile). Significant: 457 additions / 103 deletions. Panics now handed to
FallbackErrorHandlerinstead of crashing the app. Opt-in, inspired by Godot’s crash-resilience philosophy. Fixes #19109, #7434.^[https://github.com/bevyengine/bevy/pull/24240]- **#24480, 24478 — CI dependency bumps (zizmor-action, typos). No user-facing impact.
- 0.19 milestone: 494/500 (98.8%), 6 open. Only #24474 was tagged 0.19 from this batch. rc.2 still latest pre-release. Final release is imminent.
2026-06-03 watchlist
- 🔥 23 PRs merged Jun 2–3 — massive merge wave. Milestone progress: 494/500 (98.8%) → 496/503 (98.6%), open count: 6 → 7 (scope grew by 3 items).^[https://github.com/bevyengine/bevy/issues?q=is:pr+is:merged+merged:2026-06-02..2026-06-04+sort:created-desc]
- #21926 — Vertex buffer compression MERGED (beicause, 7 months in review, +2251/-433, 73 commits). MAJOR rendering optimization: adds
attribute_compressionfield onMeshandmesh_attribute_compressiononGltfLoaderSettings. Normals/tangents → octahedral encoded Unorm16x2, UVs/joint weights/colors → Unorm16/Float16. CPU-side mesh still uses Float32; compression happens at GPU upload. Also addscompressed_mesh()method and u16 index conversion. Resolves #21902.^[https://github.com/bevyengine/bevy/pull/21926]- #23794 — Meshlet material pipeline optimization MERGED (CrazyRoka, +155/-149). CPU usage drops from 52% → 6.7% in stress test by checking pipeline cache before expensive computation in
prepare_material_meshlet_meshes_main_opaque_passandprepass.^[https://github.com/bevyengine/bevy/pull/23794]- #24445 — Remove interner_name from define_label! MERGED (kpreid, A-App, D-Macros, +34/-20). Breaking change:
interner_nameargument removed fromdefine_label!()macro. Static interner moved insideintern()method. Also adds trailing comma support. Companion to #24444 (docs).^[https://github.com/bevyengine/bevy/pull/24445]- #24514 — Propagate glTF clearcoat texture MERGED (issam3105, 0.19 milestone, A-Rendering, D-Straightforward, +4/-0). glTF
ClearCoatmaterials where texture was ignored when converting toStandardMaterial. Fix: propagate clearcoat texture properly. Tested with Khronos ClearCoatTest.^[https://github.com/bevyengine/bevy/pull/24514]- #24496 — Add this_run and last_run to DetectChanges MERGED (akriegman, A-ECS, D-Trivial, +26/-0). New
this_run()andlast_run()methods onDetectChangestrait. Enables precise per-system change detection (e.g.thing.is_changed() || thing.last_changed() == thing.last_run()).^[https://github.com/bevyengine/bevy/pull/24496]- #23260 — Add resource_exists_and MERGED (Satellile, A-ECS, C-Feature, D-Straightforward, +54/-0). New
resource_exists_andsystem condition closure — check resource existence with a predicate in run conditions.^[https://github.com/bevyengine/bevy/pull/23260]- #22792 — Fallback to borderless fullscreen MERGED (francisdb, A-Windowing, C-Bug, O-Linux, +48/-32). Fixes #18556: exclusive fullscreen apps would not start on Wayland because no monitor was available. Falls back to borderless fullscreen with warning. X-Contentious.^[https://github.com/bevyengine/bevy/pull/22792]
- #24453 — Scale transmission roughness by IOR (A-Rendering, PBR fix). Corrects PBR transmission roughness scaling by Index of Refraction.
- #24347 — Silence CommandQueue warning-on-drop for delayed commands (A-ECS). Removes false-positive warning when CommandQueue drops with un-applied delayed commands.
- #24391 — TilemapChunkTileData Y-down helper (A-Gameplay). Helper function to create TilemapChunkTileData from Y-down tile data.
- #24419 — Generalise TemporaryRenderEntity over AppLabel (A-Rendering). Generalizes TemporaryRenderEntity to work with any AppLabel.
- Other merged: #24485 (Track DeferredWorld::trigger caller, ECS), #24484 (clippy allow bevy_ptr), #24475 (fix all clippy lints), #24457 (MouseScrollUnit projection_zoom example), #24454 (Fix rgb_to_hsv negative hue), #24446 (doc typos), #24444 (Document define_label!), #24441 (missing Reflect derives for UI), #24413 (Saturation color space preservation), #24398 (Fix placeholder SMAA LUTs), #24206 (Box large Error variants), #24171 (Reduce Typed::type_info() size).
- 0.19 milestone: 496/506 (98.0%), 10 open. Scope grew from 503 to 506 (3 new items added Jun 4). New items: bevy_dev_tools RC missing (#24525), bsn inline macros in field values (#24524), 0.19 Release Notes: Next Generation Scenes (#24523). Open items: FontSources on changes (#24362), bsn! autocomplete fix (#24519), resources_as_components migration guide (#24513), bsn docs/tests (#24464), partial_bindless release note (#24506), bsn macro docs relocation (#24299), FeathersNumberInput Update schedule bug (#24356), plus 3 new items.^[https://github.com/bevyengine/bevy/milestones]
- rc.2 (May 22) still latest pre-release. 0.19 final close but milestone scope continues to grow (496/500 → 496/503 → 496/506). All open items are docs/bugfixes — no new features blocking release.
2026-06-09 watchlist
- 2 milestone PRs merged Jun 8–9 — BSN docs overhaul + release note rewrite. Milestone 519/523 (99.2%), 4 open items.^[https://github.com/bevyengine/bevy/issues?q=is:pr+is:merged+merged:2026-06-08..2026-06-10+sort:created-desc]
- #24464 — bsn: improve docs and add tests MERGED (laundmo, Jun 8, 0.19 milestone, A-Scenes, C-Docs, C-Code-Quality, +888/-640). Major BSN documentation overhaul: removes confusing “Inheritance” concept in favour of caching terminology, fixes now-changed syntax (
:→@migration), cleans up macro docs duplication, unified syntax table. Closes #24299, #24540, #24541. Depends on #24402.^[https://github.com/bevyengine/bevy/pull/24464]- #24506 — Revise partial_bindless release note MERGED (alice-i-cecile, Jun 8, 0.19 milestone, C-Docs, +22/-17). Rewrites partial_bindless release note — original tone drifted into marketing register with LLM-standard constructions. Tightened phrasing, added proper conclusion.^[https://github.com/bevyengine/bevy/pull/24506]
- #24558 — Bump crate-ci/typos 1.46.2 → 1.47.0 (CI dependency, no user-facing impact).
- 0.19 milestone: 519/523 (99.2%), 4 open. Up from ~514/520 (~98.8%, ~6 open) on Jun 8. #24506 and #24464 closed 2 previously open items. 2 new items appeared: #24557 (SceneComponent not implicitly added when using .spawn() directly on scene function) and #24555 (ResultSeverityExt shorthands). Also #24531 (Enum variant doesn’t impl Scene in bsn) still open, #24526 (bsn field name shorthand, S-Blocked).
- rc.2 (May 22) still latest pre-release. 0.19 final release is imminent — 4 remaining open items are docs/BSN polish + 1 new BSN bug.
2026-06-10 watchlist
- 🔥 25 PRs merged Jun 9–10 — massive merge wave: 3 milestone PRs + 22 others. Milestone 523/526 (99.4%), only 3 open.^[https://github.com/bevyengine/bevy/issues?q=is:pr+is:merged+merged:2026-06-09..2026-06-10+sort:created-desc]
- #24565 — bsn: Expand support for optional scenes and scene lists MERGED (cart, 0.19 milestone, A-Scenes, C-Bug, C-Usability). Enables
Option<Box<dyn SceneList>>in BSN props. Fixes bug from #24536 (missing dependency registration).^[https://github.com/bevyengine/bevy/pull/24565]- #24555 — ResultSeverityExt shorthands MERGED (cookie1170, 0.19 milestone, A-ECS, C-Usability). Closes the previously-open milestone item.^[https://github.com/bevyengine/bevy/pull/24555]
- #24532 — Fix large scene mip map generator material change detection MERGED (DGriffin91, 0.19 milestone, A-Assets, A-Rendering).^[https://github.com/bevyengine/bevy/pull/24532]
- #24516 — Compute light attenuation using Beer’s law MERGED (issam3105, A-Rendering, C-Bug). Significant PBR fix: glTF
KHR_materials_volumematerials now use physically-correct Beer’s law transmittance instead of the inaccurate fog-math approximation. Dark volume materials render correctly.^[https://github.com/bevyengine/bevy/pull/24516]- #24502 — Expose pipeline constants to materials MERGED (Visse, A-Rendering, C-Usability). New feature: materials can now specify WGSL
overrideconstants inspecialize(). Breaking:Eqderive removed fromComputePipelineDescriptor,VertexState,FragmentState.^[https://github.com/bevyengine/bevy/pull/24502]- #24509 — AmbientLightFlags refactor MERGED (coreh, A-Rendering, C-Code-Quality). Introduces
AmbientLightFlagsbitflags. Breaking for custom WGSL:ambient_light_affects_lightmapped_meshes→ambient_light_flags. Paves way for monochromatic ambient lights.^[https://github.com/bevyengine/bevy/pull/24509]- #24559 — Modal dialog box for Feathers MERGED (viridia, A-UI, C-Feature). Feathers UI now has modal dialogs. Part of #19236.^[https://github.com/bevyengine/bevy/pull/24559]
- #24137 — Okhsla and Okhsva to bevy_color MERGED (beicause, A-Color, C-Feature). Extends perceptually-uniform color space support.^[https://github.com/bevyengine/bevy/pull/24137]
- #24512 — MouseScrollUnit conversion factor as Resource MERGED (stevehello166, A-Input, C-Feature). Breaking: hardcoded constant → configurable Resource.^[https://github.com/bevyengine/bevy/pull/24512]
- 0.19 milestone: 523/526 (99.4%), 3 open. All 3 remaining items are BSN docs/polish (#24526 field shorthand, bsn: fix name docs, BSN lib docs example issue). No blocking bugs. 0.19 final release is imminent.
- rc.2 (May 22) still latest pre-release. With only BSN documentation items remaining, release could happen any day.
2026-06-11 watchlist
- 🔥 9 PRs merged Jun 10–11 — including 3 milestone PRs. Milestone 527/528 (99.8%), only 1 open item!^[https://github.com/bevyengine/bevy/issues?q=is:pr+is:merged+merged:2026-06-10..2026-06-12+sort:created-desc]
- #24526 — bsn: support field name shorthand MERGED (cart, Jun 10, 0.19 milestone, A-Scenes, C-Usability). Was S-Blocked — now merged! Adds Rust’s name shorthand syntax to
bsn!:bsn! { Foo { value } }wherevalueis a local variable. Also works for props:bsn! { @Foo { @value } }. Internal variable naming changed to__Xformat to avoid user variable conflicts.^[https://github.com/bevyengine/bevy/pull/24526]- #24575 — bsn: fix name docs MERGED (cart, Jun 10, 0.19 milestone, A-Scenes, C-Bug, D-Trivial). Fixes #24567 — removes confusing bits wrongly copied from a different example.^[https://github.com/bevyengine/bevy/pull/24575]
- #24577 — Release notes copyediting MERGED (0.19 milestone, C-Docs, D-Trivial). Copyediting pass on release notes.
- #24573 — Fix bindless specular transmission material lookup MERGED (issam3105, A-Rendering, C-Bug). Fixes typo in bindless material lookup for
specular_transmission— was reading through wrong material index.^[https://github.com/bevyengine/bevy/pull/24573]- #22866 — Fix non_snake_case on bundle derive MERGED (SOF3, A-ECS, C-Usability). Long-standing fix (#22865): adds
#[allow(non_snake_case)]to avoid false-positive warnings on derived bundle fields.^[https://github.com/bevyengine/bevy/pull/22866]- #24488 — More safety comments in bevy_ecs MERGED (A-ECS, C-Code-Quality, D-Unsafe). Safety comment audit for unsafe code in ECS internals.
- #24576 — bevy_reflect: Reorganize type_info module MERGED (A-Reflection, C-Code-Quality). Internal module reorganization.
- #24583 — Justify inputs in multiple_text_inputs example (A-UI/A-Text, C-Examples, D-Trivial). Minor example fix.
- #24578 — Rename variable in custom_loop example (A-ECS, C-Examples, D-Trivial). Minor example fix.
- 0.19 milestone: 527/528 (99.8%), 1 open item. Down from 523/526 (99.4%, 3 open) on Jun 10. Two of the three remaining items merged (#24526, #24575). Only #24582 (Allow directly writing enums as fields, C-Feature, S-Needs-Triage) remains. 0.19 final release could ship at any moment.
- rc.2 (May 22) still latest pre-release. With only 1 open item (a new feature request, not a blocker), 0.19 final is effectively ready.
2026-06-13 watchlist
- No PRs merged today. Quiet day on main branch.
- #24611 MERGED 2026-06-14 (cart, Diagnostic overlay fixes and improvements, A-Dev-Tools, C-Bug, milestone 0.19). Opened Jun 12, merged 2026-06-14T21:21:27Z. Three fixes to the 0.19-new
DiagnosticsOverlaydev tool: (1) click passthrough [critical] — full-screen overlay Node defaultPickableblocked all clicks to lower UI;DiagnosticsOverlayPlanenow spawns withPickable { should_block_lower: false }; (2) BSN compat [important] —DiagnosticsOverlaygainedClone+Default,DiagnosticsOverlayItemgainedClone, now usable inbsn!; (3) font config [important] — newDiagnosticsOverlayStyleResource (titlePx(12.0)/ itemPx(10.0)). Plus API renamediagnostic_overlay_items→items(breaking, dev-tool-only). cart stated this must ship in 0.19 final (not RC) since the feature is on by default. See diagnostic-overlay, cart.^[https://github.com/bevyengine/bevy/pull/24611]- Resources-as-components regression still open: #24594 (P-Regression, S-Needs-Review), #24592 (S-Waiting-on-SME), #24591 still unresolved.
- First 0.20 milestone issue appeared: #24610 (viridia, Listview scrollwheel scrolling is very slow, A-UI, C-Bug).
- New notable issues: #24612 (ECS hooks after relationship hooks), #24607 (Query::iter_many_results), #24605 (SpotLight/PointLight shadow bug), #24604 (atmosphere preset switch).
- 0.19 milestone: 528/532 (99.2%), 4 open. #24611 merged Jun 14 (was 1 of the 5 open on Jun 13); the resources-as-components regression (#24594/#24592/#24591) remains the open blocker.^[https://github.com/bevyengine/bevy/milestone/40]
- rc.3 (Jun 10) is latest pre-release. v0.18.1 still tagged “Latest”.
- 🚨 v0.19.0-rc.3 RELEASED (mockersf, Jun 10, commit
bacfcda). Third release candidate. 29 reactions. Diff: v0.19.0-rc.2…v0.19.0-rc.3.^[https://github.com/bevyengine/bevy/releases/tag/v0.19.0-rc.3]- 4 PRs merged Jun 11–12: none are 0.19 milestone items. All additive, bugfix, or example-level.^[https://github.com/bevyengine/bevy/issues?q=is%3Apr+is%3Amerged+merged%3A2026-06-11..2026-06-13+sort%3Acreated-desc]
- ⚠️ 3 NEW 0.19 milestone issues — resources-as-components regression (all by alice-i-cecile, filed Jun 12):
- #24594 (PR, P-Regression, S-Needs-Review) — Make resources usable as components by moving IsResource off required components path.
- #24592 (Issue, X-Contentious) — Types can no longer be effectively used as both resources and components.
- #24591 (Issue, X-Contentious) — Inserting a resource as a component should not make it available as a resource.
- #24544 MERGED (bytemuck, BREAKING) —
From<&str>→From<&'static str>forName. Fixes #24465 (heap allocation footgun). Code passing non-static&strtoName::from()will break.- #24580 MERGED (issam3105) — Fix glTF specular extension parsing. Follow-up to #24571 (enable glTF validation for KHR_materials_specular).
- #24548 MERGED (YUHAO-corn) — Make
asset_changedimport path public. Fixes #24501.- #24584 MERGED (ickshonpe) — multiline_text_input example pop up justify menu.
- 0.19 milestone: 527/531 (99.2%), 4 open. Up from 527/528 (99.8%, 1 open) on Jun 11. Scope grew by 3 items (resources-as-components regression). ⚠️ Potential release blocker: the resources-as-components regression is tagged P-Regression and could delay 0.19 final.
- rc.3 (Jun 10) is latest pre-release. v0.18.1 still tagged “Latest”.
2026-06-18 watchlist
- 🔥 19 PRs merged Jun 17–18 — 7 targeting 0.19 milestone. Merge train is active post-rc.3.
- #24652 — SystemWithAccess::system immutable access (Jengamon, A-ECS, C-Usability, P-Regression, 0.19 milestone). Merged by alice-i-cecile. Adds
system()method to give back immutable access toScheduleSystemwithout exposing mutation. Fixes a regression from an earlier PR that made allSystemWithAccessfields private. External crates (e.g.,bevy_mod_debugdump) need this access.^[https://github.com/bevyengine/bevy/pull/24652]- #24613 — Rename Preferences to Settings (cart, 0.19 milestone, C-Code-Quality, +164/-184, 15 commits). Merged by alice-i-cecile. Renames
PreferencestoSettingsin thebevy_settingsframework to avoid conflating “settings” and “preferences”. Removes customPreferencescommands from examples. This should land in 0.19 because the API hasn’t been published yet and getting naming right is important. No direct migration impact for ZoOL — thebevy_settingscrate is new in 0.19.^[https://github.com/bevyengine/bevy/pull/24613]- #24626 — Point/Spot Shadow Map refresh on light change (0.19 milestone). Rendering fix: refreshes all shadow map components when the light has changed.^[https://github.com/bevyengine/bevy/pull/24626]
- #24632 — EditableText pointer propagation fix (0.19 milestone). UI fix for pointer event propagation in editable text fields.^[https://github.com/bevyengine/bevy/pull/24632]
- #24619 — Text selection collapse on focus loss (0.19 milestone). UI/text fix: text selection now collapses when focus is lost.^[https://github.com/bevyengine/bevy/pull/24619]
- #24633 — Derive Copy/Clone for InfiniteGrid (0.19 milestone). Enables
InfiniteGridto be used in more ECS patterns.^[https://github.com/bevyengine/bevy/pull/24633]- #24305 — Fix Deserialize derive for BrpResponse (0.19 milestone). BRP protocol fix.^[https://github.com/bevyengine/bevy/pull/24305]
- #24643 — Reuse heap allocations in prepare_mesh_bind_groups (beicause, A-Rendering, C-Performance, X-Uncontroversial). Rendering performance optimization: reuses heap allocations during mesh bind group preparation.^[https://github.com/bevyengine/bevy/pull/24643]
- #24622 — Reuse RenderContextState heap allocations (A-Rendering, C-Performance). Reuses
RenderContextStateandPendingCommandBuffersheap allocations.^[https://github.com/bevyengine/bevy/pull/24622]- #24606 — Clean up background motion vectors when prepass disabled (A-Rendering). Rendering fix: cleans up background motion vectors when prepass is disabled.^[https://github.com/bevyengine/bevy/pull/24606]
- #24528 — Add context messages to BevyError (0.20 milestone). Error handling improvement: adds context messages to
BevyError.^[https://github.com/bevyengine/bevy/pull/24528]- #24630 — Rect::clamp_point (A-Math, C-Usability). New math API:
bevy::math::Rect::clamp_pointfunction.^[https://github.com/bevyengine/bevy/pull/24630]- #24618 — SunDisk::MARS preset (A-Rendering, C-Feature). New atmosphere preset for Mars.^[https://github.com/bevyengine/bevy/pull/24618]
- #24651 — Clearer QueryAccessError docs (A-ECS, C-Docs, D-Trivial). Documentation improvement.^[https://github.com/bevyengine/bevy/pull/24651]
- #24641 — (Try)StableInterpolate for arrays (A-Math, C-Usability). Math/animation utility.^[https://github.com/bevyengine/bevy/pull/24641]
- #24639 — FeathersColorSwatch opaque display (A-UI, C-Feature). Feathers UI tweak.^[https://github.com/bevyengine/bevy/pull/24639]
- #24624 — Fix nightly clippy (A-CI, C-Bug). CI fix for nightly clippy.^[https://github.com/bevyengine/bevy/pull/24624]
- #24640 — variadics_please 1.1 → 2.0 (A-Dependencies). Dependency bump.^[https://github.com/bevyengine/bevy/pull/24640]
- **#24631 — EntityMut docs for 24596 (A-ECS, C-Docs). Documentation.^[https://github.com/bevyengine/bevy/pull/24631]
- 🚀 v0.19.0 STABLE RELEASED TODAY (2026-06-18). This is the official stable release after 3 RCs (rc.1 May 13, rc.2 May 22, rc.3 Jun 10). v0.19.0 is now tagged “Latest” on GitHub.^[https://github.com/bevyengine/bevy/releases/tag/v0.19.0]
- 543 PRs closed in the 0.19 milestone. Key highlights: Resources as Components (architectural), BSN (Bevy Scene Notation), Solari RT improvements, new
bevy_materialcrate,bevy_scene→bevy_world_serialization, Feathers stable, Contact Shadows, Occlusion Culling stable,bevy_lightintegration, PanCamera, Render Graph as Systems.- Migration guide updated: https://bevy.org/learn/migration-guides/0-18-to-0-19/
- Resources-as-components regression: #24594, #24592, #24591 — presumably resolved before final release.
2026-06-19 watchlist
- 🚀 Bevy 0.19 官方发布公告上线 (bevy.org, Jun 19). 261 位贡献者、1185 个 PR,官方博文覆盖 31 个核心章节:BSN、Contact Shadows、Physically Based SSR、Rectangular Area Lights、Richer Text、App Settings、Render Recovery、Render Graph as Systems、Partial Bindless、Diagnostics Overlay、SIMD contiguous query、Delayed Commands、Resources as Components、Remote Entity Reservation、Transform Gizmo、Infinite Grid 等。
- v0.19.0 stable 已在 crates.io 发布,迁移指南: https://bevyengine.org/learn/migration-guides/0-18-to-0-19/
- 相关 wiki 页面:bevy-0-19-release-notes 为本次发布的完整深度摘要。
2026-06-20 watchlist
- #24666 — bevy_scene: don’t use std Result (mockersf, 0.19.1 milestone, +1/-1). Fixes clippy
std_instead_of_corelint error triggered on 0.19 CI. No API or behavioral change.- 0.19.1 milestone: 3/7 closed (42% complete), 4 open. New patch milestone created post-0.19.0 release.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 34 open / 14 closed. Active development milestone.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release (released 2026-06-18). No new RC or patch release.
2026-06-21 watchlist
- 10 PRs merged Jun 21 — post-release merge train active. Mix of Solari fixes, UI features, ECS cleanup, and CI.^[https://github.com/bevyengine/bevy/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-06-21..2026-06-21]
- #24636 — Add scrubbing/dragging to number_input widget (viridia, 0.19.1 milestone, A-UI, C-Feature, D-Complex, M-Release-Note, X-Contentious). Feathers
number_inputnow supports click-drag scrubbing like Blender/Godot. Drag distance maps to value delta. Horizontal + vertical support with configurable sensitivity.^[https://github.com/bevyengine/bevy/pull/24636]- #24663 — Text performance regression fix (ickshonpe, 0.19.1 milestone, A-Text, C-Performance, P-Regression, D-Straightforward). Fixes a text layout performance regression introduced in 0.19. Text measurement cache was being invalidated too aggressively.^[https://github.com/bevyengine/bevy/pull/24663]
- #24629 — Extract sprite_material functions to separate shader module (cookie1170, A-Rendering, C-Code-Quality, C-Usability, D-Shaders). Refactors sprite material shader code into a reusable module. No API break — purely internal organization improvement.^[https://github.com/bevyengine/bevy/pull/24629]
- #24670/#24668 — Solari fixes (JMS55, A-Rendering, C-Bug). Two Solari path tracer fixes: (1) light tiles now properly random (#24670), (2) misc BRDF improvements (#24668).^[https://github.com/bevyengine/bevy/pull/24670]^[https://github.com/bevyengine/bevy/pull/24668]
- #24697 — Bump Version after Release (github-actions[bot]). Post-release version bump to 0.19.1-dev.^[https://github.com/bevyengine/bevy/pull/24697]
- #24693 — Fix version bump CI (mockersf). Fixes CI workflow for version bumping.^[https://github.com/bevyengine/bevy/pull/24693]
- 0.19.1 milestone: ~5/10 closed (~50%), 5 open.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: ~34/14 open/closed.^[https://github.com/bevyengine/bevy/milestones]
2026-06-22 watchlist
- 17 PRs merged Jun 22 — largest post-0.19.0 merge day. Rendering, ECS, UI, Solari, and dev-tools fixes.^[https://github.com/bevyengine/bevy/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-06-22..2026-06-22]
- #24708 — Fix sorted batching without indirect drawing (issam3105, 0.19.1 milestone, A-Rendering, C-Bug, O-WebGL2, D-Straightforward). Fixes sorted render phase batching when indirect drawing is not available (WebGL2). Previously meshes were not batched correctly without indirect draw, causing performance degradation on WebGL2.^[https://github.com/bevyengine/bevy/pull/24708]
- #18408 — Allow entity wrappers in entity set and map types (Victoronz, A-ECS, C-Usability, D-Complex, M-Migration-Guide). Breaking change. Enables
EntityHashSet/EntityHashMapto accept wrapper types likeEntitythroughAsEntitytrait. ChangesEntitySet/EntityMaptrait bounds. Code implementing these traits directly may need updates.^[https://github.com/bevyengine/bevy/pull/18408]- #24687 — Remove 0.19 deprecated code from bevy_ecs (Trashtalk217, A-ECS, C-Code-Quality, D-Trivial). Removes deprecated APIs from bevy_ecs that were marked for removal in 0.19. Code still using deprecated 0.18 APIs will now fail to compile.^[https://github.com/bevyengine/bevy/pull/24687]
- #24684 — clip_check_recursive fix (ickshonpe, 0.19.1 milestone, A-UI, C-Bug, P-Regression, D-Straightforward, A-Picking). Fixes a picking regression in
clip_check_recursive. UI clipping bounds were incorrectly calculated in some nested layouts.^[https://github.com/bevyengine/bevy/pull/24684]- #24671 — Solari: Fix MIS not using consistent PDF measures (JMS55, A-Rendering, C-Bug, C-Code-Quality). Fixes multiple importance sampling in Solari path tracer to use consistent PDF measures. Rendering quality improvement.^[https://github.com/bevyengine/bevy/pull/24671]
- #24650 — Don’t declare atomics in read-only late mesh preprocessing buffer (stuartparmenter, A-Rendering, C-Bug, O-DX12, D-Shaders). Fixes DX12 validation error where atomics were declared in a read-only buffer.^[https://github.com/bevyengine/bevy/pull/24650]
- #24237 — clamp time delta by max_delta even when relative speed > 1 (mockersf, A-Time, D-Straightforward). Fixes
Timeupdate to respectmax_deltaeven when time relative speed is greater than 1. Prevents extreme time deltas in slow-motion or fast-forward scenarios.^[https://github.com/bevyengine/bevy/pull/24237]- #24706 — Update sysinfo dependency to 0.39.5 (Rynibami, C-Bug, C-Dependencies, O-MacOS, P-Compile-Failure). Fixes macOS compilation failure with newer sysinfo.^[https://github.com/bevyengine/bevy/pull/24706]
- #24713 — Fix wrong border radius corners on diagnostics overlay (hukasu, 0.19.1 milestone, A-Diagnostics, C-Bug, D-Trivial). Fixes border radius visualization on diagnostic overlay.^[https://github.com/bevyengine/bevy/pull/24713]
- #24714 — Add missing import for light probe const (kfc35, 0.19.1 milestone, A-Rendering, C-Bug, D-Trivial). Adds missing WGSL import for
LIGHTMAPPED_MESH_DIFFUSEin irradiance volume shader.^[https://github.com/bevyengine/bevy/pull/24714]- #24704 — Feathers radio bg (gagnus, 0.20 milestone, A-UI, C-Feature, D-Straightforward). Adds radio button background styling to Feathers UI.^[https://github.com/bevyengine/bevy/pull/24704]
- 0.19.1 milestone: 13/21 closed (~62%), 8 open. Significant progress since Jun 20.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 32/21 open/closed.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release.
2026-06-23/24 watchlist
- 6 PRs merged Jun 23–24 — post-release quiet period. 4 targeting 0.19.1 milestone, 1 targeting 0.20, 1 unlabeled.^[https://github.com/bevyengine/bevy/issues?q=is%3Apr+is%3Amerged+merged%3A2026-06-23..2026-06-24+sort%3Acreated-desc]
- #24710 — bevy_text: give swash a stable font id (kristoff3r, Jun 23, merged by alice-i-cecile, C-Bug, D-Complex, +18/-6). Major text performance fix. Fixes a regression from the move to
parley:FontRefconstructors were implicitly generating newCacheKeyinstances on every call, breaking swash’s internal caching layer.many_text2d --hintingstartup time drops from 7s → 500ms (14× faster). Also addshintingflag tomany_text2dexample for testing.^[https://github.com/bevyengine/bevy/pull/24710]- #24723 — Fix Visibility component having no effect on infinite grid (chris-hain, Jun 23, merged by alice-i-cecile, 0.19.1 milestone, A-Rendering, C-Bug, D-Straightforward, X-Uncontroversial, +27/-1). The custom render phase for infinite grid did not clear invisible or despawned meshes before rendering, meaning
Visibilitycomponent had no effect onInfiniteGrid. Fix: added a removal pass in theinfinite_gridrender queue. Testing:toggle_visibilitysystem added to theinfinite_gridexample.^[https://github.com/bevyengine/bevy/pull/24723]- #24727 — fix: add missing png feature to bevy_feathers feature (Sigma-dev, Jun 23, merged by alice-i-cecile, 0.19.1 milestone, A-UI, C-Bug, D-Trivial). Fixes compilation when using
bevy_featherswithout thepngfeature explicitly enabled.^[https://github.com/bevyengine/bevy/pull/24727]- #24729 — implement Clone for IsDefaultUiCamera (JasmineLowen, Jun 24, merged by alice-i-cecile, 0.19.1 milestone, A-Camera, C-Usability, D-Trivial). Enables
IsDefaultUiCamerato be cloned, improving ECS ergonomics for camera setup patterns.^[https://github.com/bevyengine/bevy/pull/24729]- #24719 — Feathers theme aware fixes (gagnus, Jun 23, merged by alice-i-cecile, A-UI, C-Bug, +161/-43). Fixes multiple Feathers UI theme-awareness bugs: disclosure toggle setting colors directly instead of using
InheritableThemeTextColor,NumberInputandSlidermissing update functions for theme changes, and icons not updating with theme. Adds newThemedIconcomponent marker. Zero behavior change if themes are not switched at runtime.^[https://github.com/bevyengine/bevy/pull/24719]- #24701 — Number input polish (viridia, Jun 23, merged by alice-i-cecile, 0.20 milestone, A-UI, C-Feature, +83/-7). Follow-up to #24636 (scrubbing). Polishes the Feathers
number_inputwidget: release notes and migration guide added, focus behavior when disabled fixed, various UI tweaks. Part of #19236.^[https://github.com/bevyengine/bevy/pull/24701]- 0.19.1 milestone: 18/25 closed (72% complete), 7 open. Up from 13/21 (~62%, 8 open) on Jun 22. 5 more issues closed, 4 new items added to scope.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 23/30 closed/open (43% complete). Up from 14/32 on Jun 22. 9 new issues closed in 0.20 milestone.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release.
2026-06-25 watchlist
- 1 PR merged Jun 24–25 — quiet day. Only one merge, targeting 0.20 milestone.
- #24705 — Support floating dialogs in feathers and underlying bevy_ui_widgets (gagnus, Jun 24, merged by alice-i-cecile, 0.20 milestone, A-UI, C-Feature, D-Modest, M-Release-Note). Expands the existing modal dialog into a full floating dialog system at both the Feathers UI level and the underlying
bevy_ui_widgetslevel. Useful for editor-style floating panels (settings, entity debugger) that can be re-ordered and moved. No breaking changes to existing modal dialog APIs.^[https://github.com/bevyengine/bevy/pull/24705]- 0.19.1 milestone: 18/27 closed (66% complete), 9 open. Scope grew by 2 items since Jun 24 (25 → 27 total).^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 24/32 closed/open (43% complete). Up from 23/30 on Jun 24.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
2026-06-26 watchlist
- 2 PRs merged (Jun 25–26).
- #24742 — Fix bsn nested entity references (HeartofPhos, merged 6h ago, 0.19.1 milestone, A-Scenes, C-Bug, D-Straightforward). Fixes BSN nested entity reference parsing where inner entity refs were not correctly resolved during scene expansion.^[https://github.com/bevyengine/bevy/pull/24742]
- #24676 — Rename
NextState::set_if_neqtoset_if_different(mansiverma897993, merged Jun 25, A-States, C-Bug, D-Straightforward, M-Migration-Guide). Resolves naming clash withstd/corePartialEq::nemethod. Breaking API change — code usingset_if_neqmust rename toset_if_different.^[https://github.com/bevyengine/bevy/pull/24676]- 0.19.1 milestone: 19/28 closed (67% complete), 9 open. Scope expanded from 27 to 28 total items since Jun 25.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 24/32 closed/open. Steady progress.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release yet.
2026-06-27 watchlist
- 1 PR merged Jun 26–27 — very quiet weekend day. Only one merge, targeting 0.20 milestone.^[https://github.com/bevyengine/bevy/pull/24672]
- #24672 — Apply temporal jitter to PreviousViewData (JMS55, merged by alice-i-cecile, 0.20 milestone, A-Rendering, C-Bug, D-Straightforward, +82/-12, 7 files changed). PreviousViewData did not account for temporal jitter, leading to small inaccuracies that caused issues in a future Solari PR. Fix applies temporal jitter to PreviousViewData and adds
unjittered_clip_from_worldfor motion vector usage which requires unjittered matrices.^[https://github.com/bevyengine/bevy/pull/24672]- 0.19.1 milestone: 20/28 closed (71% complete), 8 open. Up from 19/28 (67%) on Jun 26. One more issue closed.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/32 closed/open (44% complete). Up from 24/32 on Jun 26.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
2026-06-28 watchlist
- 3 PRs merged (Jun 27–28) — quiet day with small fixes only.
- #24776 — Add stricter nonmax crate version requirement (RCoder01, merged Jun 27, C-Dependencies, D-Trivial). Fixes compilation failure when
nonmaxcrate is pinned to <= 0.5.3.bevy_ecsusesNonMaxU32::MAXadded in 0.5.4.^[https://github.com/bevyengine/bevy/pull/24776]- #24770 — Fix clustered decal docs macOS/iOS restriction (again) (mgi388, merged Jun 27, A-Rendering, C-Docs, D-Trivial). Follow-up to #21332 — fixes component-level doc comment that was missed.^[https://github.com/bevyengine/bevy/pull/24770]
- #24768 — fix effective_speed when delta is clamped by max_delta (akshitj11, merged Jun 26, A-Time, C-Bug). Fixes #24715.
effective_speednow reportsdelta / raw_deltainstead ofrelative_speed, staying correct whenmax_deltaclamping occurs.^[https://github.com/bevyengine/bevy/pull/24768]- 0.19.1 milestone: 20/28 closed (71% complete), 8 open. Unchanged from Jun 27.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/32 closed/open (44% complete). Unchanged from Jun 27.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
2026-06-29 watchlist
- 1 PR merged Jun 28–29 — very quiet day. Only one merge.
- #24736 — Update rust-version to 1.96 in root Cargo.toml (taearls, merged by alice-i-cecile, A-Build-System, A-Cross-Cutting, C-Bug, C-Testing, D-Trivial, X-Uncontroversial, +1/-1). Bevy tests use
assert_matches!macro which requires Rust 1.96; the declaredrust-versionin rootCargo.tomlwas still 1.95, causing compilation failures on Rust 1.95. CI already uses stable (1.96+), so this is a correctness fix for the declared minimum version.^[https://github.com/bevyengine/bevy/pull/24736]- 0.19.1 milestone: 20/28 closed (71% complete), 8 open. Unchanged from Jun 28.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/32 closed/open (44% complete). Unchanged from Jun 28.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
2026-06-30 watchlist
- 1 PR merged (late Jun 29 / early Jun 30) — missed in yesterday’s update due to merge timing.
- #23892 — Shrink previous mesh uniform to only store transform (pcwalton, merged by cart, A-Rendering, C-Performance, D-Modest). Introduces
PreviousMeshInputUniformcontaining only the transform instead of copying the entire 24-wordMeshInputUniformto the previous frame buffer every frame. Onmany_cubes,prepare_previous_mesh_uniformsdrops from 240.1 μs → 65.33 μs (3.68× speedup). Also paves the way for sparse updates of only changed fields in future work. No public API change.- 0.19.1 milestone: 20/35 closed (57% complete), 15 open. Scope expanded significantly from 28 → 35 total items since Jun 29 (7 new items added). Closed count unchanged at 20.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone: 25/59 closed/open (42% complete), 34 open. Scope expanded from 57 → 59 total items. Closed count unchanged at 25.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
2026-07-01 watchlist
- 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 again 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 watchlist
- 1 PR merged Jul 1–2 — quiet day with a single crash fix.
- #24807 — Prevent panic in
check_dir_light_mesh_visibility(dylansechet, merged by alice-i-cecile, A-Rendering, D-Straightforward, P-Crash, S-Ready-For-Final-Review, X-Uncontroversial, +7/-0, 1 file, 0.19.1). Fixes #24804.check_dir_light_mesh_visibilityusesview_visible_entities_queue(Local<Parallel<Vec<Vec<Entity>>>>>) as a per-thread buffer where the outerVechas one slot per shadow cascade. BeingLocal, buffers persist across frames. Each frame the buffers should be resized in thepar_iterinit closure, but that init only runs for threads receiving work. If mesh count drops, idle threads never resize their buffer, leaving it at the previous frame’s length. If cascade count then increases, those buffers get indexed out-of-bounds. Fix: resize all buffers before thepar_iterloop.- 0.19.1 milestone: 21/39 closed (53% complete), 18 open. Closed count increased from 20→21 (the merged PR). Scope expanded from 38→39 total items.^[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 watchlist
- 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 watchlist
- 2 PRs merged late on Jul 3 (caught in today’s scan) — both docs fixes, no functional changes.
- #24852 — Fixes archived rfcs repo link in README.md (razlani, merged Jul 3, C-Docs, D-Trivial). Fixes #24709. The rfcs repository was archived; README link was stale.
- #24830 — document settings save location and TOML format (akshitj11, merged Jul 3, C-Docs, D-Trivial, S-Ready-For-Final-Review). Documents where
SettingsPluginwrites settings on Linux/macOS/Windows/WASM and that the format is TOML. Fixes #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 expanded from 59 → 60 total items (1 new open). 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-05 watchlist
- 2 PRs merged Jul 4–5 — one rendering micro-optimization, one input bug fix.
- #24844 — Increase
MaterialProperties::draw_functionsinline capacity (beicause, merged Jul 5, A-Rendering, D-Trivial, S-Ready-For-Final-Review). Small performance optimization: increases the inline SmallVec capacity for draw functions in material properties.- #24829 — Fix
bevy_gilrsweak 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 at 21.^[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. No new RC or patch release.
2026-07-07 watchlist
- 12 new PRs merged Jul 5–7 (excluding #24844 and #24829 already logged on 07-05) — significant 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::Valuedid 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. Rendering bugfix.
- #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. Audio bugfix for the patch release.
- #24859 — Text measurement min-content fix (merged ~Jul 6, A-UI, C-Bug, D-Straightforward, 0.19.1). Fixes text measurement behavior with
min-contentsizing. 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. Dependency update for 0.19.1.
- #24764 — Solari: Fix removed RaytracingMesh3d component (merged ~Jul 6, A-Rendering, C-Bug, D-Straightforward, 0.19.1). Fixes an issue where
RaytracingMesh3dcomponent was removed in Solari path tracer. Rendering bugfix.- #24863 — Expose bevy::pbr::gltf module (merged ~Jul 6, A-Rendering, C-Docs). Makes
bevy::pbr::gltfmodule public. API exposure change.- #24838 — Remove old docs that no longer apply (merged ~Jul 6, C-Docs, D-Trivial). Removes outdated documentation.
- #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 watchlist
Gap update — 16 days of Bevy activity (Jul 8–23, 2026). 150 PRs merged, covering: 0.19.1 milestone nearing completion (90.6%), wgpu 30 upgrade, Solari v7, major rendering optimizations, Feathers UI example migration, and key migration-guide changes for 0.20.
- 0.19.1 milestone reached 90.6% — 58/64 closed, only 6 open items remaining as of Jul 23. This represents dramatic progress from 21/40 (52%) on Jul 5. Remaining open items: Transform Gizmo Rendering Bug (#25106), Deferred emissive crushed via clearcoat (#25083), Web Firefox pipeline regression (#24944), MeshAllocator GPU memory leak (#24892), bevy_world_serialization deps (#24805), bevy_remote pulls rendering (#24617). A patch release now seems imminent.^[https://github.com/bevyengine/bevy/milestones]
- 0.20 milestone reached 57.6% — 49/85 closed, up from 25/61 (~41%) on Jul 5. Significant progress from both new items and bulk example migration PRs.^[https://github.com/bevyengine/bevy/milestones]
Key Architectural / Rendering PRs
- #23662 (Jul 7) — Move MeshUniform allocation from CPU to GPU (pcwalton). A major rendering architecture change: mesh uniform data is now allocated directly on the GPU via
AtomicSparseBufferVecinstead of CPU-side vectors. Significantly reduces CPU overhead for mesh rendering.- #24841 (Jul 16) — Upgrade to wgpu 30 (ChristopherBiscardi, 0.20). Bevy’s wgpu dependency jumps from wgpu 29 to wgpu 30, bringing the latest GPU API improvements. Significant underlying graphics stack upgrade.
- #24767 (Jul 14) — Solari v7 (JMS55, 0.20). The 7th iteration of Bevy’s experimental real-time GPU path tracer. Solari continues active development with consistent performance and quality improvements.
- #24833 (Jul 8) — Add bindless support for 2D materials (pcwalton). Extends the bindless rendering architecture (previously for 3D) to cover 2D materials. Both 2D and 3D now benefit from GPU-driven resource binding.
- #25005 (Jul 22) — Use ECS for render world window data (IceSentry, M-Migration-Guide, 0.20). Replaces direct window data access patterns with ECS-centric resource/component access in the render world. Breaking change for code directly accessing window data from render systems.
- #24957 (Jul 14) — Fix parallel render graph (JMS55, P-Regression, 0.20). Fixes a regression where the render graph’s parallel execution was broken. Render performance regression from earlier changes now corrected.
- #24984 (Jul 16) — Fix crash in Bistro by avoiding binning mesh instances multiple times (pcwalton, P-Crash, P-Regression, 0.20). A critical crash fix for the Bistro scene — mesh instances were being binned multiple times, causing rendering crashes.
- #24378 (Jul 17) — Fallback fonts (ickshonpe, 0.20). Bevy now supports fallback font chains, where missing glyphs are resolved from secondary fonts. Important for CJK and emoji rendering.
Solari / Rendering Fixes
- #25070 (Jul 21) — Remove expensive queue submit from sparse buffer vec (JMS55, C-Performance). Removes an unnecessary GPU queue submit in the sparse buffer management that was costing rendering performance.
- #25045 (Jul 18) — Solari: Reduce transform GPU binding by 16 bytes per transform (JMS55, C-Performance). Shrinks GPU memory usage for transform data in Solari.
- #25046 (Jul 21) — Solari: Reduce temporal shadow lag (JMS55). Improves Solari’s temporal shadow accumulation, reducing visible lag in shadow response.
- #25043 (Jul 17) — Fix previous frame depth-stencil view (JMS55, C-Bug). Fixes depth-stencil view binding for temporal rendering passes.
- #25020 (Jul 17) — Fix 16-bit grayscale DynamicImage texture formats (0xEgao, C-Bug). Corrects texture format handling for 16-bit grayscale images.
- #25019 (Jul 16) — Parallelize mark_3d_meshes_as_changed_if_their_assets_changed (Lampan-git, C-Performance). Parallelizes the mesh change-detection system, reducing CPU overhead in the rendering pipeline.
- #24223 (Jul 7) — CompressedImageSaver revamp redux (JMS55, 0.20). Overhaul of the compressed texture saving system — better support for compressed GPU formats.
- #22894 (Jul 9) — Add PostProcessBindGroupCache (IceSentry). Caches bind groups for post-processing effects, reducing GPU state changes.
0.19.1 Critical Bugfix Cluster
- #25068 (Jul 22) — Fix: Steam OSK shifted text input (0xEgao). On-Screen Keyboard text input on Steam Deck was shifted/offset; now correctly positioned.
- #24999 (Jul 16) — Don’t cull rotated UI text glyphs (0xEgao, 0.19.1). Rotated UI text glyphs were incorrectly culled; now rendered correctly.
- #24998 (Jul 16) — Fix atmosphere rendering in rotated and Z-up worlds (Supremesv715, 0.19.1). Atmosphere rendering was broken in non-standard coordinate system configurations.
- #24982 (Jul 14) — Wrong UI camera fix (ickshonpe, 0.19.1). Fixes a UI rendering misdirection where the wrong camera was used for UI overlay.
- #24977 (Jul 14) — Fix crash when adding ContactShadows to a camera at runtime (voidreamer, P-Crash, 0.19.1). Runtime addition of ContactShadows previously caused a crash.
- #24972 (Jul 14) — Fix bugs with remote entity allocation (ElliottjPierce, P-Unsound, 0.19.1). Fixes unsound entity allocation in bevy_remote’s network entity management.
- #24861 (Jul 8) — Fix split screen + transparent material rendering (RCoder01, 0.19.1). Split-screen configurations with transparent materials now render correctly.
- #24843 (Jul 16) — Don’t batch depth only prepasses when using custom shaders (beicause, 0.19.1). Prevents batching incompatibility in depth-only prepasses with custom vertex/fragment shaders.
- #24866 (Jul 14) — Fix SubApp::add_message scheduling (plasmagrenade, 0.19.1). Fixed a bug where SubApp messages were not properly scheduled.
- #24876 (Jul 13) — Fix lifetime issues for native subexpressions in bsn! enum variants (akshitj11, 0.19.1). Fixes a soundness issue in BSN macro enum handling.
- #24797 (Jul 8) — Ensure RenderLayers is a Component on every ExtractedLight and its ShadowView/ExtractedView (kfc35, 0.19.1). Shadow-casting lights now properly respect RenderLayers.
New Features & ECS Improvements
- #25007 (Jul 16) — Add entity label resolution infrastructure for entity inspectors (alice-i-cecile, 0.20). New infrastructure for resolving human-readable labels for entities. Foundation for entity inspector UI in the editor/dev tools.
- #24995 (Jul 15) — Add Display impls for reflected types (alice-i-cecile, 0.20). Reflected types can now implement
Displayfor debug and tooling output. Improves editor/inspector readability.- #24779 (Jul 14) — Elliptical border radius support (ickshonpe). UI nodes can now use elliptical (non-uniform) border radii, e.g. different horizontal vs vertical radii.
- #24784 (Jul 8) — New menu-related widgets (viridia). Adds menu widget types to the Feathers UI toolkit.
- #25061 (Jul 21) — Add ensure! macro for BevyError (0xEgao). New
ensure!macro provides early-return pattern for error conditions withBevyError— similar to anyhow::ensure but domain-specific.- #24753 (Jul 8) — Add World::resource_entity (Miguel0312). Returns the entity associated with a resource, enabling resource-specific component attachments.
- #24938 (Jul 21) — Add AlignedVec and use it to improve ShaderBuffer (beicause, C-Performance). New
AlignedVectype provides aligned memory allocation for GPU buffer data, improving ShaderBuffer performance.- #24732 (Jul 9) — Add tab support to text gizmos (tylercritchlow). Text gizmos now support tab characters.
Migration-Sensitive Changes
- #25005 (Jul 22, 0.20) — Use ECS for render world window data (IceSentry, M-Migration-Guide). BREAKING: Code that directly accesses window data from render systems must migrate to ECS resource/component access. The previous direct access pattern is removed.
- #25053 (Jul 21, 0.20) — Split ordered and unordered TypeId maps (0xEgao, M-Migration-Guide). TypeId-indexed maps are now split into ordered and unordered variants for performance. Code using
TypeIdMapor similar may need to adjust.- #25059 (Jul 20, 0.20) — Add automatic input focus cause (0xEgao, M-Migration-Guide). Focus events now carry a
FocusCauseautomatically; code pattern-matching on focus events may need updates. 0.20-only break.- #24078 (Jul 8, main) — Track dirty status of individual elements in
AtomicSparseBufferVec(pcwalton). Internal rendering optimization; no public API change but may affect downstream renderer customization.
Bulk UI/Feathers Example Migration
Systematic migration of Bevy examples from legacy
ui::widget::Buttontoui_widgets::Button/ Feathers widgets and BSN syntax. Led by kfc35 and taearls across ~30+ PRs: #25129, #25122, #25112, #25109, #25108, #25104, #25102, #25100, #25093, #25089, #25086, #25085, #25080, #25076, #25073, #25071, #25064, #25063, #25049, #25048, #25044, #25042, #25040, #25031, #25008, #25004, #25000, #24974 and more. This indicates Feathers UI is becoming the default widget framework for Bevy examples.
Remaining 0.19.1 Blockers (6 open)
As of Jul 25, these 5 issues block the 0.19.1 patch release: Deferred rendering crushes emissive via clearcoat (#25083, P-Regression, S-Ready-For-Implementation), Web Firefox pipeline regression (#24944, P-Regression, S-Needs-Investigation), MeshAllocator GPU memory leak on mesh modification (#24892, P-High, S-Ready-For-Implementation), bevy_world_serialization deps (#24805, S-Ready-For-Implementation), bevy_remote pulls in rendering deps (#24617, S-Needs-Design).^[https://github.com/bevyengine/bevy/milestones]
Releases
No new releases since v0.19.0 (Jun 18). No v0.19.1 RC or patch release published yet. With 0.19.1 at 90.6%, a patch release could ship within days.
2026-07-24 watchlist
Quiet day — 3 Feathers UI Phase 4 example migration PRs merged (Jul 23). No functional changes, no breaking changes, no new releases.
| PR | Title | Author | Label |
|---|---|---|---|
| #25130 | Migrate mixed_lighting to use FeathersRadio (Phase 4 Item 4) | kfc35 | C-Examples |
| #25124 | Migrate box_shadow to use FeathersRadio FeathersNumberInput FeathersButton and full bsn! (Phase 4) | kfc35 | C-Examples |
| #25091 | Migrate occlusion_culling to use FeathersRadio | tevans-3 | C-Examples |
- All three PRs are part of the systematic Feathers UI example migration campaign (Phase 4). Not functional changes, no migration impact. The campaign continues to ramp down legacy
ui::widget::Buttonusage.
Milestone Status (2026-07-24)
- 0.19.1: 58/64 closed (90.6%), 6 open — unchanged from Jul 23.^[https://github.com/bevyengine/bevy/milestones]
- 0.20: 49/86 closed (57.0%), 37 open — scope +1 since Jul 23 (85→86), closed count unchanged.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
Releases
No new releases. v0.19.0 (Jun 18) remains latest. With 0.19.1 at 92.2% (only 5 open items), a patch release could ship any day.
2026-07-25 watchlist
3 PRs merged Jul 24 — Gizmo bug fix (0.19.1), Solari performance improvement, and code quality Entity::PLACEHOLDER cleanup.
| PR | Title | Author | Label | Milestone |
|---|---|---|---|---|
| #25106 | Transform Gizmo Rendering Bug: Incorrect placement with custom viewport | MrVintage710 | C-Bug A-Editor A-Gizmos | 0.19.1 |
| #25082 | Solari: Retained extract | JMS55 | A-Rendering C-Performance | none |
| #25119 | Easy Entity::PLACEHOLDER to Option<Entity> conversions | greeble-dev | A-Rendering A-ECS C-Code-Quality X-Contentious | none |
- #25106 — Fixes #25087. Transform Gizmo rendered in wrong position when using custom viewport cameras. The overlay camera’s viewport was not being updated during position sync. Closed one of the 6 remaining 0.19.1 blockers. Merged by MrVintage710.
- #25082 — Solari retained extract: makes instance extraction faster by only extracting changed entities (not all entities). Uses 4 specialized systems for new/deleted/transforms/mesh-material. Performance improvement for the path tracer. Merged by JMS55.
- #25119 — Progress on #25118 (
Entity::PLACEHOLDERshould not be used as null). ReplacesEntity::PLACEHOLDERwithOption<Entity>in straightforward code paths. Backward compatible. Minor performance win (checkingNoneis faster than passing PLACEHOLDER toQuery::get). Merged by greeble-dev, marked X-Contentious.
Milestone Status (2026-07-25)
- 0.19.1: 59/64 closed (92.2%), 5 open — +1 merged (#25106) since Jul 24.^[https://github.com/bevyengine/bevy/milestones]
- 0.20: 50/86 closed (58.1%), 36 open — +1 merged since Jul 24, scope unchanged at 86 items.^[https://github.com/bevyengine/bevy/milestones]
- v0.19.0 stable remains latest release. No new RC or patch release.
Related pages
- bevy-ecs-game-type-fit — Which game types fit Bevy ECS best, and why.
- bevy-game-development — Bevy/Rust game-development concepts and project practices.
- bevy-game-dev-2026-05 — May 2026 engine changes and development tracking.
- bevy-game-dev-2026-06 — June 2026 engine changes and development tracking.
- bevy-game-dev-2026-07 — July 2026 engine changes and development tracking.
- bevy-projects — ZoOL’s Bevy projects, prototypes, and repository notes.
- bevy-migration-notes — Current watchlist and April 2026 migration notes.
- bevy-migration-2026-05 — May 2026 migration-sensitive changes.
- bevy-migration-2026-06 — June 2026 migration-sensitive changes.
- bevy-migration-2026-07 — July 2026 migration-sensitive changes.
- bsn — Bevy Scene Notation 概念笔记
- cart — Carter Anderson,Bevy 创建者 / 核心维护者
- diagnostic-overlay — Bevy 0.19 诊断覆盖层 dev tool
- skybox — Skybox 组件与渲染世界清理
- sync-component-plugin — SyncComponentPlugin 同步机制
BSN 概念摘要
- BSN (Bevy Scene Notation) 是 Bevy 0.19 落地的声明式场景语法层,基于
bsn!/bsn_list!宏。- 核心特性:将命令式
commands.spawn((...)).with_children(...)转为声明式清单;~Template模板 patching、@SceneComponent消歧(:= cacheable);SceneComponentderive 让组件自带「出厂配置」;world.spawn_scene(...)一行拍进 World。- 当前局限:0.19 不支持
.bsn文件导入/导出,不支持 GLTF 场景加载器移植,bsn!宏可能导致编译时 debug symbol 膨胁(优化已提交)。- 关键版本:0.19 milestone 99% 完成,BSN 子集已在 main 分支。0.20 计划实现动态 BSN 资产格式和静态检查。
- 社区参考:官方示例
examples/scene/bsn.rs;Feathers UI 工具集已通过 PR #23536 完成 BSN 移植;社区模板库i-cant-believe-its-not-bsn。- 实用建议:纯 UI/2D 原型可在 main 分支使用 BSN;需要编辑器、场景序列化、GLTF 加载、MOD 支持的项目继续用
bevy_world_serialization(旧系统)等 0.20 。
Open questions
- Which Bevy version should each local project track?
- What reusable patterns should be extracted across ZoOL’s Bevy projects?
- Which game-development topics deserve dedicated concept pages, e.g. ECS scheduling, rendering, UI, asset pipeline, save systems, or audio?