From 68d27163a448afdfe0df0e783744c30a9a54459a Mon Sep 17 00:00:00 2001 From: James-Jager Date: Mon, 10 Nov 2025 14:57:59 -0500 Subject: [PATCH 1/2] Update Portal.tsx Fix for the following error: error-boundary-callbacks.ts:80 Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops. at getRootForUpdatedFiber (react-dom-client.development.js:3860:11) at enqueueConcurrentHookUpdate (react-dom-client.development.js:3820:14) at dispatchSetStateInternal (react-dom-client.development.js:8121:18) at dispatchSetState (react-dom-client.development.js:8081:7) at Portal.useEffect (Portal.js:63:5) --- src/Portal.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Portal.tsx b/src/Portal.tsx index 3678b74..dd87a15 100644 --- a/src/Portal.tsx +++ b/src/Portal.tsx @@ -91,7 +91,16 @@ const Portal = React.forwardRef((props, ref) => { const customizeContainer = getPortalContainer(getContainer); // Tell component that we check this in effect which is safe to be `null` - setInnerContainer(customizeContainer ?? null); + setInnerContainer((prev) => { + const nextContainer = customizeContainer ?? null; + + // Avoid cascading updates when the target container is unchanged + if (prev === nextContainer) { + return prev; + } + + return nextContainer; + }); }); const [defaultContainer, queueCreate] = useDom( From 49bbf2521cec35c98843648f3223c2b3cd6ad8d4 Mon Sep 17 00:00:00 2001 From: James-Jager Date: Mon, 10 Nov 2025 15:05:06 -0500 Subject: [PATCH 2/2] Update Portal.tsx Missed dependency --- src/Portal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Portal.tsx b/src/Portal.tsx index dd87a15..2a2a9ec 100644 --- a/src/Portal.tsx +++ b/src/Portal.tsx @@ -101,7 +101,7 @@ const Portal = React.forwardRef((props, ref) => { return nextContainer; }); - }); + }, [getContainer]); const [defaultContainer, queueCreate] = useDom( mergedRender && !innerContainer,