@auth0/auth0-acul-react - v1.0.0
    Preparing search index...

    Function useMfaPolling

    • React hook to manage MFA push polling (e.g., waiting for a push notification approval) on an Auth0 Advanced Customization of Universal Login (ACUL) screen.

      This hook sets up and controls a long-running polling loop that repeatedly checks the MFA push challenge endpoint until one of the following occurs:

      • The challenge is approved or denied by the user, triggering options.onCompleted.
      • An error occurs (network error, non-200/429 response), triggering options.onError.
      • The component unmounts or stopPolling() is called, which cancels polling.
      • isRunning is reactive — it updates automatically if the polling loop stops internally or is canceled.
      • Uses a stable single polling instance (useRef) to prevent duplicate network calls and unintended restarts during React re-renders.
      • Automatic cleanup on unmount: no orphan timers or leaked XHR requests.

      Parameters

      Returns MfaPollingResult

      object MfaPollingResult containing:

      • isRunningtrue while polling is active.
      • startPolling() — starts or resumes polling.
      • stopPolling() — stops polling immediately.
      • mfa-push-challenge-push
      • reset-password-mfa-push-challenge-push
      • mfa-push-enrollment-qr
      import { useMfaPolling } from '@auth0/auth0-acul-react/mfa-push-challenge-push';

      export function MfaPushStatus() {
      const { isRunning, startPolling, stopPolling } = useMfaPolling({
      intervalMs: 5000,
      onCompleted: () => console.log('Push approved!/denied'),
      onError: (error) => console.error('Polling error:', error)
      });

      return (
      <div>
      <button onClick={startPolling} disabled={isRunning}>
      {isRunning ? 'Waiting for approval…' : 'Start MFA Polling'}
      </button>
      {isRunning && <button onClick={stopPolling}>Cancel</button>}
      </div>
      );
      }
      • The onError callback receives an ULError object with status and responseText describing the server response.
      • Internal rate-limit responses (429) are automatically handled: polling waits for the reset window before retrying.
      • Calling startPolling() repeatedly while running is safe and idempotent.