{"record":{"id":"4aec537967be0da6","repo":"iced-rs/iced","slug":"remove-user-interface","errorCode":null,"errorMessage":"Remove user interface","messagePattern":"Remove user interface","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"winit/src/lib.rs","lineNumber":761,"sourceCode":"                            continue;\n                        };\n\n                        let Some((id, mut window)) = window_manager.get_mut_alias(id) else {\n                            continue;\n                        };\n\n                        let physical_size = window.state.physical_size();\n                        let mut logical_size = window.state.logical_size();\n\n                        if physical_size.width == 0 || physical_size.height == 0 {\n                            continue;\n                        }\n\n                        // Window was resized between redraws\n                        if window.surface_version != window.state.surface_version() {\n                            window.renderer.hint(window.state.scale());\n\n                            let ui = user_interfaces.remove(&id).expect(\"Remove user interface\");\n\n                            let layout_span = debug::layout(id);\n                            let _ = user_interfaces\n                                .insert(id, ui.relayout(logical_size, &mut window.renderer));\n                            layout_span.finish();\n\n                            current_compositor.configure_surface(\n                                &mut window.surface,\n                                physical_size.width,\n                                physical_size.height,\n                            );\n\n                            window.surface_version = window.state.surface_version();\n                        }\n\n                        let redraw_event =\n                            core::Event::Window(window::Event::RedrawRequested(Instant::now()));\n","sourceCodeStart":743,"sourceCodeEnd":779,"githubUrl":"https://github.com/iced-rs/iced/blob/d146509d893945de5c304cfaf4301335eee278bd/winit/src/lib.rs#L743-L779","documentation":"Panic from `user_interfaces.remove(&id).expect(\"Remove user interface\")` when handling a resize between redraws. Every registered window must have a user interface entry, so a missing entry indicates the window's UI was removed without unregistering the window — an internal invariant violation.","triggerScenarios":"A RedrawRequested arrives for a window whose user interface was already removed (e.g. window closed during redraw, or ui_caches/interfaces bookkeeping desynced after Close/SetExclusive actions racing the event loop).","commonSituations":"Rapid window close while a redraw is pending; custom window management via subscription/Action::Close racing redraw events; bugs in forked runtimes.","solutions":["Update iced — bookkeeping races between close and redraw have been fixed upstream","Avoid closing windows from inside redraw-synchronous code paths","If forking, guard the remove with `if let Some(ui)` instead of expect"],"exampleFix":"// before\nlet ui = user_interfaces.remove(&id).expect(\"Remove user interface\");\n// after\nif let Some(ui) = user_interfaces.remove(&id) { ... }","handlingStrategy":"type-guard","validationCode":"// application-side: never call window close and rely on redraws for the same id in the same tick","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Avoid closing windows synchronously from inside redraw-driven code","Keep iced updated — close/redraw races are fixed upstream","If forking, prefer `if let Some(ui)` over expect in interface registry access"],"tags":["panic","window","ui","lifecycle"],"backgroundTag":"internal-invariant-violation","analyzedSha":"d146509d893945de5c304cfaf4301335eee278bd","analyzedAt":"2026-09-11T16:54:14.229Z","contentChangedAt":"2026-09-11T16:54:14.229Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}