A beautiful, modern NFC tag reader and writer app built with React Native
Seamlessly read from and write to NFC tags with an intuitive, aesthetically pleasing interface that supports both light and dark modes.
- π NFC Tag Reading - Scan and decode NDEF data from NFC tags
- βοΈ NFC Tag Writing - Write custom text messages to NFC tags
- π Tag Information - View detailed tag metadata including ID, technologies, and NDEF records
- β‘ Real-time Status - Live NFC support and enablement detection
- π Dark/Light Mode - Automatic theme switching based on system preferences
- π± Modern Design - Clean, card-based layout with smooth animations
- π― Accessibility - High contrast colors and readable typography
- π Status Indicators - Visual feedback with color-coded status dots
- π« Smooth Interactions - Responsive touch feedback and transitions
- TypeScript - Full type safety and better developer experience
- Error Handling - Comprehensive error handling and user feedback
- Performance - Optimized for smooth performance and battery efficiency
- Node.js (v16 or higher)
- React Native CLI
- Android Studio
- Physical device with NFC capability (NFC doesn't work on simulators)
-
Clone the repository
git clone https://github.com/atharvdange618/nfc-manager-app.git cd nfc-manager-app -
Install dependencies
npm install # or yarn install -
Run the app
npx react-native run-android
react-native- The React Native frameworkreact-native-nfc-manager- NFC functionality for React Native@types/react- TypeScript definitions for React@types/react-native- TypeScript definitions for React Native
{
"react": "19.1.0",
"react-native": "0.80.0",
"react-native-nfc-manager": "^3.16.1"
}nfc-manager-app/
βββ π src/
β βββ π components/
β β βββ App.tsx # Main app component
β βββ π utils/
β βββ withNdef.ts # NFC utility functions
βββ π android/ # Android-specific files
βββ π ios/ # iOS-specific files
βββ π package.json
βββ π tsconfig.json
βββ π README.md
- Ensure NFC is enabled on your device
- Tap "Start Reading" button
- Bring your device close to an NFC tag
- View the results in the tag information section
- Enter your text in the input field
- Tap "Write to Tag" button
- Approach the NFC tag with your device
- Confirmation message will appear when writing is complete
The app displays comprehensive information about scanned tags:
- Tag ID - Unique identifier
- Technologies - Supported NFC technologies
- NDEF Records - Structured data content
- Raw Payload - Hex representation of data
Add these permissions to your android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.NFC" />
<uses-feature
android:name="android.hardware.nfc"
android:required="true" />The app uses a comprehensive theme system that automatically adapts to system preferences:
const theme = {
background: isDarkMode ? "#0F0F0F" : "#FFFFFF",
surface: isDarkMode ? "#1C1C1E" : "#F8F9FA",
primary: "#007AFF",
success: "#34C759",
// ... more theme properties
};All styles are defined using StyleSheet.create() with responsive design principles:
const styles = StyleSheet.create({
card: {
borderRadius: 16,
padding: 20,
shadowColor: "#000",
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.05,
shadowRadius: 8,
elevation: 3,
},
// ... more styles
});- Physical device with NFC capability
- NFC tags for testing (NTAG213, NTAG215, or NTAG216 recommended)
- NFC enabled in device settings
- NFC detection works correctly
- Reading various tag types
- Writing text to tags
- Error handling for disabled NFC
- Dark/light mode switching
- UI responsiveness on different screen sizes
- Lazy loading of NFC operations
- Efficient re-renders with React hooks
- Memory management for tag data
- Battery optimization with proper NFC session management
- Always call
NfcManager.start()on app initialization - Properly handle NFC session cleanup
- Use
useCallbackfor event handlers - Implement proper error boundaries
- No sensitive data storage - All operations are session-based
- Secure NFC operations - Using official react-native-nfc-manager
- Input validation - Proper validation of user input before writing
- Error handling - Comprehensive error handling prevents crashes
- No data collection - The app doesn't collect or transmit user data
- Local operations only - All NFC operations happen locally on device
- No network requests - Fully offline functionality
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow TypeScript best practices
- Maintain consistent code formatting
- Write meaningful commit messages
- Test on Android
- Update documentation as needed
This project is licensed under the MIT License.
- react-native-nfc-manager - For providing excellent NFC functionality
- React Native Community - For the amazing framework and ecosystem
- NFC Forum - For NFC standards and specifications
- π Documentation - Check this README and code comments
- π Issues - Report bugs via GitHub Issues
- π§ Email - Contact us at atharvdange.dev@gmail.com
- NFC not working on simulator - Use a physical device
- Permission denied - Check NFC permissions in device settings
- App crashes on tag read - Ensure NFC is enabled and try again
Made with β€οΈ by a developer who loves NFC technology
β Star this project β’ π Report Bug β’ π‘ Request Feature

