{"record":{"id":"a7a3b333cdb20d1d","repo":"DioxusLabs/dioxus","slug":"stable-child-must-be-reused","errorCode":null,"errorMessage":"stable child must be reused","messagePattern":"stable child must be reused","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/core/src/diff/iterator.rs","lineNumber":393,"sourceCode":"        plan: FragmentPlacementPlan,\n        fallback_site: Option<InsertionSite>,\n    ) {\n        let FragmentInputs {\n            old,\n            old_mounts,\n            new,\n            new_children,\n            new_offset,\n            ..\n        } = inputs;\n        let mut new_mounts = vec![None; new.len()];\n        let mut anchorable = plan.stable.clone();\n\n        for idx in 0..new.len() {\n            if !plan.stable[idx] {\n                continue;\n            }\n            let old_index = plan.new_to_old[idx].expect(\"stable child must be reused\");\n            let old_mount = old_mounts[old_index];\n            self.dom\n                .stage_mounted_fragment_child(new_children, new_offset + idx, old_mount);\n            let mount = DiffFrame::new(old_mount, &old[old_index], &new[idx]).diff_into(self);\n            new_mounts[idx] = Some(mount);\n            self.dom\n                .set_mounted_fragment_child(new_children, new_offset + idx, mount);\n            if mount != old_mount {\n                anchorable[idx] = false;\n            }\n        }\n\n        let stable_edges = StableFragmentEdges::new(new, &new_mounts, &anchorable, self.dom);\n        for range in plan.placement_runs(&stable_edges.live_stable) {\n            let context = self.context();\n            let runtime = self.dom.runtime.clone();\n            let dom = &mut *self.dom;\n            let mut replaced_nodes = Vec::new();","sourceCodeStart":375,"sourceCodeEnd":411,"githubUrl":"https://github.com/DioxusLabs/dioxus/blob/24f6a829df0dfa203961a98ea4cae21c2ff27e28/packages/core/src/diff/iterator.rs#L375-L411","documentation":"Internal diffing invariant: the fragment placement plan marked a child as stable (reused from the old tree) but new_to_old held no mapping for it. Indicates a bug in keyed-children diffing plan construction.","triggerScenarios":"Thrown at packages/core/src/diff/iterator.rs:393 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["This is an internal diffing invariant about reusing stable children. Report it with a minimal reproduction to the Dioxus issue tracker."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"24f6a829df0dfa203961a98ea4cae21c2ff27e28","analyzedAt":"2026-08-23T07:10:14.078Z","contentChangedAt":"2026-08-23T07:10:14.078Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}