typescriptbeginner

useAbortController Hook

Creates and manages AbortController instances for cancelling fetch requests on unmount.

typescript
import { useRef, useEffect, useCallback } from 'react';

export function useAbortController() {
  const controllerRef = useRef<AbortController | null>(null);

  const getSignal = useCallback(() => {
    if (controllerRef.current) {
      controllerRef.current.abort();
    }
    controllerRef.current = new AbortController();
    return controllerRef.current.signal;
  }, []);

  const abort = useCallback(() => {
    controllerRef.current?.abort();
  }, []);

  useEffect(() => {
    return () => {
      controllerRef.current?.abort();
    };
  }, []);

  return { getSignal, abort };
}

// Usage:
// const { getSignal } = useAbortController();
// const res = await fetch('/api/data', { signal: getSignal() });

Use Cases

  • Cancelling stale requests
  • Search-as-you-type

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.