diff --git a/packages/app/src/components/ui/floating-panel-overlap.browser.test.tsx b/packages/app/src/components/ui/floating-panel-overlap.browser.test.tsx
new file mode 100644
index 0000000000..20d6390006
--- /dev/null
+++ b/packages/app/src/components/ui/floating-panel-overlap.browser.test.tsx
@@ -0,0 +1,34 @@
+import React, { act } from "react";
+import { createRoot } from "react-dom/client";
+import { describe, expect, test } from "vitest";
+import { Portal, PortalProvider } from "@gorhom/portal";
+import { FloatingPanelPortalHost, measureFloatingPanelPortalHost } from "./floating-panel-portal";
+
+describe("Floating panel host lifetime", () => {
+ test("removing the newest host preserves the surviving host measurement", async () => {
+ const container = document.createElement("div");
+ container.style.cssText = "position:relative;width:800px;height:600px";
+ document.body.appendChild(container);
+ const root = createRoot(container);
+ function Content({ overlap }: { overlap: boolean }) {
+ return (
+
+
+ {overlap && }
+
+ Commands
+
+
+ );
+ }
+ try {
+ await act(async () => root.render());
+ expect(await measureFloatingPanelPortalHost("workspace")).not.toBeNull();
+ await act(async () => root.render());
+ expect(await measureFloatingPanelPortalHost("workspace")).not.toBeNull();
+ } finally {
+ await act(async () => root.unmount());
+ container.remove();
+ }
+ });
+});