Skip to main content

cleanup_event_listeners

🧹 Memory Cleanup in disconnect​

Always remove global event listeners and clear intervals/timeouts in disconnect to prevent memory leaks, especially when controllers reload frequently.

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
connect() {
this.intervalId = setInterval(() => this.tick(), 1000)
window.addEventListener("resize", this.handleResize)
}

disconnect() {
clearInterval(this.intervalId)
window.removeEventListener("resize", this.handleResize)
}

tick() {
console.log("Tick")
}

handleResize = () => {
console.log("Window resized")
}
}