diff --git a/apps/x/apps/renderer/src/components/persistent-viewer-cache.tsx b/apps/x/apps/renderer/src/components/persistent-viewer-cache.tsx index a8dfbbc5..c0f265fe 100644 --- a/apps/x/apps/renderer/src/components/persistent-viewer-cache.tsx +++ b/apps/x/apps/renderer/src/components/persistent-viewer-cache.tsx @@ -37,10 +37,9 @@ export function PersistentViewerCache({ activePath }: PersistentViewerCacheProps useEffect(() => { if (!isCacheable(activePath)) return setMountedPaths((prev) => { - if (prev.includes(activePath)) { - // Move to most-recent position - return [...prev.filter((p) => p !== activePath), activePath] - } + // Never reorder existing entries — moving a keyed iframe in the DOM + // detaches it, which causes the browser to re-navigate (state lost). + if (prev.includes(activePath)) return prev const next = [...prev, activePath] return next.length > CACHE_LIMIT ? next.slice(-CACHE_LIMIT) : next })