slint-ui/slint · error
native item `{}` is not registered
Error message
native item `{}` is not registered What it means
Error "native item `{}` is not registered" thrown in slint-ui/slint.
Source
Thrown at internal/interpreter/instance.rs:830
parent: Weak<SubComponentInstance>,
) -> Pin<Rc<SubComponentInstance>> {
let sc = &cu.sub_components[sub_idx];
let registry = ItemRegistry::global();
let properties = sc
.properties
.iter()
.map(|p| Rc::pin(Property::new(crate::eval::default_value_for_type(&p.ty))))
.collect();
let callbacks = sc.callbacks.iter().map(|_| Rc::pin(Callback::default())).collect();
let callback_trackers =
sc.callbacks.iter().map(|c| c.needs_tracker.then(|| Rc::pin(Property::new(())))).collect();
let items =
sc.items
.iter()
.map(|item| {
registry.factory(&item.ty.class_name).unwrap_or_else(|| {
panic!("native item `{}` is not registered", item.ty.class_name)
})()
})
.collect();
let repeaters = sc
.repeated
.iter()
.map(|rep| {
if rep.data_prop.is_none() {
RepeaterOrConditional::Conditional(Box::pin(Conditional::default()))
} else {
RepeaterOrConditional::Repeater(Box::pin(Repeater::default()))
}
})
.collect();
// `Rc::new_cyclic` gives nested sub-components a `Weak` to their parent.
// `SubComponentInstance` is `Unpin` (every pinned field lives behind its own
// `Pin<Rc<_>>`), so `Pin::new` on the resulting `Rc` needs no unsafe.View on GitHub (pinned to 3fd8f2ec03)
Solutions
- Register the native item type with the interpreter before instantiating the component.
- Check the item name for typos.
When it happens
Trigger: Thrown at internal/interpreter/instance.rs:830 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of slint-ui/slint@3fd8f2ec03 (2026-08-19).
Data as JSON: /api/errors/4dbb4e60f295d307.
Report an issue: GitHub.