Quick answer: Unity UI Toolkit element removed but its callback subscriptions still firing? UnregisterCallback explicitly on remove.

Element removed via .RemoveFromHierarchy. Subsequent events still fire on the dead element.

Unregister on detach

Listen for DetachFromPanelEvent; unregister all callbacks in handler.

Or use callback with parameter

RegisterCallback with capture; auto-unregister on element destruction.

Audit removal patterns

Each removal site: are callbacks cleaned? If not, the leak.

“UI Toolkit callbacks outlive removed elements. Cleanup is responsibility.”

If you build dynamic UI, the callback cleanup discipline is mandatory.

Related reading