On Nov 4, 2026 AndroidX shipped androidx.biometric 1.4.0-beta01 together with biometric-compose 1.4.0-beta01. The beta release notes only link to a commit log, but the 1.4 alpha series that leads to it adds up to a different way of calling BiometricPrompt: an Activity Result style registration, a Compose launcher, and support for several custom fallback options. This post walks through what the alphas added, so you know what you are adopting when you move to the beta.
Scope note: the 1.4.0-beta01 entry itself lists no per-change notes, only a commit range. Everything below comes from the 1.4.0-alpha03, alpha05 and alpha06 notes on the official release page. I did not diff the beta against alpha07, so check the commit log before relying on an API staying exactly as it was in an alpha.
1. registerForAuthenticationResult()
Alpha03 (Mar 26, 2025) introduced a new entry point modeled on the Activity Result API. It replaces the old biometric-ktx module and the classic BiometricPrompt constructor dance. You register a callback once, get back an AuthenticationResultLauncher, and start authentication with an AuthenticationRequest.
There are two request types: BiometricRequest, which takes a biometric Strength and an optional Fallback, and CredentialRequest for device-credential-only authentication. Alpha06 also relaxed registration to take a ComponentActivity instead of a FragmentActivity.
The exact builder signatures are not in the release notes, so the sketch below shows the shape of the flow and not copy-paste code. Check the API reference for your artifact version.
class LoginActivity : ComponentActivity() {
private val authLauncher = registerForAuthenticationResult(
resultCallback = { result ->
// AuthenticationResult: success, error, or CustomFallbackSelected
handleAuthResult(result)
}
)
private fun onUnlockClicked() {
// Build a BiometricRequest (Strength + optional Fallback)
// or a CredentialRequest, then start it through the launcher.
authLauncher.launch(buildRequest())
}
}
Two details from alpha05 matter for real screens. The failure callback moved into AuthenticationResultCallback and was renamed onAuthAttemptFailed, apps can now pass their own executor for callbacks, and a single Activity or Fragment can hold multiple launchers because results are routed to the launcher that requested them.
2. biometric-compose
Alpha05 (Dec 17, 2025) added the new biometric-compose library. Its entry point is rememberAuthenticationLauncher, which handles requests and callbacks inside a composable so you do not have to reach for the host Activity.
@Composable
fun UnlockButton(onAuthenticated: () -> Unit) {
val launcher = rememberAuthenticationLauncher(/* result callback */)
Button(onClick = { launcher.launch(buildRequest()) }) {
Text("Unlock with biometrics")
}
}
Both snippets are illustrations of the documented flow (register, build a request, launch, receive a result). The parameter lists are my approximation, not copied from the API reference.
3. Up to four custom fallbacks
Alpha06 (Mar 25, 2026) added what the notes call multiple fallback options. Starting with Android 36.1 (Baklava), the biometric prompt supports up to four custom fallback options instead of a single negative button. You describe them, with icons on supported Android versions, through AuthenticationRequest.Biometric.Fallback.
The behavior change to plan for: a tap on one of these options is delivered as AuthenticationResult.CustomFallbackSelected, not as an error code. If your current code treats the negative button as ERROR_NEGATIVE_BUTTON and shows a password screen, that logic needs a second branch for the new result type.
4. Other API and behavior changes worth knowing
- KeyAgreement in CryptoObject (alpha06):
BiometricPrompt.CryptoObjectnow supportsKeyAgreement, useful for key-exchange flows gated on biometrics. - minSdk 21 to 23 (alpha05): the default minSdk moved to API 23. Check your own minSdk before bumping.
- FingerprintManagerCompat deprecated (alpha05):
androidx.core.hardware.fingerprint.FingerprintManagerCompatis now a no-op that does nothing or returns false. If you still call it directly, migrate to BiometricPrompt. - Fixes: a lock-out error returned unintentionally from
canAuthenticate()(alpha05), the fingerprint icon disappearing on rotation (alpha06), and fingerprint dialog destruction moved toonDestroy()(alpha06). Alpha03 also fixedBiometricPromptnot being dismissed when the home button is pressed. - Nullness: the library uses JSpecify type-use annotations; Kotlin 2.1.0+ enforces them by default.
Migration checklist
- Pin
biometricandbiometric-composeto the same 1.4.0-beta01 version. - Move new screens to the launcher style first; leave stable flows on the classic API until the 1.4 line is stable.
- Add a
CustomFallbackSelectedbranch before you adopt multi-fallback prompts. - Replace any direct
FingerprintManagerCompatusage. - Re-test rotation, home-button dismissal and lock-out on real devices.
Sources: the AndroidX Biometric release notes page (developer.android.com/jetpack/androidx/releases/biometric) and the AndroidX all-channel release list, both retrieved Nov 9, 2026.
No comments yet. Be the first to leave one!