{"record":{"id":"eda1c50609c64dcb","repo":"bevyengine/bevy","slug":"requires-frametimediagnosticsplugin","errorCode":null,"errorMessage":"Requires FrameTimeDiagnosticsPlugin","messagePattern":"Requires FrameTimeDiagnosticsPlugin","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_dev_tools/src/frame_time_graph/mod.rs","lineNumber":38,"sourceCode":"\nconst FRAME_TIME_GRAPH_SHADER_HANDLE: Handle<Shader> =\n    uuid_handle!(\"4e38163a-5782-47a5-af52-d9161472ab59\");\n\n/// Plugin that sets up everything to render the frame time graph material\npub struct FrameTimeGraphPlugin;\n\nimpl Plugin for FrameTimeGraphPlugin {\n    fn build(&self, app: &mut bevy_app::App) {\n        load_internal_asset!(\n            app,\n            FRAME_TIME_GRAPH_SHADER_HANDLE,\n            \"frame_time_graph.wesl\",\n            Shader::from_wesl\n        );\n\n        // TODO: Use plugin dependencies, see https://github.com/bevyengine/bevy/issues/69\n        if !app.is_plugin_added::<FrameTimeDiagnosticsPlugin>() {\n            panic!(\"Requires FrameTimeDiagnosticsPlugin\");\n            // app.add_plugins(FrameTimeDiagnosticsPlugin);\n        }\n\n        app.add_plugins(UiMaterialPlugin::<FrametimeGraphMaterial>::default())\n            .add_systems(\n                Update,\n                update_frame_time_values.in_set(FpsOverlaySystems::UpdateText),\n            );\n    }\n}\n\n/// The config values sent to the frame time graph shader\n#[derive(Debug, Clone, Copy, ShaderType)]\npub struct FrameTimeGraphConfigUniform {\n    // minimum expected delta time\n    dt_min: f32,\n    // maximum expected delta time\n    dt_max: f32,","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_dev_tools/src/frame_time_graph/mod.rs#L20-L56","documentation":"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.","triggerScenarios":"Thrown at crates/bevy_dev_tools/src/frame_time_graph/mod.rs:38 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add FrameTimeDiagnosticsPlugin to the app before FrameTimeGraphPlugin","Or rely on DefaultPlugins which includes it"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"396ca727080776bd313bb892423b7d94e03b81b4","analyzedAt":"2026-08-20T16:12:39.808Z","contentChangedAt":"2026-08-20T16:12:39.808Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}