From 57ae1e2c4c4b30379dd7a98d2e53d205eb1fd03c Mon Sep 17 00:00:00 2001 From: Kenneth Musante Date: Mon, 20 Apr 2026 16:33:59 -0400 Subject: [PATCH 1/2] fix: stabilise MenuPortal updateComputedPosition to prevent infinite re-render loop --- packages/react-select/src/components/Menu.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/react-select/src/components/Menu.tsx b/packages/react-select/src/components/Menu.tsx index 46c310774b..ab8ed13f00 100644 --- a/packages/react-select/src/components/Menu.tsx +++ b/packages/react-select/src/components/Menu.tsx @@ -618,16 +618,20 @@ export const MenuPortal = < const [computedPosition, setComputedPosition] = useState(null); + const computedPositionRef = useRef(computedPosition); + computedPositionRef.current = computedPosition; + const updateComputedPosition = useCallback(() => { if (!controlElement) return; const rect = getBoundingClientObj(controlElement); const scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset; const offset = rect[placement] + scrollDistance; + const current = computedPositionRef.current; if ( - offset !== computedPosition?.offset || - rect.left !== computedPosition?.rect.left || - rect.width !== computedPosition?.rect.width + offset !== current?.offset || + rect.left !== current?.rect.left || + rect.width !== current?.rect.width ) { setComputedPosition({ offset, rect }); } @@ -635,9 +639,6 @@ export const MenuPortal = < controlElement, menuPosition, placement, - computedPosition?.offset, - computedPosition?.rect.left, - computedPosition?.rect.width, ]); useLayoutEffect(() => { From 4033960783d3fd5a219a303dad60cb46fd2cc4b9 Mon Sep 17 00:00:00 2001 From: Kenneth Musante Date: Mon, 20 Apr 2026 16:40:21 -0400 Subject: [PATCH 2/2] Ran Prettier --- packages/react-select/src/components/Menu.tsx | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/packages/react-select/src/components/Menu.tsx b/packages/react-select/src/components/Menu.tsx index ab8ed13f00..077f53c87c 100644 --- a/packages/react-select/src/components/Menu.tsx +++ b/packages/react-select/src/components/Menu.tsx @@ -237,9 +237,9 @@ export interface MenuPlacementProps { export interface MenuProps< Option = unknown, IsMulti extends boolean = boolean, - Group extends GroupBase