cyb/src/hooks/useIsOnline.tsx

import { useEffect, useState } from 'react';

function useIsOnline() {
  const [isOnline, setIsOnline] = useState(navigator.onLine);

  useEffect(() => {
    function handleOnline() {
      console.log('isOnline', true);
      setIsOnline(true);
    }

    function handleOffline() {
      console.log('isOnline', false);
      setIsOnline(false);
    }

    window.addEventListener('online', handleOnline);
    window.addEventListener('offline', handleOffline);

    return () => {
      window.removeEventListener('online', handleOnline);
      window.removeEventListener('offline', handleOffline);
    };
  }, []);

  return isOnline;
}

export default useIsOnline;

Neighbours