# Clean Up Alpine.js Event Listeners

Always clean up manual event listeners and intervals in `destroy()` to prevent memory leaks on section re-render.

```typescript
component: () => ({
  resizeHandler: null,
  init() {
    this.resizeHandler = () => this.onResize()
    window.addEventListener('resize', this.resizeHandler)
  },
  destroy() {
    window.removeEventListener('resize', this.resizeHandler)
  }
})
```

Alpine calls `destroy()` when the element is removed from the DOM (e.g. section reorder in the editor).
