Skip to main content

debounce_events

⏱️ Debouncing Input Events

Debouncing avoids invoking a method too frequently on rapid events like input. Use a simple timeout in your controller.

// search_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
initialize() {
this.timeout = null
}

search(event) {
clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
console.log('Searching for', event.target.value)
}, 300)
}
}
<input data-controller="search"
data-action="input->search#search"
placeholder="Type to search">