What Bevy 0.20 Changed Before You Upgrade a 0.19 Project - 2026
![]()
If you searched bevy 0.20 after October 8, 2026, you do not need another highlight reel of the Zorah scene in Solari. You need an upgrade order for a project that already compiles on 0.19.
Bevy published Bevy 0.20 the same day as the v0.20.0 GitHub release. The news post points apps and plugins at the official 0.19 to 0.20 Migration Guide. Headlines people will paste into Discord: Solari (realtime path-traced renderer) plus DLSS-related work, BSN syntax improvements, a Ready event, more Feathers widgets, WESL shaders, mesh shaders, sprite/material unification work, and assorted ECS/UI breaks listed in the migration guide. What did not ship: an official visual editor. Feathers remains an editor-centric widget toolkit, not “Bevy Editor 1.0.”
This URL owns the live 0.19 → 0.20 read: which five break clusters to hit first, what to lab on a branch, and what not to confuse with the 0.19 BSN evening tutorial.
Why this matters now
Hacker News item 50013610 and GitHub release reactions made 0.20 a “bump Cargo.toml tonight” temptation. Live 0.19 games fail in three predictable ways:
- BSN macros that compiled on 0.19 fail after syntax improvements.
- Custom shaders assume the old pipeline while WESL / material paths move.
- Teams treat Feathers widgets as proof an official editor arrived.
Direct answer: Branch, pin bevy = "0.20", walk the migration guide in a fixed order (BSN → observers/events → shaders/WESL → rendering/Solari-adjacent → UI/Feathers/Ready), prove cargo run on your smoke scene, then schedule the mainline bump. Do not invent an editor roadmap from widget screenshots.
Who this explainer is for
| Audience | Use it to… |
|---|---|
| Beginners | Know 0.20 is a version bump, not an editor ship |
| Developers | Ordered break list + branch protocol |
| Creators | Discord paste that sets expectations |
| Companies | Diligence — pin, CI matrix, no-editor honesty |
Time: 30 minutes to read; half day to lab a mid-size 0.19 game.
Honest limit: bevy.org/news/bevy-0-20 and the migration guide are authorities. Always prefer the live guide over this summary when APIs disagree.
Non-repetition
| URL | Job |
|---|---|
| Bevy 0.20 news | Primary highlights |
| 0.19→0.20 migration guide | Authoritative break list |
| GitHub v0.20.0 | Release artifact |
| 0.19 BSN evening | First bsn! lab on 0.19 |
| Bevy 0.17 schedule hitch | Older schedule debug |
| Contact shadows spike | Lighting polish cousin |
| Help hub | Symptom fixes |
| Discord resources | Community paste |
| This URL | What 0.20 changed before upgrading a 0.19 project |
The one-paragraph version
Bevy 0.20 (October 8, 2026) is a feature-and-break release: Solari path-tracing work, BSN syntax improvements, Ready event, WESL shaders, more Feathers widgets, and a long migration guide from 0.19. Indies with live 0.19 projects should upgrade on a branch in a fixed break order, re-read BSN and shader code carefully, and stop treating Feathers as an official editor. The migration guide wins every argument with Discord memory.
Five-break upgrade order (hit these first)
Use this sequence unless the migration guide explicitly tells you a dependency forces otherwise.
| Order | Cluster | Why first | Smoke |
|---|---|---|---|
| 1 | BSN syntax | Scene macros break compile early | Open every bsn! / scene spawn path |
| 2 | Observers / events | Migration notes Bundle generics moving into event types | Fire one observer path you rely on |
| 3 | WESL / shaders / materials | Silent look-breaks and shader compile fails | Load custom materials + 2D sprites |
| 4 | Rendering / Solari-adjacent | Only if you opted into Solari/DLSS paths | Path-trace or fallback scene |
| 5 | UI / Feathers / Ready / text | Widget and text input splits | Main menu + text fields |
Everything else in the migration guide still matters — this order stops the “fix random red squiggles” thrash.
Break 1 — BSN syntax improvements
0.19 taught teams bsn! as the Next Generation Scenes path (BSN evening). 0.20 improves BSN syntax. Expect macro and nesting adjustments.
Monday rule: Grep bsn!, spawn_scene, and scene functions first. Do not polish Solari lighting while BSN fails to compile.
Still true: Do not claim a first-party .bsn asset-file editor workflow unless the live docs say it shipped — the 0.19 caveat culture still matters; verify against 0.20 docs before partner language.
Break 2 — Observer events / Bundle generics
The migration guide lists observer-event changes, including moving Bundle generics into the event type. If your 0.19 code used patterns that assumed the old shape, compile errors show up as soon as BSN is quiet.
Monday rule: Pick one gameplay observer (pickup, door, UI click) and make it green before touching shaders.
Break 3 — WESL shaders and material/sprite unification
0.20 highlights WESL shaders plus sprite material / render backend unification themes. Custom shader stacks and 2D material code are high-risk.
Monday rule: Lab on a minimal custom material. If you only use stock PBR/sprites, still open one textured sprite scene after the bump — unification breaks love “it still compiles but looks wrong.”
Break 4 — Solari / DLSS (opt-in)
Solari is the glamorous screenshot. It is not the upgrade bottleneck for most 0.19 action games that never enabled path tracing.
| Your 0.19 project | Action |
|---|---|
| Never touched Solari | Skim news; do not block the bump on Solari labs |
| Experimented with Solari | Re-read Solari section; expect accuracy/perf changes |
| Shipping Solari looks | Dedicated lab branch; golden-frame compares |
Company note: Marketing “we are on Bevy path tracing now” needs a Solari-capable machine matrix — not a single artist laptop screenshot.
Break 5 — Ready event, Feathers, text/UI splits
Migration guide entries include Ready event, Feathers widget growth, EditableText/TextInput splits, font/source changes, and related UI moves. Feathers is editor-centric UI toolkit, not the missing official Bevy Editor.
Monday rule: Boot the main menu. Type in every text field. Confirm focus/escape behavior if you relied on old EditableText assumptions.
Beginner path — first afternoon
Prerequisites: git branch rights, Rust toolchain matching Bevy’s MSRV notes for 0.20, 0.19 project that currently cargo runs.
- Read Bevy 0.20 news highlights once.
- Open the migration guide in a second tab — keep it open all afternoon.
git checkout -b chore/bevy-0-20.- Bump Bevy (and bevy_* crates you pin) to 0.20 per guide.
cargo check— fix BSN first.- Walk breaks 2–5 with the smoke table.
- Only then merge to main after CI green.
Common beginner mistakes: upgrading mid-jam; assuming Feathers = editor; skipping migration guide for HN comments; upgrading plugins that still pin 0.19.
Developer branch protocol
| Step | Pass if… |
|---|---|
| Branch named | chore/bevy-0-20 or similar |
| Lockfile updated | Intentional commit |
| CI on 0.19 still green on main | No dual-break |
| Plugin audit | Every Bevy plugin has a 0.20 line or a temp fork note |
| Smoke scene checklist | Menu, one gameplay scene, one custom shader if any |
| Rollback tag | Pre-bump tag on 0.19 |
Plugin audit worksheet
| Crate | 0.19 OK? | 0.20 release? | Action |
|---|---|---|---|
| WAIT / FORK / REPLACE / DROP |
If a critical plugin has no 0.20, do not bump main. Lab or wait.
What 0.20 is not
| Claim | Reality |
|---|---|
| Official Bevy Editor shipped | No — Feathers widgets ≠ editor product |
| Must enable Solari | Optional path-tracing stack |
| BSN evening tutorial is obsolete | Still the 0.19 on-ramp; then migrate syntax |
| Migration guide is optional | It is the contract |
Creator Discord paste
Bevy 0.20 (Oct 8): Solari/DLSS work, BSN syntax improvements, Ready event, WESL shaders, more Feathers widgets. We are branching
chore/bevy-0-20and walking the official 0.19→0.20 migration guide in order: BSN → observers → shaders → Solari-if-needed → UI. Still no official editor — Feathers is widgets. Do not bump main until CI + smoke scene pass.
Company diligence
| Question | Strong answer |
|---|---|
| Are we on 0.20? | Lab branch as of DATE; main still 0.19 until CI green |
| Editor readiness? | No official editor; Feathers used for internal tools only |
| Solari in shipping builds? | Yes/No with machine matrix |
| Third-party plugins | Audit sheet attached |
CI matrix for the bump week
Do not replace your 0.19 CI job on day one. Run both until the lab branch is trusted.
| Job | Purpose |
|---|---|
main-0.19 |
Keeps ship lane green |
lab-0.20 |
Same tests on chore/bevy-0-20 |
lab-0.20-wgpu-smoke |
Optional GPU runner if you have one — catches silent look-breaks |
When lab-0.20 matches main-0.19 on your automated suite and the manual smoke checklist passes, flip main’s Bevy pin in a single PR with the migration notes linked.
Example Cargo bump discipline (illustrative)
Exact versions move — always read crates.io / Bevy’s pin guidance for the day you bump:
# before
bevy = "0.19"
# after (lab branch)
bevy = "0.20"
If you split features (dynamic_linking, wayland, etc.), copy the feature set intentionally. A silent feature drop looks like a “0.20 regression” when it is a Cargo.toml mistake. Commit lockfile changes in the same PR as the version bump so CI cannot drift.
Solari machine matrix (only if you market path tracing)
| Machine class | Check |
|---|---|
| Dev laptop (integrated GPU) | Does Solari even run? Document fallback |
| Mid discrete GPU | Frame time budget for your scene |
| High-end / DLSS-capable | Where DLSS-related paths are validated |
If marketing wants Solari screenshots, schedule a capture day separate from the compile-green bump. Mixing “make it compile” and “make path tracing pretty” doubles the lab duration.
Observer and UI footguns to read twice
From the migration TOC themes (verify live wording):
- Observer events reshaped around Bundle generics on the event type — update custom event definitions before chasing gameplay bugs.
- EditableText / TextInput separation means old “one component did both” assumptions fail at runtime as weird focus bugs.
- Escape in text input releasing focus and propagating can break pause menus that assumed Escape only toggled pause.
- FontSize::Rem defaults and font source generics change UI scale — check HUD on a fresh save, not only the title screen.
- Weak ordering in some built-in schedules can reorder systems that accidentally depended on stronger ordering — if a hitch appears only after 0.20, compare schedule graphs before blaming wgpu.
These are why Break 2 and Break 5 sit in the spine even when Solari gets the HN screenshots.
Plugin lag decision tree
Critical plugin has 0.20 release?
yes → pin it on the lab branch
no → maintainer ETA < 2 weeks?
yes → stay on 0.19 main; keep lab branch green for the rest
no → can you vendor/fork for one sprint?
yes → name an owner + delete-by date
no → do not bump; document the blocker
Write the decision in the PR description so future-you does not “just try 0.20 again” without context.
Monday schedule (lab day)
| Block | Outcome |
|---|---|
| 0:00–0:20 | Read news + skim migration TOC |
| 0:20–0:40 | Branch + version bump |
| 0:40–1:40 | Breaks 1–2 compile green |
| 1:40–2:40 | Break 3 shaders/sprites |
| 2:40–3:20 | Break 5 UI/Ready (and 4 if Solari) |
| 3:20–3:40 | Smoke checklist + notes for plugin gaps |
Failure modes
| Failure | Symptom | Fix |
|---|---|---|
| Highlight-driven bump | Solari first, BSN last | Reorder to five-break table |
| Editor fiction | Partner deck says “Bevy Editor” | Correct to Feathers / no official editor |
| Plugin lag | Half the crates on 0.19 | Stay on 0.19 or fork consciously |
| Silent look-break | Compiles, wrong sprites | Sprite/material smoke |
| Mainline mid-fail | Players on broken build | Branch protocol |
| Guide skip | Discord API memories | Open migration guide |
Opinion spine (quotable)
Stop upgrading a live 0.19 Bevy game to 0.20 without the migration guide open.
Stop treating Feathers widgets as the official Bevy Editor.
Stop blocking the bump on Solari screenshots if you never shipped path tracing.
Do fix BSN and observers before chasing WESL vanity refactors.
Relationship to other Bevy posts
| Need | URL |
|---|---|
First 0.19 bsn! evening |
BSN tutorial |
| Soft contact shadows | Contact shadows spike |
| 0.17 schedule hitch | Schedule debug |
| 0.20 upgrade order | This URL |
Migration guide clusters worth bookmarking
Besides the five-break spine, expect to touch (names as listed on the guide TOC — verify live):
- Opt-in screen-space transmission / tonemapping & DebandDither moved to
bevy_render::view bevy_shape/bevy_curvesplit outs frombevy_math- Pointer events / font source generics
- Order-independent transparency / premultiplied alpha notes
- Text input focus / Escape behavior changes
- Schedule system-set ordering tweaks
- Reflect / pointer / Name lifetime tightening
Treat each as a checklist row if your game uses that subsystem. Do not memorize from this article — click through.
Rollback criteria (write before you bump)
Abort the mainline merge if any are true after lab:
- Critical plugin has no 0.20 and no temporary fork owner.
- Custom shader path cannot match 0.19 look within one lab day and shipping depends on it.
- CI matrix cannot add a 0.20 job this sprint.
- Someone needs “editor” language for a partner demo next week and refuses the Feathers correction.
Aborting is professional. Shipping a half-migrated main is not.
After merge — first week watch
Once main is on 0.20:
| Watch | Owner | Action if red |
|---|---|---|
| Player reports of UI focus / Escape | Support → eng | Diff text input migration notes |
| New wgpu validation errors on one OS | Platform | Bisect; check window focus / activation notes on macOS |
| “HUD too small/large” | UI | FontSize Rem defaults |
| Path-trace demos only | Graphics | Solari matrix — do not block non-Solari players |
Keep the 0.19 tag around for at least one patch cycle. Hotfix culture dies when the previous pin is unrecoverable.
Pairing newcomers
If a hire or jam teammate has never used BSN, send them through the 0.19 BSN evening on a 0.19 tag, then cherry their learning onto the 0.20 branch. Teaching BSN and migrating BSN syntax in the same afternoon produces false “Bevy is impossible” conclusions.
Smoke scene checklist (print beside the monitor)
- [ ] Title / main menu renders
- [ ] One gameplay level loads from your normal save path
- [ ] Audio bus not silent (quick play)
- [ ] One
bsn!or scene spawn path still constructs - [ ] One custom material/sprite path (if you have any)
- [ ] Text input + Escape behavior on pause/settings
- [ ] Window focus on macOS/Windows smoke machine you ship to
Checkboxes beat “it felt fine.” Attach the filled list to the merge PR so reviewers can see what you actually booted, not only what compiled. If a box stays unchecked, say why in the PR body before anyone merges. No silent skips.
Key takeaways
- Bevy 0.20 shipped October 8, 2026.
- Use the official 0.19→0.20 migration guide.
- Upgrade on a branch with a plugin audit.
- Hit BSN → observers → shaders/WESL → Solari-if-needed → UI/Ready first.
- Solari is optional path-tracing work — not every project’s blocker.
- WESL and material/sprite changes cause silent look-breaks.
- Feathers ≠ official editor.
- The 0.19 BSN evening still on-ramps newcomers — then migrate.
- Keep CI green on 0.19 main until 0.20 lab passes.
- Tag a rollback point before the bump.
- Re-read live docs when this summary and the guide disagree — guide wins.
- This URL is an upgrade order, not a feature tour.
FAQ
What is new in Bevy 0.20?
Highlights include Solari/DLSS-related work, BSN syntax improvements, Ready event, more Feathers widgets, WESL shaders, and many migration items. See bevy.org/news/bevy-0-20.
How do I migrate from 0.19?
Follow 0.19 to 0.20 Migration Guide in the five-break order above on a branch.
Did Bevy ship an official editor in 0.20?
No. Feathers adds editor-centric widgets; that is not a full official editor product.
Do I need Solari to upgrade?
No. Upgrade the engine; enable Solari only if you use that renderer path.
Will my 0.19 bsn! scenes just work?
Maybe not — 0.20 includes BSN syntax improvements. Fix BSN first.
Should I upgrade during a game jam?
Prefer not. Lab after the jam or keep the jam pin on 0.19.
Where is the GitHub release?
Is this the same as the BSN one-evening tutorial?
No. That tutorial teaches first BSN on 0.19. This page orders the 0.20 upgrade.
What about plugins still on 0.19?
Block the mainline bump until each critical plugin has a 0.20 path or an owned fork.
Is this legal advice?
No — engineering upgrade guidance. Always defer to live Bevy docs.
Sources
- Bevy 0.20 news (Oct 8, 2026)
- Bevy 0.19 to 0.20 Migration Guide
- GitHub — bevy v0.20.0
- Hacker News — Bevy 0.20 (demand signal)