React v16.8 introduced a new hook called `useEffect, which allows you to run side effects in your functional components. UseEffect is a great way to handle expensive operations like API calls, but it can take some work. In this post, I'll show you how to use use useEffect` to debounce expensive procedures in Next.js. Debouncing is a technique for controlling the rate at which a function is called. It's useful when you have an expensive operation that you want to run only when the user has stopped typing, for example.