Hi @brad_f. The team is aware of this issue. You’re right, it has to do with destroying UI elements in a callback. You can work around it by putting the destroy call in an async function.
def _on_vis_changed(self,vis:bool):
if not vis:
async def destroy_self_async(self):
self.destroy()
asyncio.ensure_future(destroy_self_async(self))