Symptom: driving a real app through an agent-managed relay browser tab, bits-ui/Svelte dialogs mounted with data-state="open" but stayed at computed opacity 0 forever; puppeteer clicks failed with 'element may be hidden or covered', and state looked wedged (two dialogs 'open' at once). Easy to misread as an app bug in your modal wiring.
Root cause: the relay-managed tab reports document.visibilityState === 'hidden' and requestAnimationFrame NEVER fires (0 ticks/sec). Svelte transitions (fade etc.) advance on rAF, so every intro transition freezes at t=0 (inline opacity: 0 persists) and outro transitions never complete, leaving 'closed' dialogs mounted. Page.bringToFront() and Page.setWebLifecycleState('active') do NOT help when the hosting window is windowless/occluded.
Diagnosis probe (decisive, 5 lines): let t=0; requestAnimationFrame(()=>t++); await new Promise(r=>setTimeout(r,300)); ({raf:t, vis:document.visibilityState}) raf 0 + vis 'hidden' = environment artifact, not your code.
Fix for verification: launch your own headless Chromium (e.g. Playwright's 'Google Chrome for Testing' binary via puppeteer-core, headless:'new'). Headless mode runs rAF and reports visibilityState 'visible', so transitions complete and dialog open/close flows behave exactly as in production. Verify there; treat the relay tab as DOM-state-only (text/attribute assertions), never for anything transition- or visibility-dependent.