npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kode-frontend/react-native-biometry-tools

v2.0.12

Published

Tools and helpers for biometry

Downloads

661

Readme

react-native-biometry-tools

A lightweight library for determining the supported type of biometrics.

📋 Requirements

| Requirement | Version | | --------------------- | -------- | | React Native | ≥ 0.75 | | react-native-nitro-modules | ≥ 0.35 | | iOS | ≥ 15.1 | | Android minSdkVersion | ≥ 24 |

Note: This library uses Nitro Modules.

📥 Installation

yarn add @kode-frontend/react-native-biometry-tools react-native-nitro-modules

iOS

cd example/ios && pod install

🎮 Usage

import BiometryTools, { BiometryType, isAuthenticationCanceledError } from '@kode-frontend/react-native-biometry-tools';

export default function App() {

  React.useEffect(() => {
    // Async: check if biometry is available and enrolled
    BiometryTools
      .isSensorAvailable()
      .then((biometryType) => {
          // sensor available
          // biometryType - supported biometry
      })
      .catch((e) => {
        // sensor not available
        // biometry not supported or not enrolled
        console.log(e.message)
        console.log(e.code)
      })

    // Async: get supported biometry type even if not enrolled
    BiometryTools
      .getSupportedBiometryType()
      .then((biometryType) => {
          // even if biometry not enrolled
          // biometryType - supported biometry, if biometry not supported then return null
      })

    // Sync: instantly check if biometry is available and enrolled
    const biometryType = BiometryTools.isSensorAvailableSync();
    if (biometryType) {
      console.log('Available biometry:', biometryType);
    }

    // Sync: instantly get supported biometry type even if not enrolled
    const supportedType = BiometryTools.getSupportedBiometryTypeSync();
    console.log('Supported biometry:', supportedType); // null if not supported
  }, []);

  return (
    <Button
        title="Prompt authentication"
        onPress={() => {
          BiometryTools.authenticate('Title', { 
            subtitle: 'subtitle',
            description: 'description', 
            withDeviceCredentials: true, 
            cancelText: 'Cancel' 
          })
            .then((result) => {
              console.log('Prompt result:', result);
            })
            .catch((e) => {
              if (isAuthenticationCanceledError(e)) {
                return console.log('Cancelled by user')
              }
              console.log('Prompt error:', e.message);
            });
        }}
      />
  );
}

📦 Available methods

| Method | Returns | Description | | --------------------------------------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------- | | isSensorAvailable() | Promise<BiometryType> | Returns supported biometry type if biometry is available and enrolled, otherwise throws BiometryError | | isSensorAvailableSync() | BiometryType \| null | Synchronous version of isSensorAvailable. Returns null instead of throwing | | getSupportedBiometryType() | Promise<BiometryType \| null> | Returns supported biometry type if hardware is present, null otherwise. Does not require enrollment | | getSupportedBiometryTypeSync() | BiometryType \| null | Synchronous version of getSupportedBiometryType | | authenticate(title: string, options: AuthenticateOptions) | Promise<AuthenticationResult> | Shows the biometry prompt and resolves with the authentication result |

Sync methods

isSensorAvailableSync() and getSupportedBiometryTypeSync() execute on the JS thread without bridging overhead. Use them when you need the biometry status immediately on render — for example, to conditionally show a biometry button before any async operation completes.

// Render a biometry icon without waiting for a promise
const biometryType = BiometryTools.getSupportedBiometryTypeSync();

Types


enum BiometryType {
  // ios only
  FACE_ID = 'Face ID',
  TOUCH_ID = 'Touch ID',
  // android only
  FINGERPRINT = 'Fingerprint',
  FACE = 'Face',
  IRIS = 'Iris'
}


enum BiometryErrorCode {
  // common  
  NOT_SUPPORTED = 'BiometryScannerNotSupported',
  NOT_ENROLLED = 'BiometryScannerNotEnrolled',
  // ios only
  NOT_AVAILABLE = 'BiometryScannerNotAvailable',
  PASSCODE_NOT_SET = 'PasscodeNotSet',
  DEVICE_LOCKED_PERMANENT = 'DeviceLockedPermanent'

  // authentication
  AUTHENTICATION_CANCELED = 'AuthenticationCanceledByUser',
}

type AuthenticateOptions = {
  withDeviceCredentials?: boolean,
  /**
   * Cancel button text. Android only
   */
  cancelText?: string,
  /**
   * Subtitle for prompt. Android only
   */
  subtitle?: string,
  /**
   * Description for prompt. Android only
   */
  description?: string,
}

Builds

release - create release tag and increase version