Unenrolling an MFA method requires MFA verification.
- React
- React Native
- Swift
Privy allows users to delete MFA methods via the
unenrollWithSms, unenrollWithTotp, and unenrollWithPasskey methods returned from the useMfaEnrollment hook:Report incorrect code
Copy
Ask AI
import {useMfaEnrollment} from '@privy-io/react-auth';
const {unenrollWithSms, unenrollWithTotp, unenrollWithPasskey} = useMfaEnrollment();
Unenrolling SMS
To remove SMS as an MFA method:Report incorrect code
Copy
Ask AI
await unenrollWithSms();
Unenrolling TOTP
To remove TOTP as an MFA method:Report incorrect code
Copy
Ask AI
await unenrollWithTotp();
Unenrolling passkeys
To remove passkeys as an MFA method:Report incorrect code
Copy
Ask AI
await unenrollWithPasskey();
Complete example
Example unenrolling SMS/TOTP/passkey
Report incorrect code
Copy
Ask AI
import {useMfaEnrollment} from '@privy-io/react-auth';
export default function MfaUnenrollment() {
const {unenrollWithSms, unenrollWithTotp, unenrollWithPasskey} = useMfaEnrollment();
return (
<div>
<button onClick={unenrollWithSms}>Unenroll SMS</button>
<button onClick={unenrollWithTotp}>Unenroll TOTP</button>
<button onClick={unenrollWithPasskey}>Unenroll passkey</button>
</div>
);
}
Privy allows users to delete MFA methods via the
unenrollMfa method returned from the useMfaEnrollment hook:Report incorrect code
Copy
Ask AI
import {useMfaEnrollment} from '@privy-io/expo';
const {unenrollMfa} = useMfaEnrollment();
Unenrolling SMS
To remove SMS as an MFA method:Report incorrect code
Copy
Ask AI
await unenrollMfa({method: 'sms'});
Unenrolling TOTP
To remove TOTP as an MFA method:Report incorrect code
Copy
Ask AI
await unenrollMfa({method: 'totp'});
Unenrolling passkeys
To remove passkeys as an MFA method:Report incorrect code
Copy
Ask AI
await unenrollMfa({method: 'passkey'});
By default, unenrolling a passkey will also unlink it as a valid login method. To modify this behavior, set the
removeForLogin option to false:Report incorrect code
Copy
Ask AI
await unenrollMfa({method: 'passkey', removeForLogin: false});
Complete example
Example unenrolling SMS/TOTP/passkey
Report incorrect code
Copy
Ask AI
import {useMfaEnrollment} from '@privy-io/expo';
export default function MfaUnenrollment() {
const {unenrollMfa} = useMfaEnrollment();
return (
<YStack>
<Button onPress={() => unenrollMfa({method: 'sms'})}>
<Text>Unenroll SMS</Text>
</Button>
<Button onPress={() => unenrollMfa({method: 'totp'})}>
<Text>Unenroll TOTP</Text>
</Button>
<Button onPress={() => unenrollMfa({method: 'passkey'})}>
<Text>Unenroll passkey</Text>
</Button>
</YStack>
);
}
Privy allows users to unenroll from MFA methods via the
unenroll method on each MFA namespace:Report incorrect code
Copy
Ask AI
guard let user = await privy.getUser() else { return }
// Unenroll from specific MFA methods
try await user.mfa.sms.unenroll()
try await user.mfa.totp.unenroll()
try await user.mfa.passkeys.unenroll()
Unenrolling SMS
To remove SMS as an MFA method:Report incorrect code
Copy
Ask AI
let updatedUser = try await user.mfa.sms.unenroll()
Unenrolling TOTP
To remove TOTP as an MFA method:Report incorrect code
Copy
Ask AI
let updatedUser = try await user.mfa.totp.unenroll()
Unenrolling passkeys
To remove passkeys as an MFA method:Report incorrect code
Copy
Ask AI
let updatedUser = try await user.mfa.passkeys.unenroll()
By default, unenrolling a passkey will also unlink it as a valid login method. To keep the passkey as a login method, set the
removeForLogin parameter to false:Report incorrect code
Copy
Ask AI
let updatedUser = try await user.mfa.passkeys.unenroll(removeForLogin: false)

