DEV Community

Cover image for Debounce in Next.js
Code of Relevancy
Code of Relevancy

Posted on • Updated on

Debounce in Next.js

Debounce is a technique used to limit the frequency of function calls in Next.js. It is used to prevent the function from being called too frequently, which can cause performance issues or unwanted behavior.

To implement debounce in Next.js, you can use the debounce function from the lodash library or create your own debounce function.

For example, let's say you have a function that fetches data from an API whenever a user types in a search input. You can use debounce to delay the function call until the user has stopped typing for a certain amount of time. This will prevent the function from being called with every keystroke, which would result in too many unnecessary API calls.

To use debounce in Next.js, you would first import the debounce function from lodash or create your own debounce function. Then, you would wrap the function you want to debounce in the debounce function, passing in the desired delay time as an argument.

Here is an example of using debounce with a search function:

import debounce from 'lodash.debounce';

const search = debounce((query) => {
  // fetch data from API with the query
}, 500); // delay function call for 500ms
Enter fullscreen mode Exit fullscreen mode

Now, whenever the search function is called, it will be debounced by 500ms. This will prevent the function from being called too frequently, improving performance and preventing unnecessary API calls.

To create a debounce function in Next.js, you can follow these steps:

  1. Define a function that takes in a callback function and a delay time as arguments.

  2. Use the setTimeout function to delay the execution of the callback function by the specified delay time.

  3. Use the clearTimeout function to cancel the execution of the callback function if it is called again before the delay time has elapsed.

  4. Return the debounced function, which can be called multiple times but will only execute the callback function once after the specified delay time has elapsed.

Here is an example of how to create a debounce function in Next.js:

function debounce(callback, delay) {
  let timeoutId;

  return function() {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(callback, delay);
  }
}

// Example usage:
const debouncedFunction = debounce(() => console.log('Hello World!'), 1000);

debouncedFunction(); // 'Hello World!' is logged after 1 second
debouncedFunction(); // 'Hello World!' is not logged because it was called again before 1 second elapsed
Enter fullscreen mode Exit fullscreen mode

Here is an example of how you can implement a debounced function in Next.js:

function debounce(fn, delay) {
  let timeoutId;
  return (...args) => {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => fn(...args), delay);
  };
}
Enter fullscreen mode Exit fullscreen mode

This debounce function takes in two arguments: a function fn and a delay delay. It returns a new function that will postpone the execution of fn by the specified delay in milliseconds. If the new function is called multiple times within the delay period, the timer will be reset and the function will only be executed once after the delay period has elapsed.

You can use the debounce function like this:

const debouncedFunction = debounce(functionToDebounce, 1000);
Enter fullscreen mode Exit fullscreen mode

This will create a new debounced version of the functionToDebounce function that will only be executed once every 1000 milliseconds (1 second).


Please consider following and supporting me by subscribing to my channel. Your support is greatly appreciated and will help me continue creating content for you to enjoy. Thank you in advance for your support!

YouTube
Discord
GitHub

Top comments (0)