Skip to content

Commit 4d758fc

Browse files
committed
Land enableDiscreteEventMicroTasks
1 parent a3f30fe commit 4d758fc

16 files changed

+21
-102
lines changed

packages/react-dom/src/__tests__/ReactDOMNativeEventHeuristic-test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ describe('ReactDOMNativeEventHeuristic-test', () => {
4343
}
4444

4545
// @gate experimental
46-
// @gate enableDiscreteEventMicroTasks && enableNativeEventPriorityInference
46+
// @gate enableNativeEventPriorityInference
4747
it('ignores discrete events on a pending removed element', async () => {
4848
const disableButtonRef = React.createRef();
4949
const submitButtonRef = React.createRef();
@@ -95,7 +95,7 @@ describe('ReactDOMNativeEventHeuristic-test', () => {
9595
});
9696

9797
// @gate experimental
98-
// @gate enableDiscreteEventMicroTasks && enableNativeEventPriorityInference
98+
// @gate enableNativeEventPriorityInference
9999
it('ignores discrete events on a pending removed event listener', async () => {
100100
const disableButtonRef = React.createRef();
101101
const submitButtonRef = React.createRef();
@@ -165,7 +165,7 @@ describe('ReactDOMNativeEventHeuristic-test', () => {
165165
});
166166

167167
// @gate experimental
168-
// @gate enableDiscreteEventMicroTasks && enableNativeEventPriorityInference
168+
// @gate enableNativeEventPriorityInference
169169
it('uses the newest discrete events on a pending changed event listener', async () => {
170170
const enableButtonRef = React.createRef();
171171
const submitButtonRef = React.createRef();
@@ -229,7 +229,7 @@ describe('ReactDOMNativeEventHeuristic-test', () => {
229229
});
230230

231231
// @gate experimental
232-
// @gate enableDiscreteEventMicroTasks && enableNativeEventPriorityInference
232+
// @gate enableNativeEventPriorityInference
233233
it('mouse over should be user-blocking but not discrete', async () => {
234234
const root = ReactDOM.unstable_createRoot(container);
235235

@@ -260,7 +260,7 @@ describe('ReactDOMNativeEventHeuristic-test', () => {
260260
});
261261

262262
// @gate experimental
263-
// @gate enableDiscreteEventMicroTasks && enableNativeEventPriorityInference
263+
// @gate enableNativeEventPriorityInference
264264
it('mouse enter should be user-blocking but not discrete', async () => {
265265
const root = ReactDOM.unstable_createRoot(container);
266266

packages/react-dom/src/client/ReactDOMHostConfig.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ import {
6767
enableCreateEventHandleAPI,
6868
enableScopeAPI,
6969
enableNewReconciler,
70-
enableDiscreteEventMicroTasks,
7170
} from 'shared/ReactFeatureFlags';
7271
import {HostComponent, HostText} from 'react-reconciler/src/ReactWorkTags';
7372
import {listenToAllSupportedEvents} from '../events/DOMPluginEventSystem';
@@ -404,7 +403,7 @@ export const noTimeout = -1;
404403
// -------------------
405404
// Microtasks
406405
// -------------------
407-
export const supportsMicrotasks = enableDiscreteEventMicroTasks;
406+
export const supportsMicrotasks = true;
408407
export const scheduleMicrotask: any =
409408
typeof queueMicrotask === 'function'
410409
? queueMicrotask

packages/react-dom/src/events/plugins/__tests__/ChangeEventPlugin-test.js

+4-11
Original file line numberDiff line numberDiff line change
@@ -728,17 +728,10 @@ describe('ChangeEventPlugin', () => {
728728
expect(Scheduler).toHaveYielded([]);
729729
expect(input.value).toBe('initial');
730730

731-
// Flush callbacks.
732-
// Now the click update has flushed.
733-
if (gate(flags => flags.enableDiscreteEventMicroTasks)) {
734-
// Flush microtask queue.
735-
await null;
736-
expect(Scheduler).toHaveYielded(['render: ']);
737-
expect(input.value).toBe('');
738-
} else {
739-
expect(Scheduler).toFlushAndYield(['render: ']);
740-
expect(input.value).toBe('');
741-
}
731+
// Flush microtask queue.
732+
await null;
733+
expect(Scheduler).toHaveYielded(['render: ']);
734+
expect(input.value).toBe('');
742735
});
743736

744737
// @gate experimental

packages/react-dom/src/events/plugins/__tests__/SimpleEventPlugin-test.js

+9-18
Original file line numberDiff line numberDiff line change
@@ -470,24 +470,15 @@ describe('SimpleEventPlugin', function() {
470470
'High-pri count: 7, Low-pri count: 0',
471471
]);
472472

473-
if (gate(flags => flags.enableDiscreteEventMicroTasks)) {
474-
// Flush the microtask queue
475-
await null;
476-
477-
// At the end, both counters should equal the total number of clicks
478-
expect(Scheduler).toHaveYielded([
479-
'High-pri count: 8, Low-pri count: 0',
480-
]);
481-
expect(Scheduler).toFlushAndYield([
482-
'High-pri count: 8, Low-pri count: 8',
483-
]);
484-
} else {
485-
// At the end, both counters should equal the total number of clicks
486-
expect(Scheduler).toFlushAndYield([
487-
'High-pri count: 8, Low-pri count: 0',
488-
'High-pri count: 8, Low-pri count: 8',
489-
]);
490-
}
473+
// Flush the microtask queue
474+
await null;
475+
476+
// At the end, both counters should equal the total number of clicks
477+
expect(Scheduler).toHaveYielded(['High-pri count: 8, Low-pri count: 0']);
478+
expect(Scheduler).toFlushAndYield([
479+
'High-pri count: 8, Low-pri count: 8',
480+
]);
481+
491482
expect(button.textContent).toEqual('High-pri count: 8, Low-pri count: 8');
492483
});
493484
});

packages/react-noop-renderer/src/createReactNoop.js

+2-5
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ import {
2727
LegacyRoot,
2828
} from 'react-reconciler/src/ReactRootTags';
2929

30-
import {
31-
enableNativeEventPriorityInference,
32-
enableDiscreteEventMicroTasks,
33-
} from 'shared/ReactFeatureFlags';
30+
import {enableNativeEventPriorityInference} from 'shared/ReactFeatureFlags';
3431
import ReactSharedInternals from 'shared/ReactSharedInternals';
3532
import enqueueTask from 'shared/enqueueTask';
3633
const {IsSomeRendererActing} = ReactSharedInternals;
@@ -376,7 +373,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
376373
cancelTimeout: clearTimeout,
377374
noTimeout: -1,
378375

379-
supportsMicrotasks: enableDiscreteEventMicroTasks,
376+
supportsMicrotasks: true,
380377
scheduleMicrotask:
381378
typeof queueMicrotask === 'function'
382379
? queueMicrotask

packages/react-reconciler/src/__tests__/ReactSuspenseWithNoopRenderer-test.js

-50
Original file line numberDiff line numberDiff line change
@@ -3518,56 +3518,6 @@ describe('ReactSuspenseWithNoopRenderer', () => {
35183518
);
35193519
});
35203520

3521-
// @gate enableCache
3522-
// @gate !enableDiscreteEventMicroTasks
3523-
it('regression: empty render at high priority causes update to be dropped', async () => {
3524-
// Reproduces a bug where flushDiscreteUpdates starts a new (empty) render
3525-
// pass which cancels a scheduled timeout and causes the fallback never to
3526-
// be committed.
3527-
function App({text, shouldSuspend}) {
3528-
return (
3529-
<>
3530-
<Text text={text} />
3531-
<Suspense fallback={<Text text="Loading..." />}>
3532-
{shouldSuspend && <AsyncText text="B" />}
3533-
</Suspense>
3534-
</>
3535-
);
3536-
}
3537-
3538-
const root = ReactNoop.createRoot();
3539-
ReactNoop.discreteUpdates(() => {
3540-
// High pri
3541-
root.render(<App text="A" />);
3542-
});
3543-
// Low pri
3544-
root.render(<App text="A" shouldSuspend={true} />);
3545-
3546-
expect(Scheduler).toFlushAndYield([
3547-
// Render the high pri update
3548-
'A',
3549-
// Render the low pri update
3550-
'A',
3551-
'Suspend! [B]',
3552-
'Loading...',
3553-
]);
3554-
expect(root).toMatchRenderedOutput(<span prop="A" />);
3555-
3556-
// Triggers erstwhile bug where flushDiscreteUpdates caused an empty render
3557-
// at a previously committed level
3558-
ReactNoop.flushDiscreteUpdates();
3559-
3560-
// Commit the placeholder
3561-
Scheduler.unstable_advanceTime(2000);
3562-
await advanceTimers(2000);
3563-
expect(root).toMatchRenderedOutput(
3564-
<>
3565-
<span prop="A" />
3566-
<span prop="Loading..." />
3567-
</>,
3568-
);
3569-
});
3570-
35713521
// @gate experimental
35723522
// @gate enableCache
35733523
it('regression: ping at high priority causes update to be dropped', async () => {

packages/shared/ReactFeatureFlags.js

-2
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,6 @@ export const enableRecursiveCommitTraversal = false;
150150

151151
export const disableSchedulerTimeoutInWorkLoop = false;
152152

153-
export const enableDiscreteEventMicroTasks = false;
154-
155153
export const enableSyncMicroTasks = false;
156154

157155
export const enableNativeEventPriorityInference = false;

packages/shared/forks/ReactFeatureFlags.native-fb.js

-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ export const enableUseRefAccessWarning = false;
5757

5858
export const enableRecursiveCommitTraversal = false;
5959
export const disableSchedulerTimeoutInWorkLoop = false;
60-
export const enableDiscreteEventMicroTasks = false;
6160
export const enableSyncMicroTasks = false;
6261
export const enableNativeEventPriorityInference = false;
6362
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.native-oss.js

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const enableUseRefAccessWarning = false;
5656

5757
export const enableRecursiveCommitTraversal = false;
5858
export const disableSchedulerTimeoutInWorkLoop = false;
59-
export const enableDiscreteEventMicroTasks = false;
6059
export const enableSyncMicroTasks = false;
6160
export const enableNativeEventPriorityInference = false;
6261
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.js

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const enableUseRefAccessWarning = false;
5656

5757
export const enableRecursiveCommitTraversal = false;
5858
export const disableSchedulerTimeoutInWorkLoop = false;
59-
export const enableDiscreteEventMicroTasks = false;
6059
export const enableSyncMicroTasks = false;
6160
export const enableNativeEventPriorityInference = false;
6261
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.native.js

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const enableUseRefAccessWarning = false;
5656

5757
export const enableRecursiveCommitTraversal = false;
5858
export const disableSchedulerTimeoutInWorkLoop = false;
59-
export const enableDiscreteEventMicroTasks = false;
6059
export const enableSyncMicroTasks = false;
6160
export const enableNativeEventPriorityInference = false;
6261
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.www.js

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const enableUseRefAccessWarning = false;
5656

5757
export const enableRecursiveCommitTraversal = false;
5858
export const disableSchedulerTimeoutInWorkLoop = false;
59-
export const enableDiscreteEventMicroTasks = false;
6059
export const enableSyncMicroTasks = false;
6160
export const enableNativeEventPriorityInference = false;
6261
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.testing.js

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const enableUseRefAccessWarning = false;
5656

5757
export const enableRecursiveCommitTraversal = false;
5858
export const disableSchedulerTimeoutInWorkLoop = false;
59-
export const enableDiscreteEventMicroTasks = false;
6059
export const enableSyncMicroTasks = false;
6160
export const enableNativeEventPriorityInference = false;
6261
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.testing.www.js

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const enableUseRefAccessWarning = false;
5656

5757
export const enableRecursiveCommitTraversal = false;
5858
export const disableSchedulerTimeoutInWorkLoop = false;
59-
export const enableDiscreteEventMicroTasks = false;
6059
export const enableSyncMicroTasks = false;
6160
export const enableNativeEventPriorityInference = false;
6261
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.www-dynamic.js

-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ export const enableUseRefAccessWarning = __VARIANT__;
5555

5656
export const enableProfilerNestedUpdateScheduledHook = __VARIANT__;
5757
export const disableSchedulerTimeoutInWorkLoop = __VARIANT__;
58-
export const enableDiscreteEventMicroTasks = __VARIANT__;
5958
export const enableSyncMicroTasks = __VARIANT__;
6059
export const enableNativeEventPriorityInference = __VARIANT__;
6160
export const enableLazyContextPropagation = __VARIANT__;

packages/shared/forks/ReactFeatureFlags.www.js

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export const {
3131
enableUseRefAccessWarning,
3232
disableNativeComponentFrames,
3333
disableSchedulerTimeoutInWorkLoop,
34-
enableDiscreteEventMicroTasks,
3534
enableSyncMicroTasks,
3635
enableNativeEventPriorityInference,
3736
enableLazyContextPropagation,

0 commit comments

Comments
 (0)