Skip to content

Commit ee295d8

Browse files
committed
Warn if the old "backwards" option is used
So we can repurpose this.
1 parent 259b2a5 commit ee295d8

File tree

2 files changed

+84
-1
lines changed

2 files changed

+84
-1
lines changed

packages/react-reconciler/src/ReactFiberBeginWork.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3228,7 +3228,6 @@ function validateRevealOrder(revealOrder: SuspenseListRevealOrder) {
32283228
const cacheKey = revealOrder == null ? 'null' : revealOrder;
32293229
if (
32303230
revealOrder !== 'forwards' &&
3231-
revealOrder !== 'backwards' &&
32323231
revealOrder !== 'unstable_legacy-backwards' &&
32333232
revealOrder !== 'together' &&
32343233
revealOrder !== 'independent' &&
@@ -3241,6 +3240,11 @@ function validateRevealOrder(revealOrder: SuspenseListRevealOrder) {
32413240
'To be future compatible you must explictly specify either ' +
32423241
'"independent" (the current default), "together", "forwards" or "legacy_unstable-backwards".',
32433242
);
3243+
} else if (revealOrder === 'backwards') {
3244+
console.error(
3245+
'The rendering order of <SuspenseList revealOrder="backwards"> is changing. ' +
3246+
'To be future compatible you must specify revealOrder="legacy_unstable-backwards" instead.',
3247+
);
32443248
} else if (typeof revealOrder === 'string') {
32453249
switch (revealOrder.toLowerCase()) {
32463250
case 'together':

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

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,6 +1039,85 @@ describe('ReactSuspenseList', () => {
10391039
);
10401040
});
10411041

1042+
// @gate enableSuspenseList
1043+
it('warns if revealOrder="backwards" is specified', async () => {
1044+
const A = createAsyncText('A');
1045+
const B = createAsyncText('B');
1046+
const C = createAsyncText('C');
1047+
1048+
function Foo() {
1049+
return (
1050+
<SuspenseList revealOrder="backwards" tail="visible">
1051+
<Suspense fallback={<Text text="Loading A" />}>
1052+
<A />
1053+
</Suspense>
1054+
<Suspense fallback={<Text text="Loading B" />}>
1055+
<B />
1056+
</Suspense>
1057+
<Suspense fallback={<Text text="Loading C" />}>
1058+
<C />
1059+
</Suspense>
1060+
</SuspenseList>
1061+
);
1062+
}
1063+
1064+
await A.resolve();
1065+
1066+
ReactNoop.render(<Foo />);
1067+
1068+
await waitForAll([
1069+
'Suspend! [C]',
1070+
'Loading C',
1071+
'Loading B',
1072+
'Loading A',
1073+
// pre-warming
1074+
'Suspend! [C]',
1075+
]);
1076+
1077+
assertConsoleErrorDev([
1078+
'The rendering order of <SuspenseList revealOrder="backwards"> is changing. ' +
1079+
'To be future compatible you must specify ' +
1080+
'revealOrder="legacy_unstable-backwards" instead.' +
1081+
'\n in SuspenseList (at **)' +
1082+
'\n in Foo (at **)',
1083+
]);
1084+
1085+
expect(ReactNoop).toMatchRenderedOutput(
1086+
<>
1087+
<span>Loading A</span>
1088+
<span>Loading B</span>
1089+
<span>Loading C</span>
1090+
</>,
1091+
);
1092+
1093+
await act(() => C.resolve());
1094+
assertLog([
1095+
'C',
1096+
'Suspend! [B]',
1097+
// pre-warming
1098+
'Suspend! [B]',
1099+
]);
1100+
1101+
expect(ReactNoop).toMatchRenderedOutput(
1102+
<>
1103+
<span>Loading A</span>
1104+
<span>Loading B</span>
1105+
<span>C</span>
1106+
</>,
1107+
);
1108+
1109+
await act(() => B.resolve());
1110+
assertLog(['B', 'A']);
1111+
1112+
expect(ReactNoop).toMatchRenderedOutput(
1113+
<>
1114+
<span>A</span>
1115+
<span>B</span>
1116+
<span>C</span>
1117+
</>,
1118+
);
1119+
});
1120+
10421121
// @gate enableSuspenseList
10431122
it('displays each items in "backwards" order', async () => {
10441123
const A = createAsyncText('A');

0 commit comments

Comments
 (0)