zed-industries/zed · error

Invalid safe-area probe element: {error:?}

Error message

Invalid safe-area probe element: {error:?}

What it means

Fires in safe_area_probe after document.create_element("div") succeeds but the returned Element fails dyn_into::<HtmlElement>. In wasm-bindgen this means the returned JS object was not an HTMLElement instance (or a JS exception occurred during the cast), so the fixed-position inset probe used to read env(safe-area-inset-<edge>) cannot be built or styled as an HTML element.

Source

Thrown at crates/gpui_web/src/viewport.rs:115

}

impl Drop for WebViewport {
    fn drop(&mut self) {
        for probe in &self.safe_area_probes {
            probe.remove();
        }
    }
}

fn safe_area_probe(
    document: &web_sys::Document,
    edge: &str,
) -> anyhow::Result<web_sys::HtmlElement> {
    let probe = document
        .create_element("div")
        .map_err(|error| anyhow::anyhow!("Failed to create safe-area probe: {error:?}"))?
        .dyn_into::<web_sys::HtmlElement>()
        .map_err(|error| anyhow::anyhow!("Invalid safe-area probe element: {error:?}"))?;
    probe
        .set_attribute(
            "style",
            &format!(
                "position:fixed;left:0;top:0;width:0;padding:0;border:0;visibility:hidden;\
                 pointer-events:none;height:env(safe-area-inset-{edge},0px)"
            ),
        )
        .map_err(|error| anyhow::anyhow!("Failed to style safe-area probe: {error:?}"))?;
    Ok(probe)
}

View on GitHub (pinned to 9d272b0363)

Solutions

  1. Retry the probe creation; a transient DOM/JSError during cast is unlikely but a retry costs nothing since probes are recreated per edge
  2. Log the JsValue error and fall back to a zero default safe-area inset so viewport layout proceeds without probe measurements
  3. Verify the wasm-bindgen/web-sys versions are compatible; a mismatched Element type mapping is the usual root cause
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/gpui_web/src/viewport.rs:115 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-09-12). Data as JSON: /api/errors/4c272a3707f7e041. Report an issue: GitHub.