Turn off `enableYieldingBeforePassive` (#31857)
Sebastian "Sebbie" Silbermann committed
Dec 19, 2024 at 20:43 UTC
518d06d26a97df6d4f5b04e529e5018ad35ea936
2 files changed
+44
-1
packages/react-reconciler/src/__tests__/ReactSuspenseyCommitPhase-test.js
+42
@@ -491,4 +491,46 @@ describe('ReactSuspenseyCommitPhase', () => {
491
</>,
492
);
493
});
494
+
495
+ // FIXME: Should pass with `enableYieldingBeforePassive`
496
+ // @gate !enableYieldingBeforePassive
497
+ it('runs passive effects after suspended commit resolves', async () => {
498
+ function Effect() {
499
+ React.useEffect(() => {
500
+ Scheduler.log('flush effect');
501
+ });
502
+ return <Text text="render effect" />;
503
+ }
504
+
505
+ const root = ReactNoop.createRoot();
506
+
507
+ await act(() => {
508
+ root.render(
509
+ <Suspense fallback={<Text text="Loading..." />}>
510
+ <Effect />
511
+ <SuspenseyImage src="A" />
512
+ </Suspense>,
513
+ );
514
+ });
515
+
516
+ assertLog([
517
+ 'render effect',
518
+ 'Image requested [A]',
519
+ 'Loading...',
520
+ 'render effect',
521
+ ]);
522
+ expect(root).toMatchRenderedOutput('Loading...');
523
+
524
+ await act(() => {
525
+ resolveSuspenseyThing('A');
526
+ });
527
+
528
+ assertLog(['flush effect']);
529
+ expect(root).toMatchRenderedOutput(
530
+ <>
531
+ {'render effect'}
532
+ <suspensey-thing src="A" />
533
+ </>,
534
+ );
535
+ });
536
});
packages/shared/ReactFeatureFlags.js
+2
-1
@@ -78,7 +78,8 @@ export const enableLegacyFBSupport = false;
78
// -----------------------------------------------------------------------------
79
80
// Yield to the browser event loop and not just the scheduler event loop before passive effects.
81
-export const enableYieldingBeforePassive = __EXPERIMENTAL__;
81
+// Fix gated tests that fail with this flag enabled before turning it back on.
82
+export const enableYieldingBeforePassive = false;
83
84
export const enableLegacyCache = __EXPERIMENTAL__;
85