# react-native-local-auth **Repository Path**: mirrors_mattermost/react-native-local-auth ## Basic Information - **Project Name**: react-native-local-auth - **Description**: React Native authentication with the native Touch ID popup. - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-22 - **Last Updated**: 2026-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # react-native-local-auth Authenticate users with Touch ID, with optional fallback to passcode (if TouchID is unavailable or not enrolled). Most of the code and documentation is originally from [react-native-touch-id](https://github.com/naoufal/react-native-touch-id), but together with [naoufal](https://github.com/naoufal) we decided that fallback to passcode didn't belong in [react-native-touch-id](https://github.com/naoufal/react-native-touch-id). ## Documentation - [UI](https://github.com/tradle/react-native-local-auth#ui) - [Install](https://github.com/tradle/react-native-local-auth#install) - [Usage](https://github.com/tradle/react-native-local-auth#usage) - [Errors](https://github.com/tradle/react-native-local-auth#errors) - [License](https://github.com/tradle/react-native-local-auth#license) ## UI If TouchID is supported and enrolled (in this gif, 1st touch fails, 2nd succeeds) ![Touch ID](gifs/touchID.gif) If TouchID is not supported or not enrolled, you can fallback to device passcode ![fallback to passcode](gifs/fallback to passcode.gif) ## Install ```shell npm i --save react-native-local-auth ``` ### Linking the Library First link the library to your project. There's excellent documentation on how to do this in the [React Native Docs](http://facebook.github.io/react-native/docs/linking-libraries-ios.html#content). #### Android 1. Open up `android/app/src/main/java/[...]/MainActivity.java` - Add `import io.tradle.reactlocalauth.LocalAuthPackage;` to the imports at the top of the file - Add `new LocalAuthPackage()` to the list returned by the `getPackages()` method 2. Append the following lines to `android/settings.gradle`: ``` include ':react-native-local-auth' project(':react-native-local-auth').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-local-auth/android') ``` 3. Insert the following lines inside the dependencies block in `android/app/build.gradle`: ``` compile project(':react-native-local-auth') ``` ## Usage ```js var LocalAuth = require('react-native-local-auth') var YourComponent = React.createClass({ _pressHandler() { LocalAuth.authenticate({ reason: 'this is a secure area, please authenticate yourself', fallbackToPasscode: true, // fallback to passcode on cancel suppressEnterPassword: true // disallow Enter Password fallback }) .then(success => { AlertIOS.alert('Authenticated Successfully') }) .catch(error => { AlertIOS.alert('Authentication Failed', error.message) }) }, render() { return ( ... Authenticate with Touch ID / Passcode ) } }) ``` ### hasTouchID() check if Touch ID is supported. Returns a `Promise` object. ## Errors There are various reasons why authenticating with Touch ID or device passcode may fail. Whenever authentication fails, `LocalAuth.authenticate` will return an error code representing the reason. Below is a list of error codes that can be returned: | Code | Description | |---|---| | `LAErrorAuthenticationFailed` | Authentication was not successful because the user failed to provide valid credentials. | | `LAErrorUserCancel` | Authentication was canceled by the user—for example, the user tapped Cancel in the dialog. | | `LAErrorUserFallback` | Authentication was canceled because the user tapped the fallback button (Enter Password). | | `LAErrorSystemCancel` | Authentication was canceled by system—for example, if another application came to foreground while the authentication dialog was up. | | `LAErrorPasscodeNotSet` | Authentication could not start because the passcode is not set on the device. | | `LAErrorTouchIDNotAvailable` | Authentication could not start because Touch ID is not available on the device | | `LAErrorTouchIDNotEnrolled` | Authentication could not start because Touch ID has no enrolled fingers. | | `RCTTouchIDUnknownError` | Could not authenticate for an unknown reason. | | `RCTTouchIDNotSupported` | Device does not support Touch ID. | _More information on errors can be found in [Apple's Documentation](https://developer.apple.com/library/prerelease/ios/documentation/LocalAuthentication/Reference/LAContext_Class/index.html#//apple_ref/c/tdef/LAError)._ ## License ISC. [react-native-touch-id](https://github.com/naoufal/react-native-touch-id) license also included.