@samitouri / QOS-React-2 / commits / bfefb22842

Upgrade Server Actions to canary (#27459)

Upgrades the stability of Server Actions from experimental to canary. - Turns on enableAsyncActions and enableFormActions - Removes "experimental_" prefix from useOptimistic, useFormStatus, and useFormState

Andrew Clark committed Oct 4, 2023 at 14:51 UTC bfefb228422f7264a29b3a6b98ec95e05925e80e
28 files changed +40 -39
fixtures/flight-esm/src/Button.js
+1 -1
@@ -1,7 +1,7 @@
1 'use client';
2
3 import * as React from 'react';
4 -import {experimental_useFormStatus as useFormStatus} from 'react-dom';
4 +import {useFormStatus} from 'react-dom';
5 import ErrorBoundary from './ErrorBoundary.js';
6
7 const h = React.createElement;
fixtures/flight-esm/src/Form.js
+1 -1
@@ -1,7 +1,7 @@
1 'use client';
2
3 import * as React from 'react';
4 -import {experimental_useFormStatus as useFormStatus} from 'react-dom';
4 +import {useFormStatus} from 'react-dom';
5 import ErrorBoundary from './ErrorBoundary.js';
6
7 const h = React.createElement;
fixtures/flight/src/Button.js
+1 -1
@@ -1,7 +1,7 @@
1 'use client';
2
3 import * as React from 'react';
4 -import {experimental_useFormStatus as useFormStatus} from 'react-dom';
4 +import {useFormStatus} from 'react-dom';
5 import ErrorBoundary from './ErrorBoundary.js';
6
7 function ButtonDisabledWhilePending({action, children}) {
fixtures/flight/src/Counter.js
+1 -1
@@ -1,7 +1,7 @@
1 'use client';
2
3 import * as React from 'react';
4 -import {experimental_useFormState as useFormState} from 'react-dom';
4 +import {useFormState} from 'react-dom';
5
6 import Container from './Container.js';
7
fixtures/flight/src/Form.js
+1 -1
@@ -1,7 +1,7 @@
1 'use client';
2
3 import * as React from 'react';
4 -import {experimental_useFormStatus as useFormStatus} from 'react-dom';
4 +import {useFormStatus} from 'react-dom';
5 import ErrorBoundary from './ErrorBoundary.js';
6
7 function Status() {
packages/react-dom/index.classic.fb.js
+2 -2
@@ -31,8 +31,8 @@ export {
31 unstable_createEventHandle,
32 unstable_renderSubtreeIntoContainer,
33 unstable_runWithPriority, // DO NOT USE: Temporarily exposed to migrate off of Scheduler.runWithPriority.
34 - useFormStatus as experimental_useFormStatus,
35 - useFormState as experimental_useFormState,
34 + useFormStatus,
35 + useFormState,
36 prefetchDNS,
37 preconnect,
38 preload,
packages/react-dom/index.experimental.js
+2 -2
@@ -20,8 +20,8 @@ export {
20 unstable_batchedUpdates,
21 unstable_renderSubtreeIntoContainer,
22 unstable_runWithPriority, // DO NOT USE: Temporarily exposed to migrate off of Scheduler.runWithPriority.
23 - useFormStatus as experimental_useFormStatus,
24 - useFormState as experimental_useFormState,
23 + useFormStatus,
24 + useFormState,
25 prefetchDNS,
26 preconnect,
27 preload,
packages/react-dom/index.js
+2 -2
@@ -23,8 +23,8 @@ export {
23 unstable_createEventHandle,
24 unstable_renderSubtreeIntoContainer,
25 unstable_runWithPriority, // DO NOT USE: Temporarily exposed to migrate off of Scheduler.runWithPriority.
26 - useFormStatus as experimental_useFormStatus,
27 - useFormState as experimental_useFormState,
26 + useFormStatus,
27 + useFormState,
28 prefetchDNS,
29 preconnect,
30 preload,
packages/react-dom/index.modern.fb.js
+2 -2
@@ -16,8 +16,8 @@ export {
16 unstable_batchedUpdates,
17 unstable_createEventHandle,
18 unstable_runWithPriority, // DO NOT USE: Temporarily exposed to migrate off of Scheduler.runWithPriority.
19 - useFormStatus as experimental_useFormStatus,
20 - useFormState as experimental_useFormState,
19 + useFormStatus,
20 + useFormState,
21 prefetchDNS,
22 preconnect,
23 preload,
packages/react-dom/index.stable.js
+2
@@ -19,6 +19,8 @@ export {
19 unmountComponentAtNode,
20 unstable_batchedUpdates,
21 unstable_renderSubtreeIntoContainer,
22 + useFormStatus,
23 + useFormState,
24 prefetchDNS,
25 preconnect,
26 preload,
packages/react-dom/server-rendering-stub.js
+2 -2
@@ -24,7 +24,7 @@ export {
24 preloadModule,
25 preinit,
26 preinitModule,
27 - experimental_useFormStatus,
28 - experimental_useFormState,
27 + useFormStatus,
28 + useFormState,
29 unstable_batchedUpdates,
30 } from './src/server/ReactDOMServerRenderingStub';
packages/react-dom/src/__tests__/ReactDOMFizzForm-test.js
+3 -3
@@ -31,9 +31,9 @@ describe('ReactDOMFizzForm', () => {
31 React = require('react');
32 ReactDOMServer = require('react-dom/server.browser');
33 ReactDOMClient = require('react-dom/client');
34 - useFormStatus = require('react-dom').experimental_useFormStatus;
35 - useFormState = require('react-dom').experimental_useFormState;
36 - useOptimistic = require('react').experimental_useOptimistic;
34 + useFormStatus = require('react-dom').useFormStatus;
35 + useFormState = require('react-dom').useFormState;
36 + useOptimistic = require('react').useOptimistic;
37 act = require('internal-test-utils').act;
38 container = document.createElement('div');
39 document.body.appendChild(container);
packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js
+1 -1
@@ -89,7 +89,7 @@ describe('ReactDOMFizzServer', () => {
89 if (gate(flags => flags.enableSuspenseList)) {
90 SuspenseList = React.unstable_SuspenseList;
91 }
92 - useFormState = ReactDOM.experimental_useFormState;
92 + useFormState = ReactDOM.useFormState;
93
94 PropTypes = require('prop-types');
95
packages/react-dom/src/__tests__/ReactDOMForm-test.js
+2 -2
@@ -55,8 +55,8 @@ describe('ReactDOMForm', () => {
55 useState = React.useState;
56 Suspense = React.Suspense;
57 startTransition = React.startTransition;
58 - useFormStatus = ReactDOM.experimental_useFormStatus;
59 - useFormState = ReactDOM.experimental_useFormState;
58 + useFormStatus = ReactDOM.useFormStatus;
59 + useFormState = ReactDOM.useFormState;
60 container = document.createElement('div');
61 document.body.appendChild(container);
62
packages/react-dom/src/__tests__/react-dom-server-rendering-stub-test.js
+2 -2
@@ -85,9 +85,9 @@ describe('react-dom-server-rendering-stub', () => {
85
86 // @gate enableFormActions
87 // @gate enableAsyncActions
88 - it('exports experimental_useFormStatus', async () => {
88 + it('exports useFormStatus', async () => {
89 function App() {
90 - const {pending} = ReactDOM.experimental_useFormStatus();
90 + const {pending} = ReactDOM.useFormStatus();
91 return 'Pending: ' + pending;
92 }
93
packages/react-dom/src/server/ReactDOMServerRenderingStub.js
+2 -2
@@ -16,8 +16,8 @@ export {
16 prefetchDNS,
17 } from '../shared/ReactDOMFloat';
18 export {
19 - useFormStatus as experimental_useFormStatus,
20 - useFormState as experimental_useFormState,
19 + useFormStatus,
20 + useFormState,
21 } from 'react-dom-bindings/src/shared/ReactDOMFormActions';
22
23 export function createPortal() {
packages/react-reconciler/src/__tests__/ReactAsyncActions-test.js
+1 -1
@@ -19,7 +19,7 @@ describe('ReactAsyncActions', () => {
19 assertLog = require('internal-test-utils').assertLog;
20 useTransition = React.useTransition;
21 useState = React.useState;
22 - useOptimistic = React.experimental_useOptimistic;
22 + useOptimistic = React.useOptimistic;
23
24 textCache = new Map();
25 });
packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMForm-test.js
+1 -1
@@ -55,7 +55,7 @@ describe('ReactFlightDOMForm', () => {
55 ReactDOMServer = require('react-dom/server.edge');
56 ReactDOMClient = require('react-dom/client');
57 act = require('react-dom/test-utils').act;
58 - useFormState = require('react-dom').experimental_useFormState;
58 + useFormState = require('react-dom').useFormState;
59 container = document.createElement('div');
60 document.body.appendChild(container);
61 });
packages/react/index.classic.fb.js
+1 -1
@@ -52,7 +52,7 @@ export {
52 useLayoutEffect,
53 useInsertionEffect,
54 useMemo,
55 - experimental_useOptimistic,
55 + useOptimistic,
56 useReducer,
57 useRef,
58 useState,
packages/react/index.experimental.js
+1 -1
@@ -50,7 +50,7 @@ export {
50 useInsertionEffect,
51 useLayoutEffect,
52 useMemo,
53 - experimental_useOptimistic,
53 + useOptimistic,
54 useReducer,
55 useRef,
56 useState,
packages/react/index.js
+1 -1
@@ -75,7 +75,7 @@ export {
75 useInsertionEffect,
76 useLayoutEffect,
77 useMemo,
78 - experimental_useOptimistic,
78 + useOptimistic,
79 useSyncExternalStore,
80 useReducer,
81 useRef,
packages/react/index.modern.fb.js
+1 -1
@@ -50,7 +50,7 @@ export {
50 useInsertionEffect,
51 useLayoutEffect,
52 useMemo,
53 - experimental_useOptimistic,
53 + useOptimistic,
54 useReducer,
55 useRef,
56 useState,
packages/react/index.stable.js
+1
@@ -42,6 +42,7 @@ export {
42 useLayoutEffect,
43 useMemo,
44 useReducer,
45 + useOptimistic,
46 useRef,
47 useState,
48 useSyncExternalStore,
packages/react/src/React.js
+1 -1
@@ -111,7 +111,7 @@ export {
111 useInsertionEffect,
112 useLayoutEffect,
113 useMemo,
114 - useOptimistic as experimental_useOptimistic,
114 + useOptimistic,
115 useSyncExternalStore,
116 useReducer,
117 useRef,
packages/shared/ReactFeatureFlags.js
+2 -4
@@ -31,6 +31,8 @@ export const enableComponentStackLocations = true;
31
32 // TODO: Finish rolling out in www
33 export const enableClientRenderFallbackOnTextMismatch = true;
34 +export const enableFormActions = true;
35 +export const enableAsyncActions = true;
36
37 // Not sure if www still uses this. We don't have a replacement but whatever we
38 // replace it with will likely be different than what's already there, so we
@@ -82,8 +84,6 @@ export const enableLegacyCache = __EXPERIMENTAL__;
84 export const enableCacheElement = __EXPERIMENTAL__;
85 export const enableFetchInstrumentation = true;
86
85 -export const enableFormActions = __EXPERIMENTAL__;
86 -
87 export const enableBinaryFlight = __EXPERIMENTAL__;
88
89 export const enableTaint = __EXPERIMENTAL__;
@@ -120,8 +120,6 @@ export const enableUseEffectEventHook = __EXPERIMENTAL__;
120 // (handled with an MutationObserver) instead of inline-scripts
121 export const enableFizzExternalRuntime = true;
122
123 -export const enableAsyncActions = __EXPERIMENTAL__;
124 -
123 export const alwaysThrottleRetries = true;
124
125 export const useMicrotasksForSchedulingInFabric = false;
packages/shared/forks/ReactFeatureFlags.test-renderer.js
+1 -1
@@ -74,7 +74,7 @@ export const enableDO_NOT_USE_disableStrictPassiveEffect = false;
74 export const enableFizzExternalRuntime = false;
75 export const enableDeferRootSchedulingToMicrotask = true;
76
77 -export const enableAsyncActions = false;
77 +export const enableAsyncActions = true;
78
79 export const alwaysThrottleRetries = true;
80
packages/shared/forks/ReactFeatureFlags.test-renderer.native.js
+1 -1
@@ -71,7 +71,7 @@ export const useModernStrictMode = false;
71 export const enableDO_NOT_USE_disableStrictPassiveEffect = false;
72 export const enableDeferRootSchedulingToMicrotask = true;
73
74 -export const enableAsyncActions = false;
74 +export const enableAsyncActions = true;
75
76 export const alwaysThrottleRetries = true;
77
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+1 -1
@@ -74,7 +74,7 @@ export const enableDO_NOT_USE_disableStrictPassiveEffect = false;
74 export const enableFizzExternalRuntime = false;
75 export const enableDeferRootSchedulingToMicrotask = true;
76
77 -export const enableAsyncActions = false;
77 +export const enableAsyncActions = true;
78
79 export const alwaysThrottleRetries = true;
80