Skip to content

Commit 01d97df

Browse files
rickhanloniiAndyPengc12
authored andcommitted
Update error messages (facebook#28652)
## Overview The error messages that say: > ReactDOM.hydrate is no longer supported in React 18 Don't make sense in the React 19 release. Instead, they should say: > ReactDOM.hydrate was removed in React 19. For legacy mode, they should say: > ReactDOM.hydrate has not been supported since React 18.
1 parent 3fc74dd commit 01d97df

21 files changed

+124
-65
lines changed

packages/react-devtools-shared/src/__tests__/inspectedElement-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2159,7 +2159,7 @@ describe('InspectedElement', () => {
21592159
const container = document.createElement('div');
21602160
container.innerHTML = '<div></div>';
21612161
withErrorsOrWarningsIgnored(
2162-
['ReactDOM.hydrate is no longer supported in React 18'],
2162+
['ReactDOM.hydrate has not been supported since React 18'],
21632163
() => {
21642164
ReactDOM.hydrate(<Example />, container);
21652165
},

packages/react-devtools-shared/src/__tests__/utils.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export function getLegacyRenderImplementation(): RenderImplementation {
151151

152152
function render(elements) {
153153
withErrorsOrWarningsIgnored(
154-
['ReactDOM.render is no longer supported in React 18'],
154+
['ReactDOM.render has not been supported since React 18'],
155155
() => {
156156
ReactDOM.render(elements, container);
157157
},
@@ -340,7 +340,7 @@ export function legacyRender(elements, container) {
340340

341341
const ReactDOM = require('react-dom');
342342
withErrorsOrWarningsIgnored(
343-
['ReactDOM.render is no longer supported in React 18'],
343+
['ReactDOM.render has not been supported since React 18'],
344344
() => {
345345
ReactDOM.render(elements, container);
346346
},

packages/react-devtools-shell/src/app/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ ignoreErrors([
3030
'Warning: Legacy context API',
3131
'Warning: Unsafe lifecycle methods',
3232
'Warning: %s is deprecated in StrictMode.', // findDOMNode
33-
'Warning: ReactDOM.render is no longer supported in React 18',
33+
'Warning: ReactDOM.render was removed in React 19',
3434
]);
3535
ignoreWarnings(['Warning: componentWillReceiveProps has been renamed']);
3636
ignoreLogs([]);

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

Lines changed: 70 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
9393
],
9494
]);
9595
expect(console.error.mock.calls).toEqual([
96-
[expect.stringContaining('ReactDOM.render is no longer supported')],
96+
[
97+
expect.stringContaining(
98+
'ReactDOM.render has not been supported since React 18',
99+
),
100+
],
97101
[
98102
// Reported because we're in a browser click event:
99103
expect.objectContaining({
@@ -136,7 +140,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
136140
expect(windowOnError.mock.calls).toEqual([]);
137141
if (__DEV__) {
138142
expect(console.error.mock.calls).toEqual([
139-
[expect.stringContaining('ReactDOM.render is no longer supported')],
143+
[
144+
expect.stringContaining(
145+
'ReactDOM.render has not been supported since React 18',
146+
),
147+
],
140148
]);
141149
}
142150

@@ -157,7 +165,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
157165

158166
if (__DEV__) {
159167
expect(console.error.mock.calls).toEqual([
160-
[expect.stringContaining('ReactDOM.render is no longer supported')],
168+
[
169+
expect.stringContaining(
170+
'ReactDOM.render has not been supported since React 18',
171+
),
172+
],
161173
[
162174
// Formatting
163175
expect.stringContaining('%o'),
@@ -196,7 +208,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
196208
expect(windowOnError.mock.calls).toEqual([]);
197209
if (__DEV__) {
198210
expect(console.error.mock.calls).toEqual([
199-
[expect.stringContaining('ReactDOM.render is no longer supported')],
211+
[
212+
expect.stringContaining(
213+
'ReactDOM.render has not been supported since React 18',
214+
),
215+
],
200216
]);
201217
}
202218
});
@@ -221,7 +237,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
221237
if (__DEV__) {
222238
expect(windowOnError.mock.calls).toEqual([]);
223239
expect(console.error.mock.calls).toEqual([
224-
[expect.stringContaining('ReactDOM.render is no longer supported')],
240+
[
241+
expect.stringContaining(
242+
'ReactDOM.render has not been supported since React 18',
243+
),
244+
],
225245
[
226246
// Formatting
227247
expect.stringContaining('%o'),
@@ -260,7 +280,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
260280
expect(windowOnError.mock.calls).toEqual([]);
261281
if (__DEV__) {
262282
expect(console.error.mock.calls).toEqual([
263-
[expect.stringContaining('ReactDOM.render is no longer supported')],
283+
[
284+
expect.stringContaining(
285+
'ReactDOM.render has not been supported since React 18',
286+
),
287+
],
264288
]);
265289
}
266290
});
@@ -283,7 +307,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
283307
if (__DEV__) {
284308
expect(windowOnError.mock.calls).toEqual([]);
285309
expect(console.error.mock.calls).toEqual([
286-
[expect.stringContaining('ReactDOM.render is no longer supported')],
310+
[
311+
expect.stringContaining(
312+
'ReactDOM.render has not been supported since React 18',
313+
),
314+
],
287315
[
288316
// Formatting
289317
expect.stringContaining('%o'),
@@ -322,7 +350,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
322350
expect(windowOnError.mock.calls).toEqual([]);
323351
if (__DEV__) {
324352
expect(console.error.mock.calls).toEqual([
325-
[expect.stringContaining('ReactDOM.render is no longer supported')],
353+
[
354+
expect.stringContaining(
355+
'ReactDOM.render has not been supported since React 18',
356+
),
357+
],
326358
]);
327359
}
328360
});
@@ -350,7 +382,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
350382
if (__DEV__) {
351383
expect(windowOnError.mock.calls).toEqual([]);
352384
expect(console.error.mock.calls).toEqual([
353-
[expect.stringContaining('ReactDOM.render is no longer supported')],
385+
[
386+
expect.stringContaining(
387+
'ReactDOM.render has not been supported since React 18',
388+
),
389+
],
354390
[
355391
// Formatting
356392
expect.stringContaining('%o'),
@@ -389,7 +425,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
389425
expect(windowOnError.mock.calls).toEqual([]);
390426
if (__DEV__) {
391427
expect(console.error.mock.calls).toEqual([
392-
[expect.stringContaining('ReactDOM.render is no longer supported')],
428+
[
429+
expect.stringContaining(
430+
'ReactDOM.render has not been supported since React 18',
431+
),
432+
],
393433
]);
394434
}
395435
});
@@ -413,7 +453,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
413453
if (__DEV__) {
414454
expect(windowOnError.mock.calls).toEqual([]);
415455
expect(console.error.mock.calls).toEqual([
416-
[expect.stringContaining('ReactDOM.render is no longer supported')],
456+
[
457+
expect.stringContaining(
458+
'ReactDOM.render has not been supported since React 18',
459+
),
460+
],
417461
[
418462
// Formatting
419463
expect.stringContaining('%o'),
@@ -452,7 +496,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
452496
expect(windowOnError.mock.calls).toEqual([]);
453497
if (__DEV__) {
454498
expect(console.error.mock.calls).toEqual([
455-
[expect.stringContaining('ReactDOM.render is no longer supported')],
499+
[
500+
expect.stringContaining(
501+
'ReactDOM.render has not been supported since React 18',
502+
),
503+
],
456504
]);
457505
}
458506
});
@@ -480,7 +528,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
480528
if (__DEV__) {
481529
expect(windowOnError.mock.calls).toEqual([]);
482530
expect(console.error.mock.calls).toEqual([
483-
[expect.stringContaining('ReactDOM.render is no longer supported')],
531+
[
532+
expect.stringContaining(
533+
'ReactDOM.render has not been supported since React 18',
534+
),
535+
],
484536
[
485537
// Formatting
486538
expect.stringContaining('%o'),
@@ -519,7 +571,11 @@ describe('ReactDOMConsoleErrorReporting', () => {
519571
expect(windowOnError.mock.calls).toEqual([]);
520572
if (__DEV__) {
521573
expect(console.error.mock.calls).toEqual([
522-
[expect.stringContaining('ReactDOM.render is no longer supported')],
574+
[
575+
expect.stringContaining(
576+
'ReactDOM.render has not been supported since React 18',
577+
),
578+
],
523579
]);
524580
}
525581
});

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,10 +1193,10 @@ describe('ReactDOMLegacyFiber', () => {
11931193
if (__DEV__) {
11941194
expect(console.error).toHaveBeenCalledTimes(2);
11951195
expect(console.error.mock.calls[0][0]).toMatch(
1196-
'ReactDOM.render is no longer supported in React 18',
1196+
'ReactDOM.render has not been supported since React 18',
11971197
);
11981198
expect(console.error.mock.calls[1][0]).toMatch(
1199-
'ReactDOM.render is no longer supported in React 18',
1199+
'ReactDOM.render has not been supported since React 18',
12001200
);
12011201
}
12021202
});

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -919,8 +919,8 @@ describe('ReactErrorBoundaries', () => {
919919
...gate(flags =>
920920
flags.disableLegacyContext
921921
? [
922-
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which is no longer supported. Use React.createContext() instead.',
923-
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which is no longer supported. Use React.createContext() instead.',
922+
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead.',
923+
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead.',
924924
]
925925
: [],
926926
),

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,11 @@ describe('ReactLegacyContextDisabled', () => {
9797
);
9898
});
9999
}).toErrorDev([
100-
'LegacyProvider uses the legacy childContextTypes API which is no longer supported. ' +
100+
'LegacyProvider uses the legacy childContextTypes API which was removed in React 19. ' +
101101
'Use React.createContext() instead.',
102-
'LegacyClsConsumer uses the legacy contextTypes API which is no longer supported. ' +
102+
'LegacyClsConsumer uses the legacy contextTypes API which was removed in React 19. ' +
103103
'Use React.createContext() with static contextType instead.',
104-
'LegacyFnConsumer uses the legacy contextTypes API which is no longer supported. ' +
104+
'LegacyFnConsumer uses the legacy contextTypes API which was removed in React 19. ' +
105105
'Use React.createContext() with React.useContext() instead.',
106106
]);
107107
expect(container.textContent).toBe('{}undefinedundefined');
@@ -137,11 +137,11 @@ describe('ReactLegacyContextDisabled', () => {
137137
container,
138138
);
139139
}).toErrorDev([
140-
'LegacyProvider uses the legacy childContextTypes API which is no longer supported. ' +
140+
'LegacyProvider uses the legacy childContextTypes API which was removed in React 19. ' +
141141
'Use React.createContext() instead.',
142-
'LegacyClsConsumer uses the legacy contextTypes API which is no longer supported. ' +
142+
'LegacyClsConsumer uses the legacy contextTypes API which was removed in React 19. ' +
143143
'Use React.createContext() with static contextType instead.',
144-
'LegacyFnConsumer uses the legacy contextTypes API which is no longer supported. ' +
144+
'LegacyFnConsumer uses the legacy contextTypes API which was removed in React 19. ' +
145145
'Use React.createContext() with React.useContext() instead.',
146146
]);
147147
expect(text).toBe('<span>{}<!-- -->undefined<!-- -->undefined</span>');

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ describe('ReactLegacyErrorBoundaries', () => {
684684
if (__DEV__) {
685685
expect(console.error).toHaveBeenCalledTimes(2);
686686
expect(console.error.mock.calls[0][0]).toContain(
687-
'ReactDOM.render is no longer supported',
687+
'ReactDOM.render has not been supported since React 18',
688688
);
689689
expect(console.error.mock.calls[1][2]).toContain(
690690
'The above error occurred in the <BrokenRender> component:',
@@ -869,8 +869,8 @@ describe('ReactLegacyErrorBoundaries', () => {
869869
...gate(flags =>
870870
flags.disableLegacyContext
871871
? [
872-
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which is no longer supported. Use React.createContext() instead.',
873-
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which is no longer supported. Use React.createContext() instead.',
872+
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead.',
873+
'Warning: BrokenComponentWillMountWithContext uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead.',
874874
]
875875
: [],
876876
),

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe('ReactDOMRoot', () => {
2222
if (__DEV__) {
2323
expect(console.error).toHaveBeenCalledTimes(1);
2424
expect(console.error.mock.calls[0][0]).toContain(
25-
'ReactDOM.render is no longer supported',
25+
'ReactDOM.render has not been supported since React 18',
2626
);
2727
}
2828
});
@@ -37,7 +37,7 @@ describe('ReactDOMRoot', () => {
3737
if (__DEV__) {
3838
expect(console.error).toHaveBeenCalledTimes(1);
3939
expect(console.error.mock.calls[0][0]).toContain(
40-
'ReactDOM.hydrate is no longer supported',
40+
'ReactDOM.hydrate has not been supported since React 18',
4141
);
4242
}
4343
});

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ describe('renderSubtreeIntoContainer', () => {
5454
renderSubtreeIntoContainer(this, <Component />, portal);
5555
}.bind(this),
5656
).toErrorDev(
57-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
57+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
5858
);
5959
}
6060
}
@@ -107,15 +107,15 @@ describe('renderSubtreeIntoContainer', () => {
107107
expect(() => {
108108
renderSubtreeIntoContainer(this, <Component />, portal);
109109
}).toErrorDev(
110-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
110+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
111111
);
112112
}
113113

114114
componentDidUpdate() {
115115
expect(() => {
116116
renderSubtreeIntoContainer(this, <Component />, portal);
117117
}).toErrorDev(
118-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
118+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
119119
);
120120
}
121121
}
@@ -172,15 +172,15 @@ describe('renderSubtreeIntoContainer', () => {
172172
expect(() => {
173173
renderSubtreeIntoContainer(this, <Component />, portal);
174174
}).toErrorDev(
175-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
175+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
176176
);
177177
}
178178

179179
componentDidUpdate() {
180180
expect(() => {
181181
renderSubtreeIntoContainer(this, <Component />, portal);
182182
}).toErrorDev(
183-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
183+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
184184
);
185185
}
186186
}
@@ -211,7 +211,7 @@ describe('renderSubtreeIntoContainer', () => {
211211
expect(() => {
212212
renderSubtreeIntoContainer(this, <div>hello</div>, portal);
213213
}).toErrorDev(
214-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
214+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
215215
);
216216
}
217217
}
@@ -250,7 +250,7 @@ describe('renderSubtreeIntoContainer', () => {
250250
expect(() => {
251251
renderSubtreeIntoContainer(this, <Child />, portal);
252252
}).toErrorDev(
253-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
253+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
254254
);
255255
}
256256
}
@@ -290,7 +290,7 @@ describe('renderSubtreeIntoContainer', () => {
290290
expect(() => {
291291
renderSubtreeIntoContainer(this, <Middle />, portal1);
292292
}).toErrorDev(
293-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
293+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
294294
);
295295
}
296296
static childContextTypes = {
@@ -306,7 +306,7 @@ describe('renderSubtreeIntoContainer', () => {
306306
expect(() => {
307307
renderSubtreeIntoContainer(this, <Child />, portal2);
308308
}).toErrorDev(
309-
'ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported',
309+
'ReactDOM.unstable_renderSubtreeIntoContainer() has not been supported since React 18',
310310
);
311311
}
312312
}

0 commit comments

Comments
 (0)