diff --git a/packages/react-native-renderer/src/ReactFiberConfigFabric.js b/packages/react-native-renderer/src/ReactFiberConfigFabric.js index d08f94d148d87..2aac7caeda335 100644 --- a/packages/react-native-renderer/src/ReactFiberConfigFabric.js +++ b/packages/react-native-renderer/src/ReactFiberConfigFabric.js @@ -47,6 +47,8 @@ const { unstable_getCurrentEventPriority: fabricGetCurrentEventPriority, } = nativeFabricUIManager; +import {useMicrotasksForSchedulingInFabric} from 'shared/ReactFeatureFlags'; + const {get: getViewConfigForType} = ReactNativeViewConfigRegistry; // Counter for uniquely identifying views. @@ -119,7 +121,6 @@ export * from 'react-reconciler/src/ReactFiberConfigWithNoMutation'; export * from 'react-reconciler/src/ReactFiberConfigWithNoHydration'; export * from 'react-reconciler/src/ReactFiberConfigWithNoScopes'; export * from 'react-reconciler/src/ReactFiberConfigWithNoTestSelectors'; -export * from 'react-reconciler/src/ReactFiberConfigWithNoMicrotasks'; export * from 'react-reconciler/src/ReactFiberConfigWithNoResources'; export * from 'react-reconciler/src/ReactFiberConfigWithNoSingletons'; @@ -470,3 +471,10 @@ export function waitForCommitToBeReady(): null { } export const NotPendingTransition: TransitionStatus = null; + +// ------------------- +// Microtasks +// ------------------- +export const supportsMicrotasks = useMicrotasksForSchedulingInFabric; +export const scheduleMicrotask: any = + typeof queueMicrotask === 'function' ? queueMicrotask : scheduleTimeout; diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index 0a70b8cbe3818..61a784c156ebf 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -122,6 +122,8 @@ export const enableAsyncActions = __EXPERIMENTAL__; export const alwaysThrottleRetries = true; +export const useMicrotasksForSchedulingInFabric = false; + // ----------------------------------------------------------------------------- // Chopping Block // diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js b/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js index 92449bcd6a8ca..7ef1ef3013f17 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js @@ -23,6 +23,7 @@ import typeof * as DynamicFlagsType from 'ReactNativeInternalFeatureFlags'; export const enableUseRefAccessWarning = __VARIANT__; export const enableDeferRootSchedulingToMicrotask = __VARIANT__; export const alwaysThrottleRetries = __VARIANT__; +export const useMicrotasksForSchedulingInFabric = __VARIANT__; // Flow magic to verify the exports of this file match the original version. ((((null: any): ExportsType): DynamicFlagsType): ExportsType); diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index 299fd43418410..5c45148b6f8be 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -21,6 +21,7 @@ export const { enableUseRefAccessWarning, enableDeferRootSchedulingToMicrotask, alwaysThrottleRetries, + useMicrotasksForSchedulingInFabric, } = dynamicFlags; // The rest of the flags are static for better dead code elimination. diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index 6eec17ea53046..1df136f96a744 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -77,5 +77,7 @@ export const enableAsyncActions = false; export const alwaysThrottleRetries = true; +export const useMicrotasksForSchedulingInFabric = false; + // Flow magic to verify the exports of this file match the original version. ((((null: any): ExportsType): FeatureFlagsType): ExportsType); diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js index 7bc3b64e0fd69..b022784be6782 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -77,5 +77,7 @@ export const enableAsyncActions = false; export const alwaysThrottleRetries = true; +export const useMicrotasksForSchedulingInFabric = false; + // Flow magic to verify the exports of this file match the original version. ((((null: any): ExportsType): FeatureFlagsType): ExportsType); diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js index e54353abd6f4f..de9c6ded13072 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js @@ -74,5 +74,7 @@ export const enableAsyncActions = false; export const alwaysThrottleRetries = true; +export const useMicrotasksForSchedulingInFabric = false; + // Flow magic to verify the exports of this file match the original version. ((((null: any): ExportsType): FeatureFlagsType): ExportsType); diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index dc90c6f837103..ee8d3abc23739 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -77,5 +77,7 @@ export const enableAsyncActions = false; export const alwaysThrottleRetries = true; +export const useMicrotasksForSchedulingInFabric = false; + // Flow magic to verify the exports of this file match the original version. ((((null: any): ExportsType): FeatureFlagsType): ExportsType); diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index ef2ef9d933690..be69797dd4c1e 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -108,5 +108,7 @@ export const enableFizzExternalRuntime = true; export const forceConcurrentByDefaultForTesting = false; +export const useMicrotasksForSchedulingInFabric = false; + // Flow magic to verify the exports of this file match the original version. ((((null: any): ExportsType): FeatureFlagsType): ExportsType); diff --git a/scripts/flow/xplat.js b/scripts/flow/xplat.js index 37d1deee75275..889d76ea93371 100644 --- a/scripts/flow/xplat.js +++ b/scripts/flow/xplat.js @@ -11,4 +11,5 @@ declare module 'ReactNativeInternalFeatureFlags' { declare export var enableUseRefAccessWarning: boolean; declare export var enableDeferRootSchedulingToMicrotask: boolean; declare export var alwaysThrottleRetries: boolean; + declare export var useMicrotasksForSchedulingInFabric: boolean; }