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

  1. Register the native item type with the interpreter before instantiating the component.
  2. 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.