From 539bbdbd86d9cd342aabde4cb08e398751789103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Markb=C3=A5ge?= Date: Tue, 15 Apr 2025 17:17:22 -0400 Subject: [PATCH] Warn if you pass a hidden prop to Activity (#32916) Since `hidden` is a prop on arbitrary DOM elements it's a common mistake to think that it would also work that way on `` but it doesn't. In fact, we even had this mistakes in our own tests. Maybe there's an argument that we should actually just support it but we also have more modes planned. So this adds a warning. It should also already be covered by TypeScript. --- .../src/ReactFiberBeginWork.js | 16 +++++++++++ .../src/__tests__/Activity-test.js | 28 +++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.js b/packages/react-reconciler/src/ReactFiberBeginWork.js index fc5019b2ff..fd8451a3ef 100644 --- a/packages/react-reconciler/src/ReactFiberBeginWork.js +++ b/packages/react-reconciler/src/ReactFiberBeginWork.js @@ -873,6 +873,22 @@ function updateActivityComponent( renderLanes: Lanes, ) { const nextProps: ActivityProps = workInProgress.pendingProps; + if (__DEV__) { + const hiddenProp = (nextProps: any).hidden; + if (hiddenProp !== undefined) { + console.error( + ' doesn\'t accept a hidden prop. Use mode="hidden" instead.\n' + + '- \n' + + '+ ', + hiddenProp === true + ? 'hidden' + : hiddenProp === false + ? 'hidden={false}' + : 'hidden={...}', + hiddenProp ? 'mode="hidden"' : 'mode="visible"', + ); + } + } const nextChildren = nextProps.children; const nextMode = nextProps.mode; const mode = workInProgress.mode; diff --git a/packages/react-reconciler/src/__tests__/Activity-test.js b/packages/react-reconciler/src/__tests__/Activity-test.js index 4655d4917d..d514bb4e0b 100644 --- a/packages/react-reconciler/src/__tests__/Activity-test.js +++ b/packages/react-reconciler/src/__tests__/Activity-test.js @@ -732,7 +732,7 @@ describe('Activity', () => { const root = ReactNoop.createRoot(); await act(() => { - root.render(