bevyengine/bevy · error

Requires FrameTimeDiagnosticsPlugin

Error message

Requires FrameTimeDiagnosticsPlugin

What it means

Panic in FrameTimeGraphPlugin::build: the FrameTimeDiagnosticsPlugin is not present in the app. The frame time graph reads diagnostics produced by that plugin (frame time, fps), so without it the graph has no data source and the build aborts.

Source

Thrown at crates/bevy_dev_tools/src/frame_time_graph/mod.rs:38

const FRAME_TIME_GRAPH_SHADER_HANDLE: Handle<Shader> =
    uuid_handle!("4e38163a-5782-47a5-af52-d9161472ab59");

/// Plugin that sets up everything to render the frame time graph material
pub struct FrameTimeGraphPlugin;

impl Plugin for FrameTimeGraphPlugin {
    fn build(&self, app: &mut bevy_app::App) {
        load_internal_asset!(
            app,
            FRAME_TIME_GRAPH_SHADER_HANDLE,
            "frame_time_graph.wesl",
            Shader::from_wesl
        );

        // TODO: Use plugin dependencies, see https://github.com/bevyengine/bevy/issues/69
        if !app.is_plugin_added::<FrameTimeDiagnosticsPlugin>() {
            panic!("Requires FrameTimeDiagnosticsPlugin");
            // app.add_plugins(FrameTimeDiagnosticsPlugin);
        }

        app.add_plugins(UiMaterialPlugin::<FrametimeGraphMaterial>::default())
            .add_systems(
                Update,
                update_frame_time_values.in_set(FpsOverlaySystems::UpdateText),
            );
    }
}

/// The config values sent to the frame time graph shader
#[derive(Debug, Clone, Copy, ShaderType)]
pub struct FrameTimeGraphConfigUniform {
    // minimum expected delta time
    dt_min: f32,
    // maximum expected delta time
    dt_max: f32,

View on GitHub (pinned to 396ca72708)

Solutions

  1. Add FrameTimeDiagnosticsPlugin to the app before FrameTimeGraphPlugin
  2. Or rely on DefaultPlugins which includes it
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/bevy_dev_tools/src/frame_time_graph/mod.rs:38 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20). Data as JSON: /api/errors/eda1c50609c64dcb. Report an issue: GitHub.