Skip to content
Projects

revtel/react-native-nfc-manager

View on GitHub

revtel/react-native-nfc-manager has 1,645 GitHub stars and 350 forks. GitHot measured +2 stars in 24 hours. Last checked 2026-11-07 04:03 UTC. Last push 2026-10-27.

How these counts are measured

React Native NFC module for Android & iOS

Measured star growth

in 24h
+2
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

react-native-nfc-manager

npm version CI

NFC for React Native, built for the New Architecture and Expo Development Builds.

Requires React Native 0.76+ with the New Architecture. Use an NFC-capable physical device to test scans.

Versions

  • v4 (current): The stable New Architecture line on npm latest, developed on main.
  • v3 (legacy): Existing v3 or Legacy Architecture apps can install react-native-nfc-manager@3. Source and documentation remain on the v3 branch.

Installation

npm install react-native-nfc-manager

Pin the resolved version for reproducible installs. See migration when upgrading an existing app.

Expo Development Builds

Expo Go cannot load this native module. Add the config plugin to app.json:

{
  "expo": {
    "plugins": ["react-native-nfc-manager"]
  }
}

Install the development client and build the native app:

npx expo install expo-dev-client
npx expo prebuild
npx expo run:ios --device
# Or: npx expo run:android --device
npx expo start --dev-client

Rebuild after changing native dependencies or plugin options. For iOS capabilities and plugin options, see Expo setup.

React Native CLI

Read an NDEF tag

Call this function from a user action. It prevents overlapping scans and awaits cleanup before allowing another request.

import NfcManager, {NfcTech} from 'react-native-nfc-manager';

let scanning = false;

async function readNdef() {
  if (scanning) return;
  scanning = true;
  let requestAttempted = false;
  try {
    await NfcManager.start();
    requestAttempted = true;
    await NfcManager.requestTechnology(NfcTech.Ndef);
    const tag = await NfcManager.getTag();
    console.log('NDEF records', tag?.ndefMessage ?? []);
  } catch (error) {
    console.warn('NFC scan ended', error);
  } finally {
    try {
      if (requestAttempted) {
        await NfcManager.cancelTechnologyRequest();
      }
    } catch (cleanupError) {
      console.warn('NFC cleanup failed', cleanupError);
    } finally {
      scanning = false;
    }
  }
}

For a complete React screen and session lifecycle, see reading NDEF tags.

To retrieve tag information before authentication, use getTag({readNdef: false}) to skip iOS's implicit NDEF read. Android still returns any discovery-time NDEF cache. See read control and platform details.

Technology support

Technology Android iOS
NDEF, NFC-A, ISO-DEP ✅ ✅
NFC-V / ISO 15693 NfcV Iso15693IOS
MIFARE MifareClassic, MifareUltralight MifareIOS
FeliCa NfcF FelicaIOS

See the full technology and handler table. Actual tag support depends on the device and OS.

Documentation

Read the v4 documentation website. The Markdown index is also available in this repository.

Examples and contributing

The development example exercises the New Architecture API. Contributing includes build instructions and the NFC ReWriter app.

Created by whitedogg13.

Explore related projects