From a91362b3d2142d676b17df20b9a7715921556e97 Mon Sep 17 00:00:00 2001 From: Sumit Date: Wed, 5 Aug 2026 16:08:20 +0530 Subject: [PATCH] Add requestFormReset React DOM reference page --- src/content/reference/react-dom/index.md | 1 + .../reference/react-dom/requestFormReset.md | 89 +++++++++++++++++++ src/sidebarReference.json | 4 + 3 files changed, 94 insertions(+) create mode 100644 src/content/reference/react-dom/requestFormReset.md diff --git a/src/content/reference/react-dom/index.md b/src/content/reference/react-dom/index.md index d01bd656204..030487c153d 100644 --- a/src/content/reference/react-dom/index.md +++ b/src/content/reference/react-dom/index.md @@ -16,6 +16,7 @@ These APIs can be imported from your components. They are rarely used: * [`createPortal`](/reference/react-dom/createPortal) lets you render child components in a different part of the DOM tree. * [`flushSync`](/reference/react-dom/flushSync) lets you force React to flush a state update and update the DOM synchronously. +* [`requestFormReset`](/reference/react-dom/requestFormReset) lets you request a form reset when handling submissions with custom Actions or Transitions. ## Resource Preloading APIs {/*resource-preloading-apis*/} diff --git a/src/content/reference/react-dom/requestFormReset.md b/src/content/reference/react-dom/requestFormReset.md new file mode 100644 index 00000000000..b57a366f43c --- /dev/null +++ b/src/content/reference/react-dom/requestFormReset.md @@ -0,0 +1,89 @@ +--- +title: requestFormReset +--- + + + +`requestFormReset` lets you reset a React-managed form after an Action or Transition finishes. + +```js +requestFormReset(form) +``` + + + + + +--- + +## Reference {/*reference*/} + +### `requestFormReset(form)` {/*requestformreset*/} + +Call `requestFormReset` to request that a form resets after the current Action or Transition completes. + +```js +import { startTransition } from 'react'; +import { requestFormReset } from 'react-dom'; + +function handleSubmit(form) { + startTransition(async () => { + const formData = new FormData(form); + requestFormReset(form); + await save(formData); + }); +} +``` + +[See more examples below.](#usage) + +#### Parameters {/*parameters*/} + +* `form`: an [HTML form element](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement) rendered by React. + +#### Returns {/*returns*/} + +`requestFormReset` returns nothing. + +#### Caveats {/*caveats*/} + +* Pass a form element that is rendered by React. Passing a non-form element, or a form not managed by React, throws an error. +* `requestFormReset` is intended for Actions and Transitions. If called outside an Action or Transition, React warns in development and performs a synchronous reset. +* `requestFormReset` is useful when you implement form submission logic yourself (for example with `onSubmit` + `startTransition`) and still want React's form reset behavior. +* This API requests a reset for uncontrolled form fields. For controlled fields, handle resets by updating state, such as in `onReset`. + +--- + +## Usage {/*usage*/} + +### Requesting a reset in a custom form Action {/*requesting-a-reset-in-a-custom-form-action*/} + +React automatically resets uncontrolled fields after a successful `
` submission. When you implement submission manually, you can opt into the same behavior by calling `requestFormReset`. + +```js +import { startTransition } from 'react'; +import { requestFormReset } from 'react-dom'; + +function SearchForm() { + async function onSubmit(event) { + event.preventDefault(); + + const form = event.currentTarget; + const formData = new FormData(form); + + startTransition(async () => { + requestFormReset(form); + await submitSearch(formData); + }); + } + + return ( + + + +
+ ); +} +``` + +If your submission uses the built-in `
` behavior, you don't need to call `requestFormReset` manually. diff --git a/src/sidebarReference.json b/src/sidebarReference.json index 622fa687429..75a4d03abec 100644 --- a/src/sidebarReference.json +++ b/src/sidebarReference.json @@ -256,6 +256,10 @@ "title": "flushSync", "path": "/reference/react-dom/flushSync" }, + { + "title": "requestFormReset", + "path": "/reference/react-dom/requestFormReset" + }, { "title": "preconnect", "path": "/reference/react-dom/preconnect"