Crate bevy::app

Expand description

This crate is about everything concerning the highest-level, application layer of a Bevy app.



  • App is the primary API for writing user applications. It automates the setup of a standard lifecycle and provides interface glue for plugins.
  • Runs first in the schedule.
  • Runs first in the FixedMain schedule.
  • The schedule that runs last in FixedMain
  • The schedule that contains systems which only run after a fixed period of time has elapsed.
  • Defines the schedules to be run for the FixedMain schedule, including their order.
  • The schedule that runs after the FixedUpdate schedule, for reacting to changes made in the main update logic.
  • The schedule that contains logic that must run before FixedUpdate.
  • The schedule that contains most gameplay logic.
  • Runs last in the schedule.
  • The schedule that contains the app logic that is evaluated each tick of App::update().
  • Defines the schedules to be run for the Main schedule, including their order.
  • Initializes the Main schedule, sub schedules, and resources for a given App.
  • Adds sensible panic handlers to Apps. This plugin is part of the DefaultPlugins. Adding this plugin will setup a panic hook appropriate to your target platform:
  • Facilitates the creation and configuration of a PluginGroup. Provides a build ordering to ensure that Plugins which produce/require a Resource are built before/after dependent/depending Plugins. Plugins inside the group can be disabled, enabled or reordered.
  • The schedule that runs once after Startup.
  • The schedule that contains logic that must run after Update. For example, synchronizing “local transforms” in a hierarchy to “global” absolute transforms. This enables the PostUpdate transform-sync system to react to “local transform” changes in Update without the Update systems needing to know about (or add scheduler dependencies for) the “global transform sync system”.
  • The schedule that runs before Startup.
  • The schedule that contains logic that must run before Update. For example, a system that reads raw keyboard input OS events into an Events resource. This enables systems in Update to consume the events from the Events resource without actually knowing about (or taking a direct scheduler dependency on) the “os-level keyboard event system”.
  • Runs the FixedMain schedule in a loop according until all relevant elapsed time has been “consumed”.
  • Configures an App to run its Schedule according to a given RunMode.
  • The schedule that contains scene spawning.
  • The schedule that runs once when the app starts.
  • A secondary application with its own World. These can run independently of each other.
  • The collection of sub-apps that belong to an App.
  • The schedule that contains app logic. Ideally containing anything that must run once per render frame, such as UI.


  • An event that indicates the App should exit. If one or more of these are present at the end of an update, the runner will end and (maybe) return control to the caller.
  • Plugins state in the application
  • Determines the method used to run an App’s Schedule.


  • A strongly-typed class of labels used to identify an App.
  • An object safe version of Eq. This trait is automatically implemented for any 'static type that implements Eq.
  • A collection of Bevy app logic and configuration.
  • Combines multiple Plugins into a single unit.
  • Types that represent a set of Plugins.

Type Aliases§

  • CreatePluginDeprecated
    A type representing an unsafe function that returns a mutable pointer to a Plugin. It is used for dynamically loading plugins.
  • A shorthand for Interned<dyn AppLabel>.

Derive Macros§

  • Generates an impl of the AppLabel trait.
  • Generates a dynamic plugin entry point function for the given Plugin type.