Skip to content

Commit 22e1f03

Browse files
committed
useFormState and useFormStatus are no longer experimental APIs and exist in canary and experimental builds without the experimental_ prefix. This commit updates our docs, examples, and tests to reflect this.
1 parent 57e78b1 commit 22e1f03

File tree

15 files changed

+28
-38
lines changed

15 files changed

+28
-38
lines changed

docs/02-app/01-building-your-application/02-data-fetching/03-forms-and-mutations.mdx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ For example, the following submit button:
377377
```tsx filename="app/submit-button.tsx" switcher
378378
'use client'
379379

380-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
380+
import { useFormStatus } from 'react-dom'
381381

382382
export function SubmitButton() {
383383
const { pending } = useFormStatus()
@@ -393,7 +393,7 @@ export function SubmitButton() {
393393
```jsx filename="app/submit-button.jsx" switcher
394394
'use client'
395395

396-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
396+
import { useFormStatus } from 'react-dom'
397397

398398
export function SubmitButton() {
399399
const { pending } = useFormStatus()
@@ -557,8 +557,7 @@ Then, from a Client Component, you can read this value and display an error mess
557557
```tsx filename="app/add-form.tsx" switcher
558558
'use client'
559559

560-
import { experimental_useFormState as useFormState } from 'react-dom'
561-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
560+
import { useFormState, useFormStatus } from 'react-dom'
562561
import { createTodo } from '@/app/actions'
563562

564563
const initialState = {
@@ -594,8 +593,7 @@ export function AddForm() {
594593
```jsx filename="app/add-form.jsx" switcher
595594
'use client'
596595

597-
import { experimental_useFormState as useFormState } from 'react-dom'
598-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
596+
import { useFormState, useFormStatus } from 'react-dom'
599597
import { createTodo } from '@/app/actions'
600598

601599
const initialState = {

examples/next-forms/app/add-form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use client'
22

33
import { experimental_useFormState as useFormState } from 'react-dom'
4-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
4+
import { useFormStatus } from 'react-dom'
55
import { createTodo } from '@/app/actions'
66

77
const initialState = {

examples/next-forms/app/delete-form.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use client'
22

3-
import { experimental_useFormState as useFormState } from 'react-dom'
4-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
3+
import { useFormState, useFormStatus } from 'react-dom'
54
import { deleteTodo } from '@/app/actions'
65

76
const initialState = {

examples/with-fauna/components/EntryForm.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import cn from 'classnames'
44
import { createEntryAction } from '@/actions/entry'
55
// @ts-ignore
6-
import { experimental_useFormState as useFormState } from 'react-dom'
7-
import { experimental_useFormStatus as useFormStatus } from 'react-dom'
6+
import { useFormState, useFormStatus } from 'react-dom'
87
import LoadingSpinner from '@/components/LoadingSpinner'
98
import SuccessMessage from '@/components/SuccessMessage'
109
import ErrorMessage from '@/components/ErrorMessage'
@@ -26,7 +25,7 @@ export default function EntryForm() {
2625

2726
return (
2827
<>
29-
<form className="flex relative my-4" action={formAction}>
28+
<form className="relative flex my-4" action={formAction}>
3029
<input
3130
required
3231
className={cn(inputClasses, 'w-1/3 mr-2 px-4')}

packages/next-swc/crates/core/src/react_server_components.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,8 @@ pub fn server_components<C: Comments>(
612612
JsWord::from("findDOMNode"),
613613
JsWord::from("flushSync"),
614614
JsWord::from("unstable_batchedUpdates"),
615-
JsWord::from("experimental_useFormStatus"),
616-
JsWord::from("experimental_useFormState"),
615+
JsWord::from("useFormStatus"),
616+
JsWord::from("useFormState"),
617617
],
618618
invalid_server_react_apis: vec![
619619
JsWord::from("Component"),

packages/next-swc/crates/core/tests/errors/react-server-components/server-graph/react-dom-api/input.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { findDOMNode, flushSync, unstable_batchedUpdates } from 'react-dom'
22

3-
import {
4-
experimental_useFormStatus,
5-
experimental_useFormState,
6-
} from 'react-dom'
3+
import { useFormStatus, useFormState } from 'react-dom'
74

85
export default function () {
96
return null
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { findDOMNode, flushSync, unstable_batchedUpdates } from 'react-dom';
2-
import { experimental_useFormStatus, experimental_useFormState } from 'react-dom';
2+
import { useFormStatus, useFormState } from 'react-dom';
33
export default function() {
44
return null;
55
}

packages/next-swc/crates/core/tests/errors/react-server-components/server-graph/react-dom-api/output.stderr

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@
1717
: ^^^^^^^^^^^^^^^^^^^^^^^
1818
`----
1919

20-
x NEXT_RSC_ERR_REACT_API: experimental_useFormStatus
20+
x NEXT_RSC_ERR_REACT_API: useFormStatus
2121
,-[input.js:3:1]
2222
3 | import {
23-
4 | experimental_useFormStatus,
23+
4 | useFormStatus,
2424
: ^^^^^^^^^^^^^^^^^^^^^^^^^^
25-
5 | experimental_useFormState,
25+
5 | useFormState,
2626
`----
2727

28-
x NEXT_RSC_ERR_REACT_API: experimental_useFormState
28+
x NEXT_RSC_ERR_REACT_API: useFormState
2929
,-[input.js:4:1]
30-
4 | experimental_useFormStatus,
31-
5 | experimental_useFormState,
30+
4 | useFormStatus,
31+
5 | useFormState,
3232
: ^^^^^^^^^^^^^^^^^^^^^^^^^
3333
6 | } from 'react-dom'
3434
`----

packages/next-swc/crates/core/tests/fixture/react-server-components/server-graph-no-checks/react-dom-api/input.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { findDOMNode, flushSync, unstable_batchedUpdates } from 'react-dom'
22

3-
import {
4-
experimental_useFormStatus,
5-
experimental_useFormState,
6-
} from 'react-dom'
3+
import { useFormStatus, useFormState } from 'react-dom'
74

85
export default function () {
96
return null

packages/next-swc/crates/core/tests/fixture/react-server-components/server-graph-no-checks/react-dom-api/output.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { findDOMNode, flushSync, unstable_batchedUpdates } from 'react-dom';
2-
import { experimental_useFormStatus, experimental_useFormState } from 'react-dom';
2+
import { useFormStatus, useFormState } from 'react-dom';
33

44
export default function() {
55
return null;

0 commit comments

Comments
 (0)