diff --git a/frontend/packages/swarm-ui/src/ui/table/Table.tsx b/frontend/packages/swarm-ui/src/ui/table/Table.tsx
index 0b2d797b..f4a54f45 100644
--- a/frontend/packages/swarm-ui/src/ui/table/Table.tsx
+++ b/frontend/packages/swarm-ui/src/ui/table/Table.tsx
@@ -9,12 +9,19 @@
// a `
` doesn't shrink below its content's natural width on its
// own, so without this the page itself would break, not just look
// cramped.
-import { useEffect, useMemo, useRef, useState } from "preact/hooks";
+import {
+ useEffect,
+ useLayoutEffect,
+ useMemo,
+ useRef,
+ useState,
+} from "preact/hooks";
import { createPortal } from "preact/compat";
import type { ComponentChildren } from "preact";
import { FilterIcon } from "@hive/shared/icons.js";
import { useLocalSetting } from "@hive/shared/settings-storage.js";
import { MultiselectFilterOptions } from "../multiselect-filter/MultiselectFilter.js";
+import { clampLeft } from "./popover-position.js";
import "./Table.css";
export interface TableColumn {
@@ -299,6 +306,13 @@ export function Table({
// effect below can recompute the *currently open* column's position
// without needing the click that opened it to have happened again.
const thRefs = useRef