Unenrolling an MFA method requires MFA verification.
- React
- React Native
- Swift
- Android
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)
Privy allows users to unenroll from MFA methods via the
unenroll method on each MFA namespace:Report incorrect code
Copy
Ask AI
val user = privy.getUser() ?: return
// Unenroll from specific MFA methods
user.mfa.sms.unenroll()
user.mfa.totp.unenroll()
user.mfa.passkeys.unenroll()
Unenrolling SMS
To remove SMS as an MFA method:Report incorrect code
Copy
Ask AI
user.mfa.sms.unenroll()
.onSuccess { updatedUser ->
// SMS MFA removed successfully
}
.onFailure { error ->
// Handle error
}
Unenrolling TOTP
To remove TOTP as an MFA method:Report incorrect code
Copy
Ask AI
user.mfa.totp.unenroll()
.onSuccess { updatedUser ->
// TOTP MFA removed successfully
}
.onFailure { error ->
// Handle error
}
Unenrolling passkeys
To remove passkeys as an MFA method:Report incorrect code
Copy
Ask AI
user.mfa.passkeys.unenroll()
.onSuccess { updatedUser ->
// Passkey MFA removed successfully
}
.onFailure { error ->
// Handle error
}
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
user.mfa.passkeys.unenroll(removeForLogin = false)
.onSuccess { updatedUser ->
// Passkey MFA removed, but passkey still valid for login
}

