From bd59c7244ec33da5a97f60e84aada51f1b0e9318 Mon Sep 17 00:00:00 2001 From: Shaun Andrews Date: Tue, 16 Jun 2026 13:04:35 -0400 Subject: [PATCH] Keep the site preview webview warm with a contained surface Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/ui/src/components/site-preview/index.tsx | 84 +++++++++++-------- .../components/site-preview/style.module.css | 25 +++++- 2 files changed, 71 insertions(+), 38 deletions(-) diff --git a/apps/ui/src/components/site-preview/index.tsx b/apps/ui/src/components/site-preview/index.tsx index 2452025214..17096f38f3 100644 --- a/apps/ui/src/components/site-preview/index.tsx +++ b/apps/ui/src/components/site-preview/index.tsx @@ -2,6 +2,7 @@ import { __ } from '@wordpress/i18n'; import { chevronLeft, chevronRight, external, pencil } from '@wordpress/icons'; import { ariaKeyShortcut, displayShortcut, isKeyboardEvent } from '@wordpress/keycodes'; import { Button, IconButton, Tooltip } from '@wordpress/ui'; +import { clsx } from 'clsx'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useConnector } from '@/data/core'; import { useIsSiteStarting, useStartSite } from '@/data/queries/use-sites'; @@ -297,6 +298,10 @@ export function SitePreview( { return () => document.removeEventListener( 'keydown', handleKeyDown, { capture: true } ); }, [ canPreview, collapsed, sendBrowserCommand ] ); + // Kept mounted while collapsed so the webview stays warm; `active` gates the + // surface's visibility and interactivity. + const active = ! collapsed; + return (