Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

expo-local-authentication

expo470.4kMIT15.0.2TypeScript support: included

Provides an API for FaceID and TouchID (iOS) or the Fingerprint API (Android) to authenticate the user with a face or fingerprint scan.

react-native, expo, authentication, auth, touchID, faceID, fingerprint

readme

expo sdk

Expo

Expo SDK version Chat or ask a question License: MIT Downloads

Try Expo in the Browser  •  Read the Documentation  •  Learn more on our blog  •  Request a feature

Follow us on

Expo on X   Expo on GitHub   Expo on Reddit   Expo on LinkedIn   Expo on LinkedIn

Introduction

Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript.

This repository includes the Expo SDK, Modules API, Go app, CLI, Router, documentation, and various other supporting tools. Expo Application Services (EAS) is a platform of hosted services that are deeply integrated with Expo open source tools. EAS helps you build, ship, and iterate on your app as an individual or a team.

Read the Expo Community Guidelines before interacting in the repository. Thank you for helping keep the Expo community open and welcoming!

Table of contents

📚 Documentation

Learn about building and deploying universal apps in our official docs!

🗺 Project Layout

  • packages All the source code for Expo modules, if you want to edit a library or just see how it works this is where you'll find it.
  • apps This is where you can find Expo projects which are linked to the development modules. You'll do most of your testing in here.
  • apps/expo-go This is where you can find the source code for Expo Go.
  • apps/expo-go/ios/Exponent.xcworkspace is the Xcode workspace. When developing iOS, always open this instead of Exponent.xcodeproj because the workspace also loads the CocoaPods dependencies.
  • docs The source code for https://docs.expo.dev
  • templates The template projects you get when you run npx create-expo-app
  • react-native-lab This is our fork of react-native used to build Expo Go.
  • guides In-depth tutorials for advanced topics like contributing to the client.
  • tools contain build and configuration tools.
  • template-files contains templates for files that require private keys. They are populated using the keys in template-files/keys.json.
  • template-files/ios/dependencies.json specifies the CocoaPods dependencies of the app.

🏅 Badges

Let everyone know your app can be run instantly in the Expo Go app!

runs with Expo Go

runs with Expo Go

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-000.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-4630EB.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

👏 Contributing

If you like Expo and want to help make it better then check out our contributing guide! Check out the CLI package to work on the Expo CLI.

❓ FAQ

If you have questions about Expo and want answers, then check out our Frequently Asked Questions!

If you still have questions you can ask them on our Discord and Forums or X @expo.

💙 The Team

Curious about who makes Expo? Here are our team members!

License

The Expo source code is made available under the MIT license. Some of the dependencies are licensed differently, with the BSD license, for example.

Star the Expo repo on GitHub to support the project

changelog

Changelog

Unpublished

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

💡 Others

15.0.2 — 2025-01-10

This version does not introduce any user-facing changes.

15.0.1 — 2024-10-22

This version does not introduce any user-facing changes.

