> For the complete documentation index, see [llms.txt](/llms.txt).

# useEnableMFA

Hook to start multi-factor authentication (MFA) setup for the signed-in user.

### Import

```tsx
import { useEnableMFA } from '@web3auth/react-native-sdk'

```

### Usage

```tsx
import { useEnableMFA, useWeb3AuthUser } from '@web3auth/react-native-sdk'
import { Button, Text, View } from 'react-native'

function EnableMFAButton() {
  const { enableMFA, loading, error } = useEnableMFA()
  const { isMFAEnabled } = useWeb3AuthUser()

  if (isMFAEnabled) return <Text>MFA is enabled</Text>

  return (
    <View>
      <Button
        title={loading ? 'Setting up MFA…' : 'Enable MFA'}
        disabled={loading}
        onPress={() => enableMFA()}
      />
      {error && <Text>{error.message}</Text>}
    </View>
  )
}

```

### Return type

```tsx
import { type IUseEnableMFA } from '@web3auth/react-native-sdk'

```

#### `enableMFA`

`() => Promise<void>`

Opens the MFA setup flow in the in-app browser, where the user adds backup factors such as a device share, recovery phrase, or authenticator app. When the flow completes, the SDK refreshes the session and `useWeb3AuthUser().isMFAEnabled` becomes `true`. If MFA is already enabled, `enableMFA`sets `error` instead of opening the flow.

#### `loading`

`boolean`

`true` while the MFA setup flow is in progress.

#### `error`

`Web3authRNError | null`

Error from the most recent `enableMFA` call, or `null`.

### Related

- [MFA guide](/embedded-wallets/sdk/react-native/advanced/mfa/)
- [useManageMFA](/embedded-wallets/sdk/react-native/hooks/useManageMFA/)
