{"record":{"id":"c7cba69050ff8d91","repo":"facebook/react","slug":"cannot-not-suspend-id-suspendedset-i","errorCode":null,"errorMessage":"Cannot not suspend ID '${suspendedSet[i]}'.","messagePattern":"Cannot not suspend ID '(.+?)'\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/react-devtools-shared/src/backend/fiber/renderer.js","lineNumber":7604,"sourceCode":"        if (\n          forceFallbackForFibers.has(fiber) ||\n          (fiber.alternate !== null &&\n            forceFallbackForFibers.has(fiber.alternate))\n        ) {\n          // We're already forcing fallback for this fiber. Mark it as not unsuspended.\n          unsuspendedSet.delete(fiber);\n          if (fiber.alternate !== null) {\n            unsuspendedSet.delete(fiber.alternate);\n          }\n        } else {\n          forceFallbackForFibers.add(fiber);\n          // We could find a minimal set that covers all the Fibers in this suspended set.\n          // For now we rely on React's batching of updates.\n          scheduleUpdate(fiber);\n          resuspended = true;\n        }\n      } else {\n        console.warn(`Cannot not suspend ID '${suspendedSet[i]}'.`);\n      }\n    }\n\n    // Unsuspend any existing forced fallbacks if they're not in the new set.\n    unsuspendedSet.forEach(fiber => {\n      forceFallbackForFibers.delete(fiber);\n      if (!resuspended && typeof scheduleRetry === 'function') {\n        // If nothing new resuspended we don't need this to be sync. If we're only\n        // unsuspending then we can schedule this as a Retry if the renderer supports it.\n        // That way we can trigger animations.\n        scheduleRetry(fiber);\n      } else {\n        scheduleUpdate(fiber);\n      }\n    });\n\n    if (forceFallbackForFibers.size > 0) {\n      // First override is added. Switch React to slower path.","sourceCodeStart":7586,"sourceCodeEnd":7622,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-devtools-shared/src/backend/fiber/renderer.js#L7586-L7622","documentation":"This warning comes from overrideSuspenseMilestone() in the DevTools fiber backend (packages/react-devtools-shared/src/backend/fiber/renderer.js:7562), which applies a batch of forced-fallback (suspend) overrides requested from the DevTools Activity/Suspense panel. Each id in suspendedSet is looked up in idToDevToolsInstanceMap; if the entry exists but its kind is not FIBER_INSTANCE (e.g. it is a VIRTUAL_INSTANCE, used for Server Components or compiler-optimized-away components), there is no client Fiber to add to forceFallbackForFibers, so the override cannot be applied. The awkwardly worded 'Cannot not suspend ID' means DevTools is unable to toggle the suspended state for that element. The remaining ids in the set are still processed.","triggerScenarios":"Toggling the suspend/unsuspend state for a set of boundaries in the DevTools Suspense/Activity tab where at least one selected id refers to a virtual instance (Server Component rendered output or a component optimized away by React Compiler) instead of a client SuspenseComponent Fiber; also when the tree re-renders between the panel snapshot and the override call so an id that was a Fiber is now virtual.","commonSituations":"Debugging Suspense/Activity state on an app that uses React Server Components or React Compiler output; mixing an experimental-channel DevTools with a stable renderer (or vice versa); toggling many boundaries at once right after a hot-module reload changed the tree shape.","solutions":["Re-open or re-toggle the boundary in the Suspense/Activity panel after the tree settles so DevTools re-reads the current instance kinds.","If the target is a Server Component or optimized-away component, toggle the client Suspense boundary that wraps it instead.","Make sure the React DevTools build matches the renderer channel you are debugging (stable vs experimental/canary).","If it reproduces on matching versions, report it to the react-devtools repo with the DevTools and React versions."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Toggle suspension only for client Suspense boundaries visible in the Suspense/Activity panel after the tree has settled.","Keep the DevTools build matched to your renderer channel so instance kinds agree.","Re-apply suspend toggles after hot reloads instead of relying on state captured before the reload."],"tags":["react-devtools","suspense","activity","server-components","dev-only"],"backgroundTag":"unsupported-instance-type","analyzedSha":"eafeac097ba51e1eab809c07102126bd5f8e5425","analyzedAt":"2026-08-21T22:01:08.818Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}