Skip to content

Commit ba1a7e8

Browse files
committed
[Fizz] Skip past hidden inputs when attempting to hydrate hydration boundaries
1 parent ad4ecb6 commit ba1a7e8

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3580,7 +3580,14 @@ function canHydrateHydrationBoundary(
35803580
inRootOrSingleton: boolean,
35813581
): null | SuspenseInstance | ActivityInstance {
35823582
while (instance.nodeType !== COMMENT_NODE) {
3583-
if (!inRootOrSingleton) {
3583+
if (
3584+
instance.nodeType === ELEMENT_NODE &&
3585+
instance.nodeName === 'INPUT' &&
3586+
(instance: any).type === 'hidden'
3587+
) {
3588+
// If we have extra hidden inputs, we don't mismatch. This allows us to
3589+
// embed extra form data in the original form.
3590+
} else if (!inRootOrSingleton) {
35843591
return null;
35853592
}
35863593
const nextInstance = getNextHydratableSibling(instance);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ let container;
2323
let React;
2424
let ReactDOMServer;
2525
let ReactDOMClient;
26+
let Suspense;
2627
let useFormStatus;
2728
let useOptimistic;
2829
let useActionState;
@@ -35,6 +36,7 @@ describe('ReactDOMFizzForm', () => {
3536
React = require('react');
3637
ReactDOMServer = require('react-dom/server.browser');
3738
ReactDOMClient = require('react-dom/client');
39+
Suspense = React.Suspense;
3840
useFormStatus = require('react-dom').useFormStatus;
3941
useOptimistic = require('react').useOptimistic;
4042
act = require('internal-test-utils').act;
@@ -588,6 +590,7 @@ describe('ReactDOMFizzForm', () => {
588590
function App() {
589591
return (
590592
<form action={action} ref={ref} method={null}>
593+
<Suspense />
591594
<input type="text" name="foo" defaultValue="bar" />
592595
</form>
593596
);

0 commit comments

Comments
 (0)