zed-industries/zed · error
No `body` found on document
Error message
No `body` found on document
What it means
Guard in WebWindow::prepare_canvas: document.body() returned None — the document has no <body> element yet (script ran in <head> before body parsing) or the document type never has a body (e.g. XML documents).
Source
Thrown at crates/gpui_web/src/window.rs:109
}
pub struct WebWindow {
inner: Rc<WebWindowInner>,
display: Rc<dyn PlatformDisplay>,
lifecycle: Rc<Cell<WebWindowLifecycle>>,
active_window: Rc<RefCell<Option<AnyWindowHandle>>>,
_raf_closure: Closure<dyn FnMut()>,
_resize_observer: Option<web_sys::ResizeObserver>,
_resize_observer_closure: Closure<dyn FnMut(js_sys::Array)>,
_safe_area_observer: Option<web_sys::ResizeObserver>,
_safe_area_observer_closure: Closure<dyn FnMut(js_sys::Array)>,
_event_listeners: WebEventListeners,
}
impl WebWindow {
pub(crate) fn prepare_canvas(
browser_window: &web_sys::Window,
) -> anyhow::Result<web_sys::HtmlCanvasElement> {
let document = browser_window
.document()
.ok_or_else(|| anyhow::anyhow!("No `document` found on window"))?;
let canvas: web_sys::HtmlCanvasElement = document
.create_element("canvas")
.map_err(|error| anyhow::anyhow!("Failed to create canvas element: {error:?}"))?
.dyn_into()
.map_err(|error| anyhow::anyhow!("Created element is not a canvas: {error:?}"))?;
canvas.set_tab_index(-1);
let style = canvas.style();
for (property, value) in [
("width", "100%"),
("height", "100%"),
("display", "block"),
("outline", "none"),
("touch-action", "none"),
("-webkit-touch-callout", "none"),View on GitHub (pinned to 9d272b0363)
Solutions
- Run initialization after DOMContentLoaded so document.body exists
- Use document.documentElement as an append target when body is absent
- Defer canvas insertion with a MutationObserver if the host page builds body dynamically
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/gpui_web/src/window.rs:105 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20).
Data as JSON: /api/errors/c1e9698cc4804cc2.
Report an issue: GitHub.