bevyengine/bevy
bevy_feathers
Bevy's built-in widget set and theme. Provides editor-quality widgets — buttons, sliders, text inputs, scroll views, panels, color pickers, accordions — styled by a shared theme. Designed to power the upcoming Bevy editor and to give game UIs a usable starting point.
Purpose
bevy_feathers builds on the lower-level bevy_ui_widgets primitives and adds:
- A consistent theme (colors, fonts, spacing).
- A library of pre-styled widgets with sensible defaults.
- A modular layout system for panels, splitters, and containers.
- Reflection-aware widgets for inspecting data (used by the editor and inspector tooling).
The crate is opt-in. Users who don't want feathers can use bevy_ui_widgets directly or roll their own UI.
Directory layout
crates/bevy_feathers/src/
├── lib.rs # FeathersPlugin, FeathersPlugins
├── theme.rs # ThemeBackgroundColor, ThemeFontColor, ThemeBorderColor
├── tokens.rs # Design tokens (color/space/size constants)
├── controls/ # Per-widget modules (button, slider, input, …)
├── layouts/ # Layout containers
├── widgets/ # Composed widgets
├── icons/ # Icon set
├── font_styles.rs
├── handle_or_path.rs # Asset handle / path adapter
└── …Key abstractions
| Type | File | Description |
|---|---|---|
FeathersPlugin |
crates/bevy_feathers/src/lib.rs |
Adds the theme, fonts, and widget systems. |
| Theme tokens | crates/bevy_feathers/src/tokens.rs |
surface, accent, text_primary, etc — color constants. |
| Per-widget modules | crates/bevy_feathers/src/controls/ |
One module per widget: button, slider, checkbox, text input. |
How it works
Each widget is an entity hierarchy with the necessary Node, Text, Image, and behavior components. Feathers exposes spawn helpers that build these hierarchies and apply theme tokens. The theme is a resource; changing tokens at runtime swaps the colors across all visible widgets via change detection.
The crate is recent (added in 0.17, Sep 2025) and evolves quickly. It is one of the highest-churn crates in the workspace.
Integration points
- Depends on:
bevy_app,bevy_ecs,bevy_ui,bevy_ui_widgets,bevy_text,bevy_color,bevy_input,bevy_input_focus,bevy_picking. - Depended on by: Bevy editor prototypes and games that opt in.
Entry points for modification
- Add a widget: new module under
controls/orwidgets/. Use the existing button/slider as templates. - Change theme defaults:
tokens.rs. - Layout primitives:
layouts/. - The crate is moving fast — check open PRs before starting big refactors.
See also
bevy_uifor the underlying layout system.bevy_ui_widgetsfor the lower-level widget primitives.- UI feature page.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.