diff --git a/packages/react/src/navigation-menu/trigger/NavigationMenuTrigger.tsx b/packages/react/src/navigation-menu/trigger/NavigationMenuTrigger.tsx index a4c7323fb09..74c37c9de6e 100644 --- a/packages/react/src/navigation-menu/trigger/NavigationMenuTrigger.tsx +++ b/packages/react/src/navigation-menu/trigger/NavigationMenuTrigger.tsx @@ -385,7 +385,7 @@ export const NavigationMenuTrigger = React.forwardRef(function NavigationMenuTri } }, [mounted]); - React.useEffect(() => { + useIsoLayoutEffect(() => { if (!popupElement || typeof ResizeObserver !== 'function') { return undefined; } diff --git a/packages/react/src/scroll-area/viewport/ScrollAreaViewport.tsx b/packages/react/src/scroll-area/viewport/ScrollAreaViewport.tsx index ad85997d7e6..e0bc5cd5b0c 100644 --- a/packages/react/src/scroll-area/viewport/ScrollAreaViewport.tsx +++ b/packages/react/src/scroll-area/viewport/ScrollAreaViewport.tsx @@ -307,7 +307,7 @@ export const ScrollAreaViewport = React.forwardRef(function ScrollAreaViewport( } }, [viewportRef, setHovering]); - React.useEffect(() => { + useIsoLayoutEffect(() => { const viewport = viewportRef.current; if (typeof ResizeObserver === 'undefined' || !viewport) { return undefined; diff --git a/packages/react/src/tabs/list/TabsList.tsx b/packages/react/src/tabs/list/TabsList.tsx index de3bdbe269f..a1259a4e761 100644 --- a/packages/react/src/tabs/list/TabsList.tsx +++ b/packages/react/src/tabs/list/TabsList.tsx @@ -1,6 +1,7 @@ 'use client'; import * as React from 'react'; import { useStableCallback } from '@base-ui/utils/useStableCallback'; +import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect'; import { EMPTY_ARRAY } from '@base-ui/utils/empty'; import { BaseUIComponentProps, HTMLProps } from '../../internals/types'; import type { TabsRoot, TabsRootState } from '../root/TabsRoot'; @@ -39,7 +40,7 @@ export const TabsList = React.forwardRef(function TabsList( const tabResizeObserverElementsRef = React.useRef(new Set()); const resizeObserverRef = React.useRef(null); - React.useEffect(() => { + useIsoLayoutEffect(() => { if (typeof ResizeObserver === 'undefined') { return undefined; }