Rename AsyncMode -> ConcurrentMode (#13732)
* Rename AsyncMode -> ConcurrentMode
Dominic Gannaway committed
Sep 26, 2018 at 17:13 UTC
0dc0ddc1ef5f90fe48b58f1a1ba753757961fc74
29 files changed
+211
-170
fixtures/unstable-async/time-slicing/src/index.js
+2
-2
@@ -147,8 +147,8 @@ class App extends PureComponent {
147
148
const container = document.getElementById('root');
149
render(
150
- <React.unstable_AsyncMode>
150
+ <React.unstable_ConcurrentMode>
151
<App />
152
- </React.unstable_AsyncMode>,
152
+ </React.unstable_ConcurrentMode>,
153
container
154
);
packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js
+16
-16
@@ -14,7 +14,7 @@ let ReactFeatureFlags = require('shared/ReactFeatureFlags');
14
15
let ReactDOM;
16
17
-const AsyncMode = React.unstable_AsyncMode;
17
+const ConcurrentMode = React.unstable_ConcurrentMode;
18
19
const setUntrackedInputValue = Object.getOwnPropertyDescriptor(
20
HTMLInputElement.prototype,
@@ -108,9 +108,9 @@ describe('ReactDOMFiberAsync', () => {
108
}
109
}
110
ReactDOM.render(
111
- <AsyncMode>
111
+ <ConcurrentMode>
112
<Counter />
113
- </AsyncMode>,
113
+ </ConcurrentMode>,
114
container,
115
);
116
expect(asyncValueRef.current.textContent).toBe('');
@@ -137,17 +137,17 @@ describe('ReactDOMFiberAsync', () => {
137
138
it('renders synchronously', () => {
139
ReactDOM.render(
140
- <AsyncMode>
140
+ <ConcurrentMode>
141
<div>Hi</div>
142
- </AsyncMode>,
142
+ </ConcurrentMode>,
143
container,
144
);
145
expect(container.textContent).toEqual('Hi');
146
147
ReactDOM.render(
148
- <AsyncMode>
148
+ <ConcurrentMode>
149
<div>Bye</div>
150
- </AsyncMode>,
150
+ </ConcurrentMode>,
151
container,
152
);
153
expect(container.textContent).toEqual('Bye');
@@ -197,7 +197,7 @@ describe('ReactDOMFiberAsync', () => {
197
expect(container.textContent).toEqual('1');
198
});
199
200
- it('AsyncMode creates an async subtree', () => {
200
+ it('ConcurrentMode creates an async subtree', () => {
201
let instance;
202
class Component extends React.Component {
203
state = {step: 0};
@@ -208,9 +208,9 @@ describe('ReactDOMFiberAsync', () => {
208
}
209
210
ReactDOM.render(
211
- <AsyncMode>
211
+ <ConcurrentMode>
212
<Component />
213
- </AsyncMode>,
213
+ </ConcurrentMode>,
214
container,
215
);
216
jest.runAllTimers();
@@ -233,9 +233,9 @@ describe('ReactDOMFiberAsync', () => {
233
234
ReactDOM.render(
235
<div>
236
- <AsyncMode>
236
+ <ConcurrentMode>
237
<Child />
238
- </AsyncMode>
238
+ </ConcurrentMode>
239
</div>,
240
container,
241
);
@@ -364,9 +364,9 @@ describe('ReactDOMFiberAsync', () => {
364
}
365
366
ReactDOM.render(
367
- <AsyncMode>
367
+ <ConcurrentMode>
368
<Component />
369
- </AsyncMode>,
369
+ </ConcurrentMode>,
370
container,
371
);
372
jest.runAllTimers();
@@ -409,9 +409,9 @@ describe('ReactDOMFiberAsync', () => {
409
}
410
}
411
ReactDOM.render(
412
- <AsyncMode>
412
+ <ConcurrentMode>
413
<Counter />
414
- </AsyncMode>,
414
+ </ConcurrentMode>,
415
container,
416
);
417
expect(container.textContent).toEqual('0');
packages/react-dom/src/__tests__/ReactDOMRoot-test.js
+8
-8
@@ -12,7 +12,7 @@
12
let React = require('react');
13
let ReactDOM = require('react-dom');
14
let ReactDOMServer = require('react-dom/server');
15
-let AsyncMode = React.unstable_AsyncMode;
15
+let ConcurrentMode = React.unstable_ConcurrentMode;
16
17
describe('ReactDOMRoot', () => {
18
let container;
@@ -63,7 +63,7 @@ describe('ReactDOMRoot', () => {
63
React = require('react');
64
ReactDOM = require('react-dom');
65
ReactDOMServer = require('react-dom/server');
66
- AsyncMode = React.unstable_AsyncMode;
66
+ ConcurrentMode = React.unstable_ConcurrentMode;
67
});
68
69
it('renders children', () => {
@@ -85,7 +85,7 @@ describe('ReactDOMRoot', () => {
85
86
it('`root.render` returns a thenable work object', () => {
87
const root = ReactDOM.unstable_createRoot(container);
88
- const work = root.render(<AsyncMode>Hi</AsyncMode>);
88
+ const work = root.render(<ConcurrentMode>Hi</ConcurrentMode>);
89
let ops = [];
90
work.then(() => {
91
ops.push('inside callback: ' + container.textContent);
@@ -103,7 +103,7 @@ describe('ReactDOMRoot', () => {
103
104
it('resolves `work.then` callback synchronously if the work already committed', () => {
105
const root = ReactDOM.unstable_createRoot(container);
106
- const work = root.render(<AsyncMode>Hi</AsyncMode>);
106
+ const work = root.render(<ConcurrentMode>Hi</ConcurrentMode>);
107
jest.runAllTimers();
108
let ops = [];
109
work.then(() => {
@@ -196,9 +196,9 @@ describe('ReactDOMRoot', () => {
196
const root = ReactDOM.unstable_createRoot(container);
197
const batch = root.createBatch();
198
batch.render(
199
- <AsyncMode>
199
+ <ConcurrentMode>
200
<App />
201
- </AsyncMode>,
201
+ </ConcurrentMode>,
202
);
203
204
jest.runAllTimers();
@@ -246,7 +246,7 @@ describe('ReactDOMRoot', () => {
246
it('can wait for a batch to finish', () => {
247
const root = ReactDOM.unstable_createRoot(container);
248
const batch = root.createBatch();
249
- batch.render(<AsyncMode>Foo</AsyncMode>);
249
+ batch.render(<ConcurrentMode>Foo</ConcurrentMode>);
250
251
jest.runAllTimers();
252
@@ -286,7 +286,7 @@ describe('ReactDOMRoot', () => {
286
287
it('can commit an empty batch', () => {
288
const root = ReactDOM.unstable_createRoot(container);
289
- root.render(<AsyncMode>1</AsyncMode>);
289
+ root.render(<ConcurrentMode>1</ConcurrentMode>);
290
291
advanceCurrentTime(2000);
292
// This batch has a later expiration time than the earlier update.
packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js
+22
-22
@@ -104,36 +104,36 @@ describe('ReactDOMServerIntegration', () => {
104
});
105
});
106
107
- describe('React.unstable_AsyncMode', () => {
108
- itRenders('an async mode with one child', async render => {
107
+ describe('React.unstable_ConcurrentMode', () => {
108
+ itRenders('an concurrent mode with one child', async render => {
109
let e = await render(
110
- <React.unstable_AsyncMode>
110
+ <React.unstable_ConcurrentMode>
111
<div>text1</div>
112
- </React.unstable_AsyncMode>,
112
+ </React.unstable_ConcurrentMode>,
113
);
114
let parent = e.parentNode;
115
expect(parent.childNodes[0].tagName).toBe('DIV');
116
});
117
118
- itRenders('an async mode with several children', async render => {
118
+ itRenders('an concurrent mode with several children', async render => {
119
let Header = props => {
120
return <p>header</p>;
121
};
122
let Footer = props => {
123
return (
124
- <React.unstable_AsyncMode>
124
+ <React.unstable_ConcurrentMode>
125
<h2>footer</h2>
126
<h3>about</h3>
127
- </React.unstable_AsyncMode>
127
+ </React.unstable_ConcurrentMode>
128
);
129
};
130
let e = await render(
131
- <React.unstable_AsyncMode>
131
+ <React.unstable_ConcurrentMode>
132
<div>text1</div>
133
<span>text2</span>
134
<Header />
135
<Footer />
136
- </React.unstable_AsyncMode>,
136
+ </React.unstable_ConcurrentMode>,
137
);
138
let parent = e.parentNode;
139
expect(parent.childNodes[0].tagName).toBe('DIV');
@@ -143,23 +143,23 @@ describe('ReactDOMServerIntegration', () => {
143
expect(parent.childNodes[4].tagName).toBe('H3');
144
});
145
146
- itRenders('a nested async mode', async render => {
146
+ itRenders('a nested concurrent mode', async render => {
147
let e = await render(
148
- <React.unstable_AsyncMode>
149
- <React.unstable_AsyncMode>
148
+ <React.unstable_ConcurrentMode>
149
+ <React.unstable_ConcurrentMode>
150
<div>text1</div>
151
- </React.unstable_AsyncMode>
151
+ </React.unstable_ConcurrentMode>
152
<span>text2</span>
153
- <React.unstable_AsyncMode>
154
- <React.unstable_AsyncMode>
155
- <React.unstable_AsyncMode>
153
+ <React.unstable_ConcurrentMode>
154
+ <React.unstable_ConcurrentMode>
155
+ <React.unstable_ConcurrentMode>
156
{null}
157
<p />
158
- </React.unstable_AsyncMode>
158
+ </React.unstable_ConcurrentMode>
159
{false}
160
- </React.unstable_AsyncMode>
161
- </React.unstable_AsyncMode>
162
- </React.unstable_AsyncMode>,
160
+ </React.unstable_ConcurrentMode>
161
+ </React.unstable_ConcurrentMode>
162
+ </React.unstable_ConcurrentMode>,
163
);
164
let parent = e.parentNode;
165
expect(parent.childNodes[0].tagName).toBe('DIV');
@@ -167,8 +167,8 @@ describe('ReactDOMServerIntegration', () => {
167
expect(parent.childNodes[2].tagName).toBe('P');
168
});
169
170
- itRenders('an empty async mode', async render => {
171
- expect(await render(<React.unstable_AsyncMode />)).toBe(null);
170
+ itRenders('an empty concurrent mode', async render => {
171
+ expect(await render(<React.unstable_ConcurrentMode />)).toBe(null);
172
});
173
});
174
});
packages/react-dom/src/client/ReactDOM.js
+8
-4
@@ -330,8 +330,12 @@ ReactWork.prototype._onCommit = function(): void {
330
}
331
};
332
333
-function ReactRoot(container: Container, isAsync: boolean, hydrate: boolean) {
334
- const root = DOMRenderer.createContainer(container, isAsync, hydrate);
333
+function ReactRoot(
334
+ container: Container,
335
+ isConcurrent: boolean,
336
+ hydrate: boolean,
337
+) {
338
+ const root = DOMRenderer.createContainer(container, isConcurrent, hydrate);
339
this._internalRoot = root;
340
}
341
ReactRoot.prototype.render = function(
@@ -497,8 +501,8 @@ function legacyCreateRootFromDOMContainer(
501
}
502
}
503
// Legacy roots are not async by default.
500
- const isAsync = false;
501
- return new ReactRoot(container, isAsync, shouldHydrate);
504
+ const isConcurrent = false;
505
+ return new ReactRoot(container, isConcurrent, shouldHydrate);
506
}
507
508
function legacyRenderSubtreeIntoContainer(
packages/react-dom/src/events/__tests__/SimpleEventPlugin-test.internal.js
+2
-2
@@ -426,9 +426,9 @@ describe('SimpleEventPlugin', function() {
426
// Intentionally not using the updater form here
427
() => this.setState({highPriCount: this.state.highPriCount + 1})
428
}>
429
- <React.unstable_AsyncMode>
429
+ <React.unstable_ConcurrentMode>
430
<Button highPriCount={this.state.highPriCount} />
431
- </React.unstable_AsyncMode>
431
+ </React.unstable_ConcurrentMode>
432
</div>
433
);
434
}
packages/react-dom/src/server/ReactPartialRenderer.js
+2
-2
@@ -32,7 +32,7 @@ import {
32
REACT_FORWARD_REF_TYPE,
33
REACT_FRAGMENT_TYPE,
34
REACT_STRICT_MODE_TYPE,
35
- REACT_ASYNC_MODE_TYPE,
35
+ REACT_CONCURRENT_MODE_TYPE,
36
REACT_PLACEHOLDER_TYPE,
37
REACT_PORTAL_TYPE,
38
REACT_PROFILER_TYPE,
@@ -896,7 +896,7 @@ class ReactDOMServerRenderer {
896
897
switch (elementType) {
898
case REACT_STRICT_MODE_TYPE:
899
- case REACT_ASYNC_MODE_TYPE:
899
+ case REACT_CONCURRENT_MODE_TYPE:
900
case REACT_PROFILER_TYPE:
901
case REACT_FRAGMENT_TYPE: {
902
const nextChildren = toArray(
packages/react-is/README.md
+3
-3
@@ -44,14 +44,14 @@ ReactIs.isValidElementType(React.createFactory("div")); // true
44
45
### Determining an Element's Type
46
47
-#### AsyncMode
47
+#### ConcurrentMode
48
49
```js
50
import React from "react";
51
import * as ReactIs from 'react-is';
52
53
-ReactIs.isAsyncMode(<React.unstable_AsyncMode />); // true
54
-ReactIs.typeOf(<React.unstable_AsyncMode />) === ReactIs.AsyncMode; // true
53
+ReactIs.isConcurrentMode(<React.unstable_ConcurrentMode />); // true
54
+ReactIs.typeOf(<React.unstable_ConcurrentMode />) === ReactIs.ConcurrentMode; // true
55
```
56
57
#### Context
packages/react-is/src/ReactIs.js
+24
-4
@@ -10,7 +10,7 @@
10
'use strict';
11
12
import {
13
- REACT_ASYNC_MODE_TYPE,
13
+ REACT_CONCURRENT_MODE_TYPE,
14
REACT_CONTEXT_TYPE,
15
REACT_ELEMENT_TYPE,
16
REACT_FORWARD_REF_TYPE,
@@ -21,6 +21,7 @@ import {
21
REACT_STRICT_MODE_TYPE,
22
} from 'shared/ReactSymbols';
23
import isValidElementType from 'shared/isValidElementType';
24
+import lowPriorityWarning from 'shared/lowPriorityWarning';
25
26
export function typeOf(object: any) {
27
if (typeof object === 'object' && object !== null) {
@@ -31,7 +32,7 @@ export function typeOf(object: any) {
32
const type = object.type;
33
34
switch (type) {
34
- case REACT_ASYNC_MODE_TYPE:
35
+ case REACT_CONCURRENT_MODE_TYPE:
36
case REACT_FRAGMENT_TYPE:
37
case REACT_PROFILER_TYPE:
38
case REACT_STRICT_MODE_TYPE:
@@ -56,7 +57,9 @@ export function typeOf(object: any) {
57
return undefined;
58
}
59
59
-export const AsyncMode = REACT_ASYNC_MODE_TYPE;
60
+// AsyncMode alias is deprecated along with isAsyncMode
61
+export const AsyncMode = REACT_CONCURRENT_MODE_TYPE;
62
+export const ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
63
export const ContextConsumer = REACT_CONTEXT_TYPE;
64
export const ContextProvider = REACT_PROVIDER_TYPE;
65
export const Element = REACT_ELEMENT_TYPE;
@@ -68,8 +71,25 @@ export const StrictMode = REACT_STRICT_MODE_TYPE;
71
72
export {isValidElementType};
73
74
+let hasWarnedAboutDeprecatedIsAsyncMode = false;
75
+
76
+// AsyncMode should be deprecated
77
export function isAsyncMode(object: any) {
72
- return typeOf(object) === REACT_ASYNC_MODE_TYPE;
78
+ if (__DEV__) {
79
+ if (!hasWarnedAboutDeprecatedIsAsyncMode) {
80
+ hasWarnedAboutDeprecatedIsAsyncMode = true;
81
+ lowPriorityWarning(
82
+ false,
83
+ 'The ReactIs.isAsyncMode() alias has been deprecated, ' +
84
+ 'and will be removed in React 17+. Update your code to use ' +
85
+ 'ReactIs.isConcurrentMode() instead. It has the exact same API.',
86
+ );
87
+ }
88
+ }
89
+ return isConcurrentMode(object);
90
+}
91
+export function isConcurrentMode(object: any) {
92
+ return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
93
}
94
export function isContextConsumer(object: any) {
95
return typeOf(object) === REACT_CONTEXT_TYPE;
packages/react-is/src/__tests__/ReactIs-test.js
+17
-11
@@ -56,7 +56,9 @@ describe('ReactIs', () => {
56
true,
57
);
58
expect(ReactIs.isValidElementType(React.Fragment)).toEqual(true);
59
- expect(ReactIs.isValidElementType(React.unstable_AsyncMode)).toEqual(true);
59
+ expect(ReactIs.isValidElementType(React.unstable_ConcurrentMode)).toEqual(
60
+ true,
61
+ );
62
expect(ReactIs.isValidElementType(React.StrictMode)).toEqual(true);
63
64
expect(ReactIs.isValidElementType(true)).toEqual(false);
@@ -68,13 +70,17 @@ describe('ReactIs', () => {
70
});
71
72
it('should identify async mode', () => {
71
- expect(ReactIs.typeOf(<React.unstable_AsyncMode />)).toBe(
72
- ReactIs.AsyncMode,
73
+ expect(ReactIs.typeOf(<React.unstable_ConcurrentMode />)).toBe(
74
+ ReactIs.ConcurrentMode,
75
+ );
76
+ expect(ReactIs.isConcurrentMode(<React.unstable_ConcurrentMode />)).toBe(
77
+ true,
78
+ );
79
+ expect(ReactIs.isConcurrentMode({type: ReactIs.ConcurrentMode})).toBe(
80
+ false,
81
);
74
- expect(ReactIs.isAsyncMode(<React.unstable_AsyncMode />)).toBe(true);
75
- expect(ReactIs.isAsyncMode({type: ReactIs.AsyncMode})).toBe(false);
76
- expect(ReactIs.isAsyncMode(<React.StrictMode />)).toBe(false);
77
- expect(ReactIs.isAsyncMode(<div />)).toBe(false);
82
+ expect(ReactIs.isConcurrentMode(<React.StrictMode />)).toBe(false);
83
+ expect(ReactIs.isConcurrentMode(<div />)).toBe(false);
84
});
85
86
it('should identify context consumers', () => {
@@ -108,7 +114,7 @@ describe('ReactIs', () => {
114
expect(ReactIs.isElement(<Context.Provider />)).toBe(true);
115
expect(ReactIs.isElement(<Context.Consumer />)).toBe(true);
116
expect(ReactIs.isElement(<React.Fragment />)).toBe(true);
111
- expect(ReactIs.isElement(<React.unstable_AsyncMode />)).toBe(true);
117
+ expect(ReactIs.isElement(<React.unstable_ConcurrentMode />)).toBe(true);
118
expect(ReactIs.isElement(<React.StrictMode />)).toBe(true);
119
});
120
@@ -117,7 +123,7 @@ describe('ReactIs', () => {
123
expect(ReactIs.typeOf(<RefForwardingComponent />)).toBe(ReactIs.ForwardRef);
124
expect(ReactIs.isForwardRef(<RefForwardingComponent />)).toBe(true);
125
expect(ReactIs.isForwardRef({type: ReactIs.StrictMode})).toBe(false);
120
- expect(ReactIs.isForwardRef(<React.unstable_AsyncMode />)).toBe(false);
126
+ expect(ReactIs.isForwardRef(<React.unstable_ConcurrentMode />)).toBe(false);
127
expect(ReactIs.isForwardRef(<div />)).toBe(false);
128
});
129
@@ -142,7 +148,7 @@ describe('ReactIs', () => {
148
expect(ReactIs.typeOf(<React.StrictMode />)).toBe(ReactIs.StrictMode);
149
expect(ReactIs.isStrictMode(<React.StrictMode />)).toBe(true);
150
expect(ReactIs.isStrictMode({type: ReactIs.StrictMode})).toBe(false);
145
- expect(ReactIs.isStrictMode(<React.unstable_AsyncMode />)).toBe(false);
151
+ expect(ReactIs.isStrictMode(<React.unstable_ConcurrentMode />)).toBe(false);
152
expect(ReactIs.isStrictMode(<div />)).toBe(false);
153
});
154
@@ -156,7 +162,7 @@ describe('ReactIs', () => {
162
),
163
).toBe(true);
164
expect(ReactIs.isProfiler({type: ReactIs.unstable_Profiler})).toBe(false);
159
- expect(ReactIs.isProfiler(<React.unstable_AsyncMode />)).toBe(false);
165
+ expect(ReactIs.isProfiler(<React.unstable_ConcurrentMode />)).toBe(false);
166
expect(ReactIs.isProfiler(<div />)).toBe(false);
167
});
168
});
packages/react-noop-renderer/src/createReactNoop.js
+12
-6
@@ -451,13 +451,13 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
451
452
getOrCreateRootContainer(
453
rootID: string = DEFAULT_ROOT_ID,
454
- isAsync: boolean = false,
454
+ isConcurrent: boolean = false,
455
) {
456
let root = roots.get(rootID);
457
if (!root) {
458
const container = {rootID: rootID, children: []};
459
rootContainers.set(rootID, container);
460
- root = NoopRenderer.createContainer(container, isAsync, false);
460
+ root = NoopRenderer.createContainer(container, isConcurrent, false);
461
roots.set(rootID, root);
462
}
463
return root.current.stateNode.containerInfo;
@@ -478,8 +478,11 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
478
479
renderLegacySyncRoot(element: React$Element<any>, callback: ?Function) {
480
const rootID = DEFAULT_ROOT_ID;
481
- const isAsync = false;
482
- const container = ReactNoop.getOrCreateRootContainer(rootID, isAsync);
481
+ const isConcurrent = false;
482
+ const container = ReactNoop.getOrCreateRootContainer(
483
+ rootID,
484
+ isConcurrent,
485
+ );
486
const root = roots.get(container.rootID);
487
NoopRenderer.updateContainer(element, root, null, callback);
488
},
@@ -489,8 +492,11 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
492
rootID: string,
493
callback: ?Function,
494
) {
492
- const isAsync = true;
493
- const container = ReactNoop.getOrCreateRootContainer(rootID, isAsync);
495
+ const isConcurrent = true;
496
+ const container = ReactNoop.getOrCreateRootContainer(
497
+ rootID,
498
+ isConcurrent,
499
+ );
500
const root = roots.get(container.rootID);
501
NoopRenderer.updateContainer(element, root, null, callback);
502
},
packages/react-reconciler/src/ReactFiber.js
+12
-7
@@ -42,7 +42,12 @@ import getComponentName from 'shared/getComponentName';
42
43
import {isDevToolsPresent} from './ReactFiberDevToolsHook';
44
import {NoWork} from './ReactFiberExpirationTime';
45
-import {NoContext, AsyncMode, ProfileMode, StrictMode} from './ReactTypeOfMode';
45
+import {
46
+ NoContext,
47
+ ConcurrentMode,
48
+ ProfileMode,
49
+ StrictMode,
50
+} from './ReactTypeOfMode';
51
import {
52
REACT_FORWARD_REF_TYPE,
53
REACT_FRAGMENT_TYPE,
@@ -50,7 +55,7 @@ import {
55
REACT_PROFILER_TYPE,
56
REACT_PROVIDER_TYPE,
57
REACT_CONTEXT_TYPE,
53
- REACT_ASYNC_MODE_TYPE,
58
+ REACT_CONCURRENT_MODE_TYPE,
59
REACT_PLACEHOLDER_TYPE,
60
} from 'shared/ReactSymbols';
61
@@ -133,7 +138,7 @@ export type Fiber = {|
138
firstContextDependency: ContextDependency<mixed> | null,
139
140
// Bitfield that describes properties about the fiber and its subtree. E.g.
136
- // the AsyncMode flag indicates whether the subtree should be async-by-
141
+ // the ConcurrentMode flag indicates whether the subtree should be async-by-
142
// default. When a fiber is created, it inherits the mode of its
143
// parent. Additional flags can be set at creation time, but after that the
144
// value should remain unchanged throughout the fiber's lifetime, particularly
@@ -387,8 +392,8 @@ export function createWorkInProgress(
392
return workInProgress;
393
}
394
390
-export function createHostRootFiber(isAsync: boolean): Fiber {
391
- let mode = isAsync ? AsyncMode | StrictMode : NoContext;
395
+export function createHostRootFiber(isConcurrent: boolean): Fiber {
396
+ let mode = isConcurrent ? ConcurrentMode | StrictMode : NoContext;
397
398
if (enableProfilerTimer && isDevToolsPresent) {
399
// Always collect profile timings when DevTools are present.
@@ -429,9 +434,9 @@ export function createFiberFromElement(
434
expirationTime,
435
key,
436
);
432
- case REACT_ASYNC_MODE_TYPE:
437
+ case REACT_CONCURRENT_MODE_TYPE:
438
fiberTag = Mode;
434
- mode |= AsyncMode | StrictMode;
439
+ mode |= ConcurrentMode | StrictMode;
440
break;
441
case REACT_STRICT_MODE_TYPE:
442
fiberTag = Mode;
packages/react-reconciler/src/ReactFiberBeginWork.js
+2
-2
@@ -66,7 +66,7 @@ import {
66
} from './ReactChildFiber';
67
import {processUpdateQueue} from './ReactUpdateQueue';
68
import {NoWork, Never} from './ReactFiberExpirationTime';
69
-import {AsyncMode, StrictMode} from './ReactTypeOfMode';
69
+import {ConcurrentMode, StrictMode} from './ReactTypeOfMode';
70
import {
71
shouldSetTextContent,
72
shouldDeprioritizeSubtree,
@@ -568,7 +568,7 @@ function updateHostComponent(current, workInProgress, renderExpirationTime) {
568
// Check the host config to see if the children are offscreen/hidden.
569
if (
570
renderExpirationTime !== Never &&
571
- workInProgress.mode & AsyncMode &&
571
+ workInProgress.mode & ConcurrentMode &&
572
shouldDeprioritizeSubtree(type, nextProps)
573
) {
574
// Schedule this fiber to re-render at offscreen priority. Then bailout.
packages/react-reconciler/src/ReactFiberReconciler.js
+2
-2
@@ -211,10 +211,10 @@ function findHostInstance(component: Object): PublicInstance | null {
211
212
export function createContainer(
213
containerInfo: Container,
214
- isAsync: boolean,
214
+ isConcurrent: boolean,
215
hydrate: boolean,
216
): OpaqueRoot {
217
- return createFiberRoot(containerInfo, isAsync, hydrate);
217
+ return createFiberRoot(containerInfo, isConcurrent, hydrate);
218
}
219
220
export function updateContainer(
packages/react-reconciler/src/ReactFiberRoot.js
+2
-2
@@ -101,12 +101,12 @@ export type FiberRoot = {
101
102
export function createFiberRoot(
103
containerInfo: any,
104
- isAsync: boolean,
104
+ isConcurrent: boolean,
105
hydrate: boolean,
106
): FiberRoot {
107
// Cyclic construction. This cheats the type system right now because
108
// stateNode is any.
109
- const uninitializedFiber = createHostRootFiber(isAsync);
109
+ const uninitializedFiber = createHostRootFiber(isConcurrent);
110
111
let root;
112
if (enableSchedulerTracing) {
packages/react-reconciler/src/ReactFiberScheduler.js
+2
-2
@@ -112,7 +112,7 @@ import {
112
computeAsyncExpiration,
113
computeInteractiveExpiration,
114
} from './ReactFiberExpirationTime';
115
-import {AsyncMode, ProfileMode} from './ReactTypeOfMode';
115
+import {ConcurrentMode, ProfileMode} from './ReactTypeOfMode';
116
import {enqueueUpdate, resetCurrentlyProcessingQueue} from './ReactUpdateQueue';
117
import {createCapturedValue} from './ReactCapturedValue';
118
import {
@@ -1545,7 +1545,7 @@ function computeExpirationForFiber(currentTime: ExpirationTime, fiber: Fiber) {
1545
} else {
1546
// No explicit expiration context was set, and we're not currently
1547
// performing work. Calculate a new expiration time.
1548
- if (fiber.mode & AsyncMode) {
1548
+ if (fiber.mode & ConcurrentMode) {
1549
if (isBatchingInteractiveUpdates) {
1550
// This is an interactive update
1551
expirationTime = computeInteractiveExpiration(currentTime);
packages/react-reconciler/src/ReactFiberUnwindWork.js
+3
-3
@@ -38,7 +38,7 @@ import {
38
enableSuspense,
39
enableSchedulerTracing,
40
} from 'shared/ReactFeatureFlags';
41
-import {StrictMode, AsyncMode} from './ReactTypeOfMode';
41
+import {StrictMode, ConcurrentMode} from './ReactTypeOfMode';
42
43
import {createCapturedValue} from './ReactCapturedValue';
44
import {
@@ -211,10 +211,10 @@ function throwException(
211
if (!didTimeout) {
212
// Found the nearest boundary.
213
214
- // If the boundary is not in async mode, we should not suspend, and
214
+ // If the boundary is not in concurrent mode, we should not suspend, and
215
// likewise, when the promise resolves, we should ping synchronously.
216
const pingTime =
217
- (workInProgress.mode & AsyncMode) === NoEffect
217
+ (workInProgress.mode & ConcurrentMode) === NoEffect
218
? Sync
219
: renderExpirationTime;
220
packages/react-reconciler/src/ReactTypeOfMode.js
+1
-1
@@ -10,6 +10,6 @@
10
export type TypeOfMode = number;
11
12
export const NoContext = 0b000;
13
-export const AsyncMode = 0b001;
13
+export const ConcurrentMode = 0b001;
14
export const StrictMode = 0b010;
15
export const ProfileMode = 0b100;
packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js
+3
-3
@@ -186,14 +186,14 @@ describe('ReactDebugFiberPerf', () => {
186
expect(getFlameChart()).toMatchSnapshot();
187
});
188
189
- it('does not include AsyncMode, StrictMode, or Profiler components in measurements', () => {
189
+ it('does not include ConcurrentMode, StrictMode, or Profiler components in measurements', () => {
190
ReactNoop.render(
191
<React.unstable_Profiler id="test" onRender={jest.fn()}>
192
<React.StrictMode>
193
<Parent>
194
- <React.unstable_AsyncMode>
194
+ <React.unstable_ConcurrentMode>
195
<Child />
196
- </React.unstable_AsyncMode>
196
+ </React.unstable_ConcurrentMode>
197
</Parent>
198
</React.StrictMode>
199
</React.unstable_Profiler>,
packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
+12
-12
@@ -5,7 +5,7 @@ let ReactNoop;
5
let SimpleCacheProvider;
6
let Placeholder;
7
let StrictMode;
8
-let AsyncMode;
8
+let ConcurrentMode;
9
let lazy;
10
11
let cache;
@@ -25,7 +25,7 @@ describe('ReactSuspense', () => {
25
SimpleCacheProvider = require('simple-cache-provider');
26
Placeholder = React.Placeholder;
27
StrictMode = React.StrictMode;
28
- AsyncMode = React.unstable_AsyncMode;
28
+ ConcurrentMode = React.unstable_ConcurrentMode;
29
lazy = React.lazy;
30
31
function invalidateCache() {
@@ -927,10 +927,10 @@ describe('ReactSuspense', () => {
927
function App() {
928
return (
929
<Placeholder delayMs={1000} fallback={<Spinner />}>
930
- <AsyncMode>
930
+ <ConcurrentMode>
931
<UpdatingText ref={text} />
932
<Text text="Sibling" />
933
- </AsyncMode>
933
+ </ConcurrentMode>
934
</Placeholder>
935
);
936
}
@@ -1004,7 +1004,7 @@ describe('ReactSuspense', () => {
1004
return (
1005
<StrictMode>
1006
<Placeholder delayMs={1000} fallback={<Text text="Loading..." />}>
1007
- <AsyncMode>
1007
+ <ConcurrentMode>
1008
<UpdatingText ref={text1} initialText="Async: 1">
1009
{text => (
1010
<Fragment>
@@ -1014,9 +1014,9 @@ describe('ReactSuspense', () => {
1014
</Fragment>
1015
)}
1016
</UpdatingText>
1017
- </AsyncMode>
1017
+ </ConcurrentMode>
1018
</Placeholder>
1019
- <AsyncMode>
1019
+ <ConcurrentMode>
1020
<UpdatingText ref={text2} initialText="Sync: 1">
1021
{text => (
1022
<Fragment>
@@ -1026,7 +1026,7 @@ describe('ReactSuspense', () => {
1026
</Fragment>
1027
)}
1028
</UpdatingText>
1029
- </AsyncMode>
1029
+ </ConcurrentMode>
1030
</StrictMode>
1031
);
1032
}
@@ -1136,7 +1136,7 @@ describe('ReactSuspense', () => {
1136
return (
1137
<Fragment>
1138
<Placeholder delayMs={1000} fallback={<Text text="Loading..." />}>
1139
- <AsyncMode>
1139
+ <ConcurrentMode>
1140
<UpdatingText ref={text1} initialText="Async: 1">
1141
{text => (
1142
<Fragment>
@@ -1146,9 +1146,9 @@ describe('ReactSuspense', () => {
1146
</Fragment>
1147
)}
1148
</UpdatingText>
1149
- </AsyncMode>
1149
+ </ConcurrentMode>
1150
</Placeholder>
1151
- <AsyncMode>
1151
+ <ConcurrentMode>
1152
<UpdatingText ref={text2} initialText="Sync: 1">
1153
{text => (
1154
<Fragment>
@@ -1158,7 +1158,7 @@ describe('ReactSuspense', () => {
1158
</Fragment>
1159
)}
1160
</UpdatingText>
1161
- </AsyncMode>
1161
+ </ConcurrentMode>
1162
</Fragment>
1163
);
1164
}
packages/react-reconciler/src/__tests__/__snapshots__/ReactIncrementalPerf-test.internal.js.snap
+1
-1
@@ -91,7 +91,7 @@ exports[`ReactDebugFiberPerf deduplicates lifecycle names during commit to reduc
91
"
92
`;
93
94
-exports[`ReactDebugFiberPerf does not include AsyncMode, StrictMode, or Profiler components in measurements 1`] = `
94
+exports[`ReactDebugFiberPerf does not include ConcurrentMode, StrictMode, or Profiler components in measurements 1`] = `
95
"⚛ (Waiting for async callback... will force flush in 5250 ms)
96
97
// Mount
packages/react-test-renderer/src/ReactTestRenderer.js
+5
-5
@@ -39,7 +39,7 @@ import * as TestRendererScheduling from './ReactTestRendererScheduling';
39
40
type TestRendererOptions = {
41
createNodeMock: (element: React$Element<any>) => any,
42
- unstable_isAsync: boolean,
42
+ unstable_isConcurrent: boolean,
43
};
44
45
type ReactTestRendererJSON = {|
@@ -419,13 +419,13 @@ function propsMatch(props: Object, filter: Object): boolean {
419
const ReactTestRendererFiber = {
420
create(element: React$Element<any>, options: TestRendererOptions) {
421
let createNodeMock = defaultTestOptions.createNodeMock;
422
- let isAsync = false;
422
+ let isConcurrent = false;
423
if (typeof options === 'object' && options !== null) {
424
if (typeof options.createNodeMock === 'function') {
425
createNodeMock = options.createNodeMock;
426
}
427
- if (options.unstable_isAsync === true) {
428
- isAsync = true;
427
+ if (options.unstable_isConcurrent === true) {
428
+ isConcurrent = true;
429
}
430
}
431
let container = {
@@ -435,7 +435,7 @@ const ReactTestRendererFiber = {
435
};
436
let root: FiberRoot | null = TestRenderer.createContainer(
437
container,
438
- isAsync,
438
+ isConcurrent,
439
false,
440
);
441
invariant(root != null, 'something went wrong');
packages/react-test-renderer/src/__tests__/ReactTestRendererAsync-test.js
+7
-7
@@ -25,7 +25,7 @@ describe('ReactTestRendererAsync', () => {
25
return props.children;
26
}
27
const renderer = ReactTestRenderer.create(<Foo>Hi</Foo>, {
28
- unstable_isAsync: true,
28
+ unstable_isConcurrent: true,
29
});
30
31
// Before flushing, nothing has mounted.
@@ -59,7 +59,7 @@ describe('ReactTestRendererAsync', () => {
59
);
60
}
61
const renderer = ReactTestRenderer.create(<Parent step={1} />, {
62
- unstable_isAsync: true,
62
+ unstable_isConcurrent: true,
63
});
64
65
expect(renderer).toFlushAll(['A:1', 'B:1', 'C:1']);
@@ -85,7 +85,7 @@ describe('ReactTestRendererAsync', () => {
85
);
86
}
87
const renderer = ReactTestRenderer.create(<Parent step={1} />, {
88
- unstable_isAsync: true,
88
+ unstable_isConcurrent: true,
89
});
90
91
// Flush the first two siblings
@@ -122,7 +122,7 @@ describe('ReactTestRendererAsync', () => {
122
}
123
124
const renderer = ReactTestRenderer.create(<Example step={1} />, {
125
- unstable_isAsync: true,
125
+ unstable_isConcurrent: true,
126
});
127
128
// Flush the some of the changes, but don't commit
@@ -152,7 +152,7 @@ describe('ReactTestRendererAsync', () => {
152
<Yield id="baz" />
153
</div>,
154
{
155
- unstable_isAsync: true,
155
+ unstable_isConcurrent: true,
156
},
157
);
158
@@ -174,7 +174,7 @@ describe('ReactTestRendererAsync', () => {
174
<Yield id="baz" />
175
</div>,
176
{
177
- unstable_isAsync: true,
177
+ unstable_isConcurrent: true,
178
},
179
);
180
@@ -218,7 +218,7 @@ describe('ReactTestRendererAsync', () => {
218
}
219
220
const renderer = ReactTestRenderer.create(<App />, {
221
- unstable_isAsync: true,
221
+ unstable_isConcurrent: true,
222
});
223
224
expect(() => {
packages/react/src/React.js
+2
-2
@@ -7,7 +7,7 @@
7
8
import ReactVersion from 'shared/ReactVersion';
9
import {
10
- REACT_ASYNC_MODE_TYPE,
10
+ REACT_CONCURRENT_MODE_TYPE,
11
REACT_FRAGMENT_TYPE,
12
REACT_PROFILER_TYPE,
13
REACT_STRICT_MODE_TYPE,
@@ -52,7 +52,7 @@ const React = {
52
53
Fragment: REACT_FRAGMENT_TYPE,
54
StrictMode: REACT_STRICT_MODE_TYPE,
55
- unstable_AsyncMode: REACT_ASYNC_MODE_TYPE,
55
+ unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,
56
unstable_Profiler: REACT_PROFILER_TYPE,
57
58
createElement: __DEV__ ? createElementWithValidation : createElement,
packages/react/src/__tests__/ReactProfiler-test.internal.js
+18
-18
@@ -223,7 +223,7 @@ describe('Profiler', () => {
223
<Yield value="last" />
224
</React.unstable_Profiler>,
225
{
226
- unstable_isAsync: true,
226
+ unstable_isConcurrent: true,
227
},
228
);
229
@@ -578,7 +578,7 @@ describe('Profiler', () => {
578
<Yield renderTime={2} />
579
<Yield renderTime={3} />
580
</React.unstable_Profiler>,
581
- {unstable_isAsync: true},
581
+ {unstable_isConcurrent: true},
582
);
583
expect(renderer).toFlushThrough(['Yield:2']);
584
expect(callback).toHaveBeenCalledTimes(0);
@@ -616,7 +616,7 @@ describe('Profiler', () => {
616
<Yield renderTime={17} />
617
</React.unstable_Profiler>
618
</React.unstable_Profiler>,
619
- {unstable_isAsync: true},
619
+ {unstable_isConcurrent: true},
620
);
621
expect(renderer).toFlushThrough(['Yield:5']);
622
expect(callback).toHaveBeenCalledTimes(0);
@@ -663,7 +663,7 @@ describe('Profiler', () => {
663
<Yield renderTime={10} />
664
<Yield renderTime={20} />
665
</React.unstable_Profiler>,
666
- {unstable_isAsync: true},
666
+ {unstable_isConcurrent: true},
667
);
668
expect(renderer).toFlushThrough(['Yield:10']);
669
expect(callback).toHaveBeenCalledTimes(0);
@@ -714,7 +714,7 @@ describe('Profiler', () => {
714
<Yield renderTime={6} />
715
<Yield renderTime={15} />
716
</React.unstable_Profiler>,
717
- {unstable_isAsync: true},
717
+ {unstable_isConcurrent: true},
718
);
719
720
// Render everything initially.
@@ -820,7 +820,7 @@ describe('Profiler', () => {
820
<FirstComponent />
821
<SecondComponent />
822
</React.unstable_Profiler>,
823
- {unstable_isAsync: true},
823
+ {unstable_isConcurrent: true},
824
);
825
826
// Render everything initially.
@@ -1295,7 +1295,7 @@ describe('Profiler', () => {
1295
expect(() => {
1296
SchedulerTracing.unstable_trace('event', mockNow(), () => {
1297
renderer = ReactTestRenderer.create(<Component>fail</Component>, {
1298
- unstable_isAsync: true,
1298
+ unstable_isConcurrent: true,
1299
});
1300
});
1301
}).toThrow('Expected error onWorkScheduled');
@@ -1304,7 +1304,7 @@ describe('Profiler', () => {
1304
1305
// But should not leave React in a broken state for subsequent renders.
1306
renderer = ReactTestRenderer.create(<Component>succeed</Component>, {
1307
- unstable_isAsync: true,
1307
+ unstable_isConcurrent: true,
1308
});
1309
expect(renderer).toFlushAll(['Component:succeed']);
1310
const tree = renderer.toTree();
@@ -1321,7 +1321,7 @@ describe('Profiler', () => {
1321
let renderer;
1322
SchedulerTracing.unstable_trace('event', mockNow(), () => {
1323
renderer = ReactTestRenderer.create(<Component>text</Component>, {
1324
- unstable_isAsync: true,
1324
+ unstable_isConcurrent: true,
1325
});
1326
});
1327
onWorkStarted.mockClear();
@@ -1350,7 +1350,7 @@ describe('Profiler', () => {
1350
let renderer;
1351
SchedulerTracing.unstable_trace('event', mockNow(), () => {
1352
renderer = ReactTestRenderer.create(<Component>text</Component>, {
1353
- unstable_isAsync: true,
1353
+ unstable_isConcurrent: true,
1354
});
1355
});
1356
expect(onInteractionScheduledWorkCompleted).not.toHaveBeenCalled();
@@ -1393,7 +1393,7 @@ describe('Profiler', () => {
1393
SchedulerTracing.unstable_trace(eventOne.name, mockNow(), () => {
1394
SchedulerTracing.unstable_trace(eventTwo.name, mockNow(), () => {
1395
renderer = ReactTestRenderer.create(<Component>text</Component>, {
1396
- unstable_isAsync: true,
1396
+ unstable_isConcurrent: true,
1397
});
1398
});
1399
});
@@ -1482,7 +1482,7 @@ describe('Profiler', () => {
1482
<Example />
1483
</React.unstable_Profiler>,
1484
{
1485
- unstable_isAsync: true,
1485
+ unstable_isConcurrent: true,
1486
},
1487
);
1488
},
@@ -1723,7 +1723,7 @@ describe('Profiler', () => {
1723
<FirstComponent />
1724
<SecondComponent />
1725
</React.unstable_Profiler>,
1726
- {unstable_isAsync: true},
1726
+ {unstable_isConcurrent: true},
1727
);
1728
1729
// Initial mount.
@@ -1897,7 +1897,7 @@ describe('Profiler', () => {
1897
<React.unstable_Profiler id="test" onRender={onRender}>
1898
<Example />
1899
</React.unstable_Profiler>,
1900
- {unstable_isAsync: true},
1900
+ {unstable_isConcurrent: true},
1901
);
1902
});
1903
@@ -2102,7 +2102,7 @@ describe('Profiler', () => {
2102
advanceTimeBy(1);
2103
2104
const renderer = ReactTestRenderer.create(<Parent />, {
2105
- unstable_isAsync: true,
2105
+ unstable_isConcurrent: true,
2106
});
2107
renderer.unstable_flushAll(['Child:0']);
2108
onRender.mockClear();
@@ -2413,7 +2413,7 @@ describe('Profiler', () => {
2413
</React.Placeholder>
2414
</React.unstable_Profiler>,
2415
{
2416
- unstable_isAsync: true,
2416
+ unstable_isConcurrent: true,
2417
},
2418
);
2419
},
@@ -2456,7 +2456,7 @@ describe('Profiler', () => {
2456
<AsyncText text="loaded" ms={1000} />
2457
</React.Placeholder>
2458
</React.unstable_Profiler>,
2459
- {unstable_isAsync: true},
2459
+ {unstable_isConcurrent: true},
2460
);
2461
},
2462
);
@@ -2587,7 +2587,7 @@ describe('Profiler', () => {
2587
</React.Placeholder>
2588
<Text text="initial" />
2589
</React.unstable_Profiler>,
2590
- {unstable_isAsync: true},
2590
+ {unstable_isConcurrent: true},
2591
);
2592
},
2593
);
packages/react/src/__tests__/ReactStrictMode-test.internal.js
+16
-16
@@ -313,9 +313,9 @@ describe('ReactStrictMode', () => {
313
UNSAFE_componentWillReceiveProps() {}
314
render() {
315
return (
316
- <React.unstable_AsyncMode>
316
+ <React.unstable_ConcurrentMode>
317
<AsyncRoot />
318
- </React.unstable_AsyncMode>
318
+ </React.unstable_ConcurrentMode>
319
);
320
}
321
}
@@ -357,7 +357,7 @@ describe('ReactStrictMode', () => {
357
rendered = ReactTestRenderer.create(<SyncRoot />);
358
}).toWarnDev(
359
'Unsafe lifecycle methods were found within a strict-mode tree:' +
360
- '\n in AsyncMode (at **)' +
360
+ '\n in ConcurrentMode (at **)' +
361
'\n in SyncRoot (at **)' +
362
'\n\ncomponentWillMount: Please update the following components ' +
363
'to use componentDidMount instead: AsyncRoot' +
@@ -381,9 +381,9 @@ describe('ReactStrictMode', () => {
381
UNSAFE_componentWillReceiveProps() {}
382
render() {
383
return (
384
- <React.unstable_AsyncMode>
384
+ <React.unstable_ConcurrentMode>
385
<AsyncRoot />
386
- </React.unstable_AsyncMode>
386
+ </React.unstable_ConcurrentMode>
387
);
388
}
389
}
@@ -415,7 +415,7 @@ describe('ReactStrictMode', () => {
415
() => (rendered = ReactTestRenderer.create(<SyncRoot />)),
416
).toWarnDev(
417
'Unsafe lifecycle methods were found within a strict-mode tree:' +
418
- '\n in AsyncMode (at **)' +
418
+ '\n in ConcurrentMode (at **)' +
419
'\n in SyncRoot (at **)' +
420
'\n\ncomponentWillMount: Please update the following components ' +
421
'to use componentDidMount instead: AsyncRoot, Parent' +
@@ -449,22 +449,22 @@ describe('ReactStrictMode', () => {
449
class AsyncRootOne extends React.Component {
450
render() {
451
return (
452
- <React.unstable_AsyncMode>
452
+ <React.unstable_ConcurrentMode>
453
<Foo>
454
<Bar />
455
</Foo>
456
- </React.unstable_AsyncMode>
456
+ </React.unstable_ConcurrentMode>
457
);
458
}
459
}
460
class AsyncRootTwo extends React.Component {
461
render() {
462
return (
463
- <React.unstable_AsyncMode>
463
+ <React.unstable_ConcurrentMode>
464
<Foo>
465
<Baz />
466
</Foo>
467
- </React.unstable_AsyncMode>
467
+ </React.unstable_ConcurrentMode>
468
);
469
}
470
}
@@ -493,14 +493,14 @@ describe('ReactStrictMode', () => {
493
() => (rendered = ReactTestRenderer.create(<SyncRoot />)),
494
).toWarnDev([
495
'Unsafe lifecycle methods were found within a strict-mode tree:' +
496
- '\n in AsyncMode (at **)' +
496
+ '\n in ConcurrentMode (at **)' +
497
'\n in AsyncRootOne (at **)' +
498
'\n in div (at **)' +
499
'\n in SyncRoot (at **)' +
500
'\n\ncomponentWillMount: Please update the following components ' +
501
'to use componentDidMount instead: Bar, Foo',
502
'Unsafe lifecycle methods were found within a strict-mode tree:' +
503
- '\n in AsyncMode (at **)' +
503
+ '\n in ConcurrentMode (at **)' +
504
'\n in AsyncRootTwo (at **)' +
505
'\n in div (at **)' +
506
'\n in SyncRoot (at **)' +
@@ -517,9 +517,9 @@ describe('ReactStrictMode', () => {
517
class AsyncRoot extends React.Component {
518
render() {
519
return (
520
- <React.unstable_AsyncMode>
520
+ <React.unstable_ConcurrentMode>
521
{this.props.foo ? <Foo /> : <Bar />}
522
- </React.unstable_AsyncMode>
522
+ </React.unstable_ConcurrentMode>
523
);
524
}
525
}
@@ -541,7 +541,7 @@ describe('ReactStrictMode', () => {
541
rendered = ReactTestRenderer.create(<AsyncRoot foo={true} />);
542
}).toWarnDev(
543
'Unsafe lifecycle methods were found within a strict-mode tree:' +
544
- '\n in AsyncMode (at **)' +
544
+ '\n in ConcurrentMode (at **)' +
545
'\n in AsyncRoot (at **)' +
546
'\n\ncomponentWillMount: Please update the following components ' +
547
'to use componentDidMount instead: Foo' +
@@ -551,7 +551,7 @@ describe('ReactStrictMode', () => {
551
552
expect(() => rendered.update(<AsyncRoot foo={false} />)).toWarnDev(
553
'Unsafe lifecycle methods were found within a strict-mode tree:' +
554
- '\n in AsyncMode (at **)' +
554
+ '\n in ConcurrentMode (at **)' +
555
'\n in AsyncRoot (at **)' +
556
'\n\ncomponentWillMount: Please update the following components ' +
557
'to use componentDidMount instead: Bar' +
packages/shared/ReactSymbols.js
+2
-2
@@ -32,8 +32,8 @@ export const REACT_PROVIDER_TYPE = hasSymbol
32
export const REACT_CONTEXT_TYPE = hasSymbol
33
? Symbol.for('react.context')
34
: 0xeace;
35
-export const REACT_ASYNC_MODE_TYPE = hasSymbol
36
- ? Symbol.for('react.async_mode')
35
+export const REACT_CONCURRENT_MODE_TYPE = hasSymbol
36
+ ? Symbol.for('react.concurrent_mode')
37
: 0xeacf;
38
export const REACT_FORWARD_REF_TYPE = hasSymbol
39
? Symbol.for('react.forward_ref')
packages/shared/getComponentName.js
+3
-3
@@ -11,7 +11,7 @@ import type {Thenable} from 'shared/ReactLazyComponent';
11
12
import warningWithoutStack from 'shared/warningWithoutStack';
13
import {
14
- REACT_ASYNC_MODE_TYPE,
14
+ REACT_CONCURRENT_MODE_TYPE,
15
REACT_CONTEXT_TYPE,
16
REACT_FORWARD_REF_TYPE,
17
REACT_FRAGMENT_TYPE,
@@ -44,8 +44,8 @@ function getComponentName(type: mixed): string | null {
44
return type;
45
}
46
switch (type) {
47
- case REACT_ASYNC_MODE_TYPE:
48
- return 'AsyncMode';
47
+ case REACT_CONCURRENT_MODE_TYPE:
48
+ return 'ConcurrentMode';
49
case REACT_FRAGMENT_TYPE:
50
return 'Fragment';
51
case REACT_PORTAL_TYPE:
packages/shared/isValidElementType.js
+2
-2
@@ -8,7 +8,7 @@
8
*/
9
10
import {
11
- REACT_ASYNC_MODE_TYPE,
11
+ REACT_CONCURRENT_MODE_TYPE,
12
REACT_CONTEXT_TYPE,
13
REACT_FORWARD_REF_TYPE,
14
REACT_FRAGMENT_TYPE,
@@ -24,7 +24,7 @@ export default function isValidElementType(type: mixed) {
24
typeof type === 'function' ||
25
// Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
26
type === REACT_FRAGMENT_TYPE ||
27
- type === REACT_ASYNC_MODE_TYPE ||
27
+ type === REACT_CONCURRENT_MODE_TYPE ||
28
type === REACT_PROFILER_TYPE ||
29
type === REACT_STRICT_MODE_TYPE ||
30
type === REACT_PLACEHOLDER_TYPE ||