> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-docs-event-stream-action-templates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# useResend

<ParamField body="useResend(options?)" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UseResendReturn">UseResendReturn</a></span>}>
  This React hook manages "resend" actions (e.g., resending a verification code) on ACUL screens.

  This hook:

  * Tracks the remaining cooldown time.
  * Tells you whether the resend button should be disabled.
  * Provides a `startResend` function to trigger a resend immediately.

  ## Parameters

  <ParamField body="options" type={<span><a href='/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UseResendOptions'>UseResendOptions</a></span>}>
    Optional configuration such as `timeoutSeconds` and `onTimeout`.
  </ParamField>

  ## Returns

  [`UseResendReturn`](/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UseResendReturn)

  An object with:

  * `remaining` — seconds left until the next resend is permitted.
  * `disabled` — `true` if resending is currently blocked.
  * `startResend` — call to initiate a resend immediately (if allowed).

  ## Supported Screens

  * `email-identifier-challenge`
  * `email-otp-challenge`
  * `login-email-verification`
  * `login-passwordless-email-code`
  * `login-passwordless-sms-otp`
  * `mfa-email-challenge`
  * `mfa-sms-challenge`
  * `mfa-voice-challenge`
  * `phone-identifier-challenge`
  * `reset-password-mfa-email-challenge`
  * `reset-password-mfa-sms-challenge`
  * `reset-password-mfa-voice-challenge`

  ```tsx Example theme={null}
  import { useResend } from '@auth0/auth0-acul-react/mfa-sms-challenge';

  export function ResendButton() {
    const { remaining, disabled, startResend } = useResend({
      timeoutSeconds: 30,
      onTimeout: () => console.log('You can resend again'),
    });

    return (
      <button onClick={startResend} disabled={disabled}>
        {disabled ? `Resend in ${remaining}s` : 'Resend Code'}
      </button>
    );
  }
  ```

  ## Remarks

  * The underlying `ResendControl` has no explicit teardown method; the hook does not require manual cleanup.
  * The hook re-initializes the resend manager if `timeoutSeconds` or `onTimeout` change.
</ParamField>
