From 6448d6363db0dadd134c48b020d569b50fdcada7 Mon Sep 17 00:00:00 2001 From: Sujith S Date: Wed, 2 Sep 2026 14:31:04 +0530 Subject: [PATCH 1/2] fix(react-stately): enable useControlledState early effect in React Native --- packages/react-stately/src/utils/useControlledState.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-stately/src/utils/useControlledState.ts b/packages/react-stately/src/utils/useControlledState.ts index a5846879cab..46d040061df 100644 --- a/packages/react-stately/src/utils/useControlledState.ts +++ b/packages/react-stately/src/utils/useControlledState.ts @@ -13,8 +13,9 @@ import React, {SetStateAction, useCallback, useEffect, useReducer, useRef, useState} from 'react'; // Use the earliest effect possible to reset the ref below. +const isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative'; const useEarlyEffect: typeof React.useLayoutEffect = - typeof document !== 'undefined' + typeof document !== 'undefined' || isReactNative ? (React['useInsertionEffect'] ?? React.useLayoutEffect) : () => {}; From 97ea7a6685cb40090db1bfa8b20404740fed8ed6 Mon Sep 17 00:00:00 2001 From: Sujith S Date: Thu, 3 Sep 2026 07:44:48 +0530 Subject: [PATCH 2/2] fix(react-stately): use React 19 check instead of React Native for early effect --- packages/react-stately/src/utils/useControlledState.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-stately/src/utils/useControlledState.ts b/packages/react-stately/src/utils/useControlledState.ts index 46d040061df..349d6af2f2c 100644 --- a/packages/react-stately/src/utils/useControlledState.ts +++ b/packages/react-stately/src/utils/useControlledState.ts @@ -13,9 +13,8 @@ import React, {SetStateAction, useCallback, useEffect, useReducer, useRef, useState} from 'react'; // Use the earliest effect possible to reset the ref below. -const isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative'; const useEarlyEffect: typeof React.useLayoutEffect = - typeof document !== 'undefined' || isReactNative + typeof document !== 'undefined' || parseInt(React.version, 10) >= 19 ? (React['useInsertionEffect'] ?? React.useLayoutEffect) : () => {};