From 7023f501b644815e29a621875c0379ea757905f6 Mon Sep 17 00:00:00 2001 From: Saransh Jain <144168135+Saransh-Jainbu@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:34:45 +0530 Subject: [PATCH] [DevTools] Don't reconnect proxy port while page is prerendering (#37009) --- .../src/contentScripts/proxy.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-devtools-extensions/src/contentScripts/proxy.js b/packages/react-devtools-extensions/src/contentScripts/proxy.js index f2b02463600..caa4c6d99fe 100644 --- a/packages/react-devtools-extensions/src/contentScripts/proxy.js +++ b/packages/react-devtools-extensions/src/contentScripts/proxy.js @@ -114,7 +114,18 @@ function handleDisconnect() { window.removeEventListener('message', handleMessageFromPage); port = null; - connectPort(); + // Mirrors the guard in handlePageShow(): the background script can evict/ + // replace a tab's proxy port (see registerProxyPort in background/index.js), + // which disconnects us while still prerendering. Reconnecting immediately + // in that case causes an unbounded connect/disconnect cycle for as long as + // the document stays in the prerendering state (https://crbug.com/478909972). + if (document.prerendering) { + document.addEventListener('prerenderingchange', connectPort, { + once: true, + }); + } else { + connectPort(); + } } // Creates port from application page to the React DevTools' service worker