From fc1b1c2d49caadab12e701fe9740f14a66ae318f Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Fri, 2 Oct 2026 18:05:35 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20hide=20tooltips=20unti?= =?UTF-8?q?l=20they=20have=20a=20computed=20placement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A React Aria overlay is rendered at `top: 0; left: 0` until `useOverlayPosition` computes its position, and `data-placement` is only set once that succeeds. When the pointer moves quickly between triggers, a closing tooltip can mount for its exit animation without ever being positioned, React Aria does not retry, so it stays stuck in the top-left corner. Hide tooltips until they have a `data-placement` set, so unpositioned tooltips never flash in the corner. Use `visibility` rather than `display: none`, so the element stays measurable for the positioning pass. --- CHANGELOG.md | 1 + src/frontend/src/styles/index.css | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5205ca71..b3d4dacb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to - 🔒️(frontend) upgrade pcre2 to fix CVE-2026-103111 - 🐛(summary) disable default S3 checksums for GCS-compatible storage - 🔒️(summary) redact meeting content from Sentry events +- 🐛(frontend) hide tooltips until they have a computed placement ## [1.33.0] - 2026-09-30 diff --git a/src/frontend/src/styles/index.css b/src/frontend/src/styles/index.css index 758ed6f3c..f33066611 100644 --- a/src/frontend/src/styles/index.css +++ b/src/frontend/src/styles/index.css @@ -103,3 +103,8 @@ html:has(.lk-video-conference) { opacity: 1; pointer-events: auto; } + +/* Same workaround as above, see adobe/react-spectrum#10680 */ +[role='tooltip'][data-rac]:not([data-placement]) { + visibility: hidden; +}