bevyengine/bevy
How to contribute
Bevy is community-driven. Contributions land via GitHub pull requests reviewed by the Bevy maintainer team. This section is the code-level companion to the official contributor's guide; read that first for the social and process side, then come here for the day-to-day mechanics.
At a glance
- Branch off
main, push to a fork, open a PR. - CI must be green:
cargo run -p ci -- checkreproduces it locally. - Use migration-guide-friendly commit messages — the changelog is generated from PR titles and labels.
- Anything user-facing requires docs and (where it makes sense) an example.
Pages in this section
| Page | What's covered |
|---|---|
| Development workflow | Branching, PRs, draft → ready, what reviewers look at. |
| Testing | Unit tests, doctests, examples-as-smoke-tests, the trybuild compile-fail harness. |
| Debugging | Logs, RUST_LOG, tracing, profilers, GPU debuggers, the BRP. |
| Patterns and conventions | Coding style, idiomatic ECS, error handling, lints. |
| Tooling | tools/ci, tools/build-templated-pages, tools/build-wasm-example, the clippy.toml and rustfmt.toml settings. |
Definition of done
For a typical PR:
- All
cargo run -p ci -- checkjobs pass on Linux/macOS/Windows. - Public APIs have rustdoc — the workspace lints (
missing_docs = "warn") will tell you if you forgot. - Breaking changes carry a migration-guide entry under
_release-content/. - New cargo features are added to
Cargo.tomland described indocs/cargo_features.md(auto-generated bytools/build-templated-pages). - Where applicable, an example exists or has been updated.
Where to look first when changing X
| You want to change... | Start in... |
|---|---|
| The plugin system, schedules, the App lifecycle | bevy_app |
| Anything ECS — entities, queries, systems, observers | bevy_ecs |
| Reflection, scene serialization, type registry | bevy_reflect, bevy_scene |
| Asset loading, hot reload, the asset processor | bevy_asset |
| Rendering core (extract/prepare/queue, render graph) | bevy_render, bevy_core_pipeline |
| PBR materials, lighting, shadows | bevy_pbr, bevy_light |
| 2D / sprites | bevy_sprite, bevy_sprite_render |
| UI nodes, layout, widgets | bevy_ui, bevy_ui_widgets, bevy_feathers |
| Input, gamepads, focus | bevy_input, bevy_gilrs, bevy_input_focus |
| Windowing, platform integration | bevy_window, bevy_winit |
| Animation | bevy_animation |
| Audio | bevy_audio |
| The remote inspector / BRP | bevy_remote, API |
| State machines (Menu / Game / Paused) | bevy_state |
Communication
- Discord —
#contributors-generaland#dev-helpare the most active channels. - GitHub Issues — for bugs and concrete feature work.
- GitHub Discussions — for open-ended questions.
- RFCs repo (
bevyengine/rfcs) — for cross-cutting design proposals.
License contributions
By submitting a PR you agree that your contribution is dual-licensed under MIT/Apache-2.0, matching the rest of the project. There is no CLA.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.