> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# useMfaPolling

<ParamField body="useMfaPolling(options?: MfaPollingOptions)" type={<span><a href="/es/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult">MfaPollingResult</a></span>}>
  Hook de React para gestionar el sondeo de MFA por push (por ejemplo, esperar la aprobación de una notificación push)
  en una pantalla de Auth0 Advanced Customization of Universal Login (ACUL).

  Este hook configura y controla un bucle de sondeo de larga duración que consulta repetidamente
  el endpoint del desafío MFA por push hasta que ocurre una de las siguientes condiciones:

  * El desafío es **aprobado o denegado** por el usuario, lo que activa `options.onCompleted`.
  * Se produce un **error** (error de red o una respuesta distinta de 200/429), lo que activa `options.onError`.
  * El **componente se desmonta** o se llama a `stopPolling()`, lo que cancela el sondeo.

  ### Características principales

  * `isRunning` es **reactivo**: se actualiza automáticamente si el bucle de sondeo
    se detiene internamente o se cancela.
  * Usa una **única instancia estable de sondeo** (`useRef`) para evitar
    llamadas de red duplicadas y reinicios no deseados durante los re-renderizados de React.
  * **Limpieza automática** al desmontarse: no quedan temporizadores huérfanos ni solicitudes XHR pendientes.

  ## Parámetros

  <ParamField body="options" type={<span><a href='/es/docs/libraries/acul/react-sdk/API-Reference/Types/type-aliases/MfaPollingOptions'>MfaPollingOptions</a></span>}>
    Especifica el intervalo de sondeo, el callback de éxito (`onCompleted`) y el controlador de errores opcional (`onError`).
  </ParamField>

  ## Devuelve

  [`MfaPollingResult`](/es/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult) que contiene:

  * `isRunning` — `true` mientras el sondeo está activo.
  * `startPolling()` — inicia o reanuda el sondeo.
  * `stopPolling()` — detiene el sondeo de inmediato.

  ## Pantallas compatibles

  * `mfa-push-challenge-push`
  * `reset-password-mfa-push-challenge-push`
  * `mfa-push-enrollment-qr`

  ```tsx Example theme={null}
  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>
    );
  }
  ```

  ## Observaciones

  * El callback `onError` recibe un objeto [ULError](/es/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/Error)
    con `status` y `responseText` que describen la respuesta del servidor.
  * Las respuestas internas por límite de tasa (`429`) se gestionan automáticamente:
    el sondeo espera a que finalice la ventana de restablecimiento antes de reintentar.
  * Llamar repetidamente a `startPolling()` mientras está en ejecución es seguro e idempotente.
</ParamField>
