← Back to Projects

rn-passport-reader

Read NFC-enabled passports and ID cards using BAC authentication. Extracts face photo, signature, and personal details on iOS & Android.

React NativeExpoNFCPassportBAC

rn-passport-reader

React Native Expo module for reading NFC-enabled passports and ID cards using BAC (Basic Access Control). Extracts all available data including face photo, signature, and personal details.

Features

  • BAC (Basic Access Control) authentication
  • DG1–DG14 data group extraction
  • Face photo & signature as base64 JPEG
  • Active & passive authentication status
  • Real-time progress tracking events
  • Expo Config Plugin for automatic NFC entitlement setup
  • iOS: Uses NFCPassportReader (Swift Package)
  • Android: Uses JMRTD + Scuba

Data Groups

Group Content Fields
DG1 MRZ info firstName, lastName, gender, nationality, documentNumber, dateOfBirth, expiryDate
DG2 Face photo faceImageBase64
DG7 Signature/mark signatureImageBase64
DG11 Personal details placeOfBirth, fullName, personalNumber, telephone, profession
DG12 Document details issuingAuthority, dateOfIssue, endorsements
DG14 Security info Used for active authentication

Installation

npx expo install rn-passport-reader

Usage

import { readPassport, PassportData } from "rn-passport-reader";

try {
  const data: PassportData = await readPassport(
    "AB1234567",  // Document number
    "900101",     // Date of birth (YYMMDD)
    "300101"      // Date of expiry (YYMMDD)
  );

  console.log(data.firstName, data.lastName);
  console.log(data.isVerified);
} catch (error) {
  console.error("NFC read failed:", error);
}

Requirements

  • iOS 15.1+
  • Android minSdk 24 (Android 7.0+)
  • Expo SDK 51+
  • Device with NFC hardware

License

MIT