revtel/react-native-nfc-manager

React Native NFC module for Android & iOS

JavaScript

1,639

720 commits

updated Oct 9, 2026

See the code

README

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 release 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.

Technology support

TechnologyAndroidiOS
NDEF, NFC-A, ISO-DEP✅✅
NFC-V / ISO 15693NfcVIso15693IOS
MIFAREMifareClassic, MifareUltralightMifareIOS
FeliCaNfcFFelicaIOS

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.

android
ios
nfc
react-native

revtel/react-native-nfc-manager

React Native NFC module for Android & iOS

JavaScript

1,639

720 commits

updated Oct 9, 2026

See the code

README

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 release 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.

Technology support

TechnologyAndroidiOS
NDEF, NFC-A, ISO-DEP✅✅
NFC-V / ISO 15693NfcVIso15693IOS
MIFAREMifareClassic, MifareUltralightMifareIOS
FeliCaNfcFFelicaIOS

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.

android
ios
nfc
react-native

Project health

Latest release

4.0.0 · Oct 9, 2026

Releases this year

5

Significant stargazers

Adriano Raiano

533 followers · starred Mar 2018

Xuan Zhang

625 followers · starred Sep 2025

DC

384 followers · starred Jun 2023

Omer Zach

24 followers · starred Mar 2019