Using NFC in Mobile Apps
Tap-to-read tags, host card emulation and Apple Wallet — what NFC actually exposes on iOS and Android in 2026.
NFC is the most "tap and go" of the radios. Both iOS and Android can scan tags out of the box, write NDEF messages, and act as virtual cards (with the right entitlements). The user experience is unbeatable when it works — and frustrating when permissions, tag types or device limits get in the way. This guide covers the production playbook.
Key Takeaways
- iPhones from XS up support background tag reading; everything older needs a foreground session.
- Android exposes the full NFC stack via NfcAdapter; iOS uses Core NFC.
- Host Card Emulation (HCE) on Android allows mobile payments; iOS keeps payments locked to Apple Pay.
- NDEF is the lingua franca of tags — start there before reaching for raw transceive.
NFC at a Glance
What It Is & How It Works
What it is. A short-range, contactless RFID variant standardised at 13.56 MHz. Tags are typically passive (powered by the reader); some devices act as readers, tags or peer-to-peer.
How it works. Use Core NFC (iOS) or NfcAdapter (Android) to start a tag scan session. The OS surfaces the tag's identifier, type and (if NDEF) parsed records.
Units & signal. UID (tag ID), record type (URI, text, MIME), payload bytes. APDUs (ISO 7816-4) for advanced flows.
What You Can Build With It
Smart posters and museum tags
Tap a sticker to open a URL or play media.
Example: A wine label that opens a tasting note in the brand app.
Asset and inventory tracking
Scan tagged equipment for check-in / check-out.
Example: A maintenance app that logs site visits when scanning equipment NFC tags.
Loyalty and ticketing
HCE-based virtual cards for transit, gym entry and offices.
Example: A corporate badge app that emulates a Mifare card.
Authentication challenges
NFC YubiKeys and FIDO2 tokens.
Example: A banking app that completes 2FA via a tap.
Permissions & Setup
Android requires only the manifest permission (auto-granted). iOS requires the NFC entitlement and a usage description string.
iOS · Info.plist
com.apple.developer.nfc.readersession.formats entitlementNFCReaderUsageDescription
Android · AndroidManifest.xml
android.permission.NFC
Code Examples
Setup
- Expo: `npx expo install react-native-nfc-manager` (requires dev build)
- iOS: enable NFC capability in Xcode and add NFCReaderUsageDescription
- Android: add NFC permission and tag intent filter to AndroidManifest.xml
import NfcManager, { NfcTech, Ndef } from 'react-native-nfc-manager';
NfcManager.start();
export async function readTag() {
try {
await NfcManager.requestTechnology(NfcTech.Ndef);
const tag = await NfcManager.getTag();
const records = tag?.ndefMessage?.map(r => Ndef.text.decodePayload(new Uint8Array(r.payload)));
return { uid: tag?.id, records };
} finally {
NfcManager.cancelTechnologyRequest();
}
}Tip: With Newly, you describe the feature you want and the AI agent wires up the sensor, permissions, and UI for you. Try it free.
Best Practices
Always parse NDEF first
NDEF covers most consumer use cases; only fall back to raw transceive when needed.
Show clear "tap" UI
NFC range is tiny — guide the user with diagrams or animated hints.
Handle session timeouts gracefully
Both platforms close idle scan sessions; surface "tap again" rather than failing silently.
Use AID-based HCE on Android
Application IDs guarantee the right service is woken up; broad filters cause conflicts with payments apps.
Common Pitfalls
Forgetting the iOS entitlement
Without it, Core NFC fails immediately at runtime.
Mitigation: Add the NFC capability in Xcode and the matching usage string.
Trying to read tags while the screen is off
Background reading needs URL-bound NDEF tags and only works on iPhone XS+ / Android with the screen on.
Mitigation: Educate users to wake the device before tapping.
Using NFC for high-bandwidth transfers
Peer-to-peer NFC is essentially deprecated; <100 kbps in practice.
Mitigation: Use NFC for handoff (URLs, BLE pairing) then switch to Wi-Fi/BLE.
When To Use It (And When Not To)
Good fit
- Tap-to-open URLs and onboarding flows
- Asset / inventory scanning
- Loyalty cards via HCE on Android
- FIDO2 NFC security keys
Look elsewhere if…
- Cross-room communication (NFC is < 4 cm)
- Large-data transfers
- iOS payments outside Apple Pay
- Background scanning on older Android without intent filters
Frequently Asked Questions
Can iOS apps emulate cards?
No — outside of Apple Pay and the very limited Wallet pass APIs, third-party HCE is not allowed on iOS.
What's NDEF?
A small standardised payload format (URL, text, MIME, smart poster) that both OSes understand without extra parsing.
Does NFC work in airplane mode?
Yes — NFC is independent of cellular/Wi-Fi state on both platforms.
How do I write a tag?
On Android use Ndef.writeNdefMessage(); on iOS use NFCNDEFReaderSession in writing mode (iOS 13+).
Build with the NFC on Newly
Ship a nfc-powered feature this week
Newly turns a description like “use the nfc to smart posters and museum tags” into a real React Native app — permissions, native modules and UI included. Full source code is yours, and you can publish to the App Store and Google Play directly from the dashboard.
Want a deeper dive on the underlying APIs? See Expo Sensors, Apple Core Motion and Android sensor framework.
