{"record":{"id":"9ec4a07edb3bb8c2","repo":"DioxusLabs/dioxus","slug":"fragment-plan-must-materialize-every-new-child","errorCode":null,"errorMessage":"fragment plan must materialize every new child","messagePattern":"fragment plan must materialize every new child","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/core/src/diff/iterator.rs","lineNumber":451,"sourceCode":"                });\n            } else {\n                let mut state = DiffState::new_with_context(dom, None, context);\n                state.create_or_diff_placed_range(\n                    &inputs,\n                    &plan,\n                    range.clone(),\n                    &mut new_mounts,\n                    &mut replaced_nodes,\n                );\n            }\n\n            for (node, mount) in replaced_nodes.into_iter().rev() {\n                node.remove_node(mount, self.dom, self.to.as_deref_mut());\n            }\n        }\n\n        for (idx, mount) in new_mounts.into_iter().enumerate() {\n            let mount = mount.expect(\"fragment plan must materialize every new child\");\n            self.dom\n                .set_mounted_fragment_child(new_children, new_offset + idx, mount);\n        }\n    }\n\n    /// Materialize every non-stable child in a fragment placement range at the current renderer\n    /// insertion site. Stable children inside the range are DOM-empty anchors in the logical order,\n    /// so they are skipped while neighbouring placed children are spliced as one host segment.\n    fn create_or_diff_placed_range<'a>(\n        &mut self,\n        inputs: &FragmentInputs<'a>,\n        plan: &FragmentPlacementPlan,\n        range: Range<usize>,\n        new_mounts: &mut [Option<MountId>],\n        replaced_nodes: &mut Vec<(&'a VNode, MountId)>,\n    ) -> usize {\n        let FragmentInputs {\n            old,","sourceCodeStart":433,"sourceCodeEnd":469,"githubUrl":"https://github.com/DioxusLabs/dioxus/blob/24f6a829df0dfa203961a98ea4cae21c2ff27e28/packages/core/src/diff/iterator.rs#L433-L469","documentation":"`execute_fragment_plan` asserts, after diffing a fragment's children, that the plan created/mounted a mount for every new child node. This invariant panic fires if the diffing internals left some new child unmounted — a bug in fragment diff planning rather than user error.","triggerScenarios":"Thrown at packages/core/src/diff/iterator.rs:451 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["This is an internal diffing invariant about fragment 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-14T00:17:10.932Z"}