{"record":{"id":"e84aa5f2d6c4277b","repo":"facebook/react","slug":"166","errorCode":"166","errorMessage":"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.","messagePattern":"We must have new props for new mounts\\. This error is likely caused by a bug in React\\. Please file an issue\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-reconciler/src/ReactFiberCompleteWork.js","lineNumber":1327,"sourceCode":"          // $FlowFixMe[constant-condition]\n          if (supportsMutation) {\n            const oldProps = current.memoizedProps;\n            if (oldProps !== newProps) {\n              markUpdate(workInProgress);\n            }\n          } else {\n            updateHostComponent(\n              current,\n              workInProgress,\n              type,\n              newProps,\n              renderLanes,\n            );\n          }\n        } else {\n          if (!newProps) {\n            if (workInProgress.stateNode === null) {\n              throw new Error(\n                'We must have new props for new mounts. This error is likely ' +\n                  'caused by a bug in React. Please file an issue.',\n              );\n            }\n\n            // This can happen when we abort work.\n            bubbleProperties(workInProgress);\n            if (enableViewTransition) {\n              // Host Components act as their own View Transitions which doesn't run enter/exit animations.\n              // We clear any ViewTransitionStatic flag bubbled from inner View Transitions.\n              workInProgress.subtreeFlags &= ~ViewTransitionStatic;\n            }\n            return null;\n          }\n\n          const currentHostContext = getHostContext();\n          const wasHydrated = popHydrationState(workInProgress);\n          let instance: Instance;","sourceCodeStart":1309,"sourceCodeEnd":1345,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-reconciler/src/ReactFiberCompleteWork.js#L1309-L1345","documentation":"completeWork() for HostSingleton fibers (DOM singletons such as html, head, body) needs props to create or adopt the instance on a fresh mount. When newProps is falsy, the fiber must already own an instance - that is the abort-work reuse path. A fiber with neither props nor a stateNode cannot be completed and throws.","triggerScenarios":"An interrupted render (startTransition, Suspense abort) leaves a HostSingleton fiber without props and without an instance, and work later resumes on it - an internal bug in the abort/reuse logic; also hydration where the singleton instance was never resolved.","commonSituations":"Canary React rendering document-level singletons; concurrent renders aborted mid-flight; StrictMode double-invocation on canary builds.","solutions":["Update React - abort-reuse bugs around host singletons are fixed in canary cycles","Avoid unmounting and remounting the document-level tree mid-transition","Reproduce with StrictMode off to see whether double-invocation is involved, and report it","File an issue if it persists on the latest build"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"Render-phase invariant: an ErrorBoundary may catch it, but the fiber state is corrupt - log via onUncaughtError and remount the root rather than retrying the same tree.","preventionTips":["Pin a tested React version when rendering document-level singletons","Keep transitions small so aborts are rare","Include the aborted transition's details in bug reports"],"tags":["host-singleton","complete-phase","aborted-render","invariant"],"backgroundTag":"react-internal-invariant","analyzedSha":"eafeac097ba51e1eab809c07102126bd5f8e5425","analyzedAt":"2026-08-21T22:01:08.818Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}