{"record":{"id":"8ab6a5ea89452dab","repo":"zed-industries/zed","slug":"no-browser-graphics-backend-could-be-initialized","errorCode":null,"errorMessage":"No browser graphics backend could be initialized. Tried WebGPU, then WebGL2. WebGPU failure: {webgpu_error:#}. WebGL2 failure: {webgl_error:#}","messagePattern":"No browser graphics backend could be initialized\\. Tried WebGPU, then WebGL2\\. WebGPU failure: (.+?)\\. WebGL2 failure: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/gpui_web/src/platform.rs","lineNumber":233,"sourceCode":"    preference: WebBackendPreference,\n) -> anyhow::Result<(\n    web_sys::HtmlCanvasElement,\n    WgpuContext,\n    wgpu::Surface<'static>,\n)> {\n    match preference {\n        WebBackendPreference::Auto => {\n            let webgpu_canvas = WebWindow::prepare_canvas(browser_window)?;\n            let webgpu_result = if wgpu::util::is_browser_webgpu_supported().await {\n                WgpuContext::new_web(&webgpu_canvas, WebBackendPreference::WebGpu).await\n            } else {\n                Err(anyhow::anyhow!(\n                    \"browser WebGPU probe did not return a usable adapter\"\n                ))\n            };\n            match webgpu_result {\n                Ok(PreparedWebGraphics { context, surface }) => {\n                    return Ok((webgpu_canvas, context, surface));\n                }\n                Err(webgpu_error) => {\n                    let canvas: &web_sys::Element = webgpu_canvas.as_ref();\n                    canvas.remove();\n                    log::warn!(\n                        \"WebGPU initialization failed; falling back to WebGL2: {webgpu_error:#}\"\n                    );\n\n                    let webgl_canvas =\n                        WebWindow::prepare_canvas(browser_window).map_err(|error| {\n                            anyhow::anyhow!(\n                                \"WebGPU initialization failed: {webgpu_error:#}. \\\n                             Failed to prepare a replacement canvas for WebGL2: {error:#}\"\n                            )\n                        })?;\n                    match WgpuContext::new_web(&webgl_canvas, WebBackendPreference::WebGl).await {\n                        Ok(PreparedWebGraphics { context, surface }) => {\n                            Ok((webgl_canvas, context, surface))","sourceCodeStart":215,"sourceCodeEnd":251,"githubUrl":"https://github.com/zed-industries/zed/blob/9d272b036335401f339d024ea94968fd51016c40/crates/gpui_web/src/platform.rs#L215-L251","documentation":"Terminal failure in initialize_graphics (Auto preference): both WebGPU and the WebGL2 fallback failed to initialize, so no rendering backend is available and the web app cannot start. Both underlying errors are included ({webgpu_error}, {webgl_error}).","triggerScenarios":"Thrown at crates/gpui_web/src/platform.rs:233 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Have the user enable hardware acceleration / WebGL in browser settings (chrome://gpu shows status)","Rule out blocked GPU APIs: strict CSP, enterprise policy, or software rendering fallbacks","Render a clear startup error page instead of a blank canvas; include both chained errors"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9d272b036335401f339d024ea94968fd51016c40","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}