diff --git a/src/utils/useIsomorphicLayoutEffect.native.ts b/src/utils/useIsomorphicLayoutEffect.native.ts deleted file mode 100644 index c3b22c296..000000000 --- a/src/utils/useIsomorphicLayoutEffect.native.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { React } from '../utils/react' - -// Under React Native, we know that we always want to use useLayoutEffect - -export const useIsomorphicLayoutEffect = React.useLayoutEffect diff --git a/src/utils/useIsomorphicLayoutEffect.ts b/src/utils/useIsomorphicLayoutEffect.ts index 329c00e10..7a57bd6fb 100644 --- a/src/utils/useIsomorphicLayoutEffect.ts +++ b/src/utils/useIsomorphicLayoutEffect.ts @@ -16,6 +16,15 @@ export const canUseDOM = !!( typeof window.document.createElement !== 'undefined' ) -export const useIsomorphicLayoutEffect = canUseDOM - ? React.useLayoutEffect - : React.useEffect +// Under React Native, we know that we always want to use useLayoutEffect + +/** + * Checks if the code is running in a React Native environment. + * + * @see {@link https://github.com/facebook/react-native/issues/1331 Reference} + */ +export const isReactNative = + typeof navigator !== 'undefined' && navigator.product === 'ReactNative' + +export const useIsomorphicLayoutEffect = + canUseDOM || isReactNative ? React.useLayoutEffect : React.useEffect