Skip to content

Commit a7b421f

Browse files
committed
Revert "Cleanup enableSyncDefaultUpdate flag (#26236)" (#26528)
This reverts commit c6baac3.
1 parent 7eca717 commit a7b421f

36 files changed

+1471
-312
lines changed

packages/react-art/src/__tests__/ReactART-test.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,16 @@ const ReactTestRenderer = require('react-test-renderer');
3333

3434
// Isolate the noop renderer
3535
jest.resetModules();
36+
const ReactNoop = require('react-noop-renderer');
37+
const Scheduler = require('scheduler');
3638

3739
let Group;
3840
let Shape;
3941
let Surface;
4042
let TestComponent;
4143

44+
let waitFor;
45+
4246
const Missing = {};
4347

4448
function testDOMNodeStructure(domNode, expectedStructure) {
@@ -76,6 +80,8 @@ describe('ReactART', () => {
7680
Shape = ReactART.Shape;
7781
Surface = ReactART.Surface;
7882

83+
({waitFor} = require('internal-test-utils'));
84+
7985
TestComponent = class extends React.Component {
8086
group = React.createRef();
8187

@@ -357,6 +363,58 @@ describe('ReactART', () => {
357363
doClick(instance);
358364
expect(onClick2).toBeCalled();
359365
});
366+
367+
// @gate !enableSyncDefaultUpdates
368+
it('can concurrently render with a "primary" renderer while sharing context', async () => {
369+
const CurrentRendererContext = React.createContext(null);
370+
371+
function Yield(props) {
372+
Scheduler.log(props.value);
373+
return null;
374+
}
375+
376+
let ops = [];
377+
function LogCurrentRenderer() {
378+
return (
379+
<CurrentRendererContext.Consumer>
380+
{currentRenderer => {
381+
ops.push(currentRenderer);
382+
return null;
383+
}}
384+
</CurrentRendererContext.Consumer>
385+
);
386+
}
387+
388+
// Using test renderer instead of the DOM renderer here because async
389+
// testing APIs for the DOM renderer don't exist.
390+
ReactNoop.render(
391+
<CurrentRendererContext.Provider value="Test">
392+
<Yield value="A" />
393+
<Yield value="B" />
394+
<LogCurrentRenderer />
395+
<Yield value="C" />
396+
</CurrentRendererContext.Provider>,
397+
);
398+
399+
await waitFor(['A']);
400+
401+
ReactDOM.render(
402+
<Surface>
403+
<LogCurrentRenderer />
404+
<CurrentRendererContext.Provider value="ART">
405+
<LogCurrentRenderer />
406+
</CurrentRendererContext.Provider>
407+
</Surface>,
408+
container,
409+
);
410+
411+
expect(ops).toEqual([null, 'ART']);
412+
413+
ops = [];
414+
await waitFor(['B', 'C']);
415+
416+
expect(ops).toEqual(['Test']);
417+
});
360418
});
361419

362420
describe('ReactARTComponents', () => {

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,11 @@ describe('ReactDOMNativeEventHeuristic-test', () => {
312312
expect(container.textContent).toEqual('not hovered');
313313

314314
await waitFor(['hovered']);
315-
expect(container.textContent).toEqual('hovered');
315+
if (gate(flags => flags.enableSyncDefaultUpdates)) {
316+
expect(container.textContent).toEqual('hovered');
317+
} else {
318+
expect(container.textContent).toEqual('not hovered');
319+
}
316320
});
317321
expect(container.textContent).toEqual('hovered');
318322
});

packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2036,7 +2036,14 @@ describe('ReactDOMServerPartialHydration', () => {
20362036
suspend = true;
20372037

20382038
await act(async () => {
2039-
await waitFor(['Before', 'After']);
2039+
if (gate(flags => flags.enableSyncDefaultUpdates)) {
2040+
await waitFor(['Before', 'After']);
2041+
} else {
2042+
await waitFor(['Before']);
2043+
// This took a long time to render.
2044+
Scheduler.unstable_advanceTime(1000);
2045+
await waitFor(['After']);
2046+
}
20402047

20412048
// This will cause us to skip the second row completely.
20422049
});

packages/react-dom/src/events/__tests__/DOMPluginEventSystem-test.internal.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1984,9 +1984,13 @@ describe('DOMPluginEventSystem', () => {
19841984
log.length = 0;
19851985

19861986
// Increase counter
1987-
React.startTransition(() => {
1987+
if (gate(flags => flags.enableSyncDefaultUpdates)) {
1988+
React.startTransition(() => {
1989+
root.render(<Test counter={1} />);
1990+
});
1991+
} else {
19881992
root.render(<Test counter={1} />);
1989-
});
1993+
}
19901994
// Yield before committing
19911995
await waitFor(['Test']);
19921996

packages/react-reconciler/src/ReactFiber.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
enableProfilerTimer,
3434
enableScopeAPI,
3535
enableLegacyHidden,
36+
enableSyncDefaultUpdates,
3637
allowConcurrentByDefault,
3738
enableTransitionTracing,
3839
enableDebugTracing,
@@ -458,9 +459,11 @@ export function createHostRootFiber(
458459
mode |= StrictLegacyMode | StrictEffectsMode;
459460
}
460461
if (
462+
// We only use this flag for our repo tests to check both behaviors.
463+
// TODO: Flip this flag and rename it something like "forceConcurrentByDefaultForTesting"
464+
!enableSyncDefaultUpdates ||
461465
// Only for internal experiments.
462-
allowConcurrentByDefault &&
463-
concurrentUpdatesByDefaultOverride
466+
(allowConcurrentByDefault && concurrentUpdatesByDefaultOverride)
464467
) {
465468
mode |= ConcurrentUpdatesByDefaultMode;
466469
}

0 commit comments

Comments
 (0)