15.0.0 — 2024-10-22

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

  • [iOS] isEnrolledAsync() returns correct value when biometry is locked out. (#30565 by @vonovak)
  • [Android] Fix authenticateAsync crash when disableDeviceFallback is true. (#32076 by @dcangulo)

14.0.1 — 2024-04-23

This version does not introduce any user-facing changes.

14.0.0 — 2024-04-18

🛠 Breaking changes

  • SecurityLevel.BIOMETRIC has been deprecated in favour of SecurityLevel.BIOMETRIC_STRONG and SecurityLevel.BIOMETRIC_WEAK. Using SecurityLevel.BIOMETRIC might lead to unexpected behaviour. (#26768 by @behenate)

🎉 New features

  • [Android] Add support for weak and strong biometric authentication. (#26768 by @behenate)

💡 Others

  • Prevent config plugin from writing permissions until prebuild. (#28107 by @EvanBacon)
  • drop unused web name property. (#27437 by @EvanBacon)
  • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)

13.8.0 — 2023-11-14

🛠 Breaking changes

13.7.0 — 2023-10-17

🛠 Breaking changes

13.6.0 — 2023-09-04

🎉 New features

  • Added support for React Native 0.73. (#24018 by @kudo)

💡 Others

13.5.0 — 2023-08-02

This version does not introduce any user-facing changes.

13.4.1 — 2023-06-13

🐛 Bug fixes

  • [Android] Fixed device credentials fallback when biometric sensors are unavailable (#22388 by @hubastard)
  • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)

13.4.0 — 2023-05-08

This version does not introduce any user-facing changes.

13.3.0 - 2023-04-10

🐛 Bug fixes

  • On iOS, fix incorrect nil check when checking for NSFaceIDUsageDescription in the Info.plist. (#21500 by @alanjhughes)

13.2.1 — 2023-02-09

This version does not introduce any user-facing changes.

13.2.0 — 2023-02-03

💡 Others

  • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)

13.1.0 — 2022-12-30

🎉 New features

  • Native module on iOS is now written in Swift using the Sweet API. (#19980 by @fobos531)

13.0.2 — 2022-11-02

This version does not introduce any user-facing changes.

13.0.1 — 2022-10-28

This version does not introduce any user-facing changes.

13.0.0 — 2022-10-25

🛠 Breaking changes

  • Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. (#18873 by @tsapeta)

💡 Others

  • [plugin] Migrate import from @expo/config-plugins to expo/config-plugins and @expo/config-types to expo/config. (#18855 by @brentvatne)
  • Updated docs link. (#18972 by @EvanBacon)
  • Drop @expo/config-plugins dependency in favor of peer dependency on expo. (#18595 by @EvanBacon)

12.3.0 — 2022-07-07

This version does not introduce any user-facing changes.

12.2.0 — 2022-04-18

🎉 New features

  • Add the ability to set confirmation requirement on Android. (#16793 by @fguitton)

🐛 Bug fixes

  • On Android fixed BiometricPrompt.ERROR_CANCELED returned when fallbacking to PIN/Pattern/Password authentication method. (#16927 by @bbarthec, @Polidoro-root)

💡 Others

⚠️ Notices

  • On Android bump compileSdkVersion to 31, targetSdkVersion to 31 and Java version to 11. (#16941 by @bbarthec)

12.1.1 - 2022-02-01

🐛 Bug fixes

  • Fix Plugin with id 'maven' not found build error from Android Gradle 7. (#16080 by @kudo)

12.1.0 — 2021-12-03

This version does not introduce any user-facing changes.

12.0.0 — 2021-09-28

🛠 Breaking changes

🐛 Bug fixes

  • Added missing definition on type LocalAuthenticationResult. (#13636 by @mstach60161)
  • Fixed detection of the available authentication types on some Samsung devices on Android. (#14300 by @beaur)
  • Fix building errors from use_frameworks! in Podfile. (#14523 by @kudo)

💡 Others

11.1.0 — 2021-06-16

🐛 Bug fixes

  • Enable kotlin in all modules. (#12716 by @wschurman)
  • Fixed authenticateAsync not resolving when the user used PIN on some Android devices. (#13023 by @lukmccall)

💡 Others

  • Removed unnecessary dependency on unimodules-constants-interface. (#12876 by @tsapeta)
  • Build Android code using Java 8 to fix Android instrumented test build error. (#12939 by @kudo)

11.0.2 — 2021-04-13

This version does not introduce any user-facing changes.

11.0.1 — 2021-04-09

🐛 Bug fixes

  • Avoid LAContext#biometryType bug on iOS 11.0.0. (#12413 by @mickamy)
  • Do not require activity existence on getKeyguardManager. (#12400 by @mickamy)
  • Flip isAuthenticating when the user dismisses the authentication dialog on Android. (#12728 by @mickamy)

11.0.0 — 2021-03-10

🛠 Breaking changes

  • Remove deprecated support for passing a string to authenticateAsync in favor of the promptMessage option. (#11906 by @EvanBacon)

🎉 New features

  • Converted plugin to TypeScript. (#11715 by @EvanBacon)
  • Updated Android build configuration to target Android 11 (added support for Android SDK 30). (#11647 by @bbarthec)
  • Added method to know enrolled security level of device. (#11780 by @mickamy)

🐛 Bug fixes

  • Remove peerDependencies and unimodulePeerDependencies from Expo modules. (#11980 by @brentvatne)

10.0.0 — 2021-01-15

🛠 Breaking changes

🎉 New features

9.5.0 — 2020-11-17

🐛 Bug fixes

  • Guard against crash on Android when FragmentActivity is null creating the Biometric Prompt. (#10679 by @vascofg)
  • Guard against Null Pointer Exception on Android when calling authenticate on the Biometric Prompt after resuming the app on some devices. (#10965 by @vascofg)

9.4.0 — 2020-10-12

🐛 Bug fixes

  • Fixed cancelAuthenticate not working in Android as expected. (#10482 by @huisf)

9.3.0 — 2020-08-18

This version does not introduce any user-facing changes.

9.2.0 — 2020-07-02

🐛 Bug fixes

  • Fix crash when NSFaceIDUsageDescription is not provided and device fallback is disabled. (#8595 by @tsapeta)
  • Added missing biometric permission to Android. (#8692 by @byCedric)
  • Use hardcoded system feature strings to support Android SDK 28. (#9034 by @bycedric)

9.1.1 — 2020-05-29

This version does not introduce any user-facing changes.

9.1.0 — 2020-05-27

🎉 New features

  • Added support for promptMessage, cancelLabel and disableDeviceFallback on Android. (#8219 by @diegolmello)
  • Added iris local authentication type for Android. (#8431 by @bycedric)

🐛 Bug fixes

  • Added estimate of supported authentication types for Android. (#8431 by @bycedric)

💡 Others

  • Removed console.warn from the authenticateAsync function, preventing running it every time the user cancels authentication or authentication fails. (#19803 by @GustavoMont)