{"_id":"@ayuutolimited/react-native-sdk","name":"@ayuutolimited/react-native-sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ayuutolimited/react-native-sdk","version":"1.0.0","description":"AyuutoKYC React Native SDK — WebView + NFC bridge","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.72.0","react-native-nfc-manager":">=3.0.0","react-native-webview":">=13.0.0"},"devDependencies":{"@types/react":"^18.3.29","@types/react-native":"^0.73.0","react-native":"^0.85.3","react-native-nfc-manager":"^3.17.2","react-native-safe-area-context":"^5.8.0","react-native-webview":"^13.16.1","typescript":"^5.9.3"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ByteSurgeonAmos/ayuutokyc-sdk.git"},"keywords":["kyc","identity-verification","react-native","nfc"],"author":{"name":"Ayuuto"},"gitHead":"ae6347d3ce57c20732f55eba9d218bbbc8db8216","_id":"@ayuutolimited/react-native-sdk@1.0.0","bugs":{"url":"https://github.com/ByteSurgeonAmos/ayuutokyc-sdk/issues"},"homepage":"https://github.com/ByteSurgeonAmos/ayuutokyc-sdk#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-j/Hq4u1uocV+chrTd5VoT0WzuaIf4AZez3R+SDG/GCPoU+A2+a/trtBuR6Lwho1WSbGQwdyKMEyXtqnXCKGxOQ==","shasum":"801489b2f1096b83e2240bfdc4f58c64a4d32155","tarball":"https://registry.npmjs.org/@ayuutolimited/react-native-sdk/-/react-native-sdk-1.0.0.tgz","fileCount":34,"unpackedSize":47744,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAu5kGErbNRTmCJ8/t3qvmxSa6M7QK0mHFaSAgmOmuyDAiEAudm3aQ3OXTQA15svNKS0GYrWRJ+LJX92/LO+HrIoFws="}]},"_npmUser":{"name":"ayuutolimited","email":"tenantmanager11@gmail.com"},"directories":{},"maintainers":[{"name":"ayuutolimited","email":"tenantmanager11@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-sdk_1.0.0_1779732079875_0.5128883627956902"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-25T18:01:19.716Z","1.0.0":"2026-05-25T18:01:20.034Z","modified":"2026-05-25T18:01:20.274Z"},"maintainers":[{"name":"ayuutolimited","email":"tenantmanager11@gmail.com"}],"description":"AyuutoKYC React Native SDK — WebView + NFC bridge","homepage":"https://github.com/ByteSurgeonAmos/ayuutokyc-sdk#readme","keywords":["kyc","identity-verification","react-native","nfc"],"repository":{"type":"git","url":"git+https://github.com/ByteSurgeonAmos/ayuutokyc-sdk.git"},"author":{"name":"Ayuuto"},"bugs":{"url":"https://github.com/ByteSurgeonAmos/ayuutokyc-sdk/issues"},"license":"MIT","readme":"# @ayuutokyc/react-native-sdk\n\nReact Native SDK for AyuutoKYC identity verification. WebView-based with native NFC bridge.\n\n## Installation\n\n```bash\nnpm install @ayuutokyc/react-native-sdk react-native-webview react-native-nfc-manager react-native-permissions\ncd ios && pod install\n```\n\n## iOS setup\n\nAdd to `Info.plist`:\n\n```xml\n<key>NSCameraUsageDescription</key>\n<string>Used to capture your identity document and selfie</string>\n<key>NSMicrophoneUsageDescription</key>\n<string>Used during the liveness check</string>\n<key>NFCReaderUsageDescription</key>\n<string>Used to read your identity document chip</string>\n```\n\n**NFC requires** the `Near Field Communication Tag Reading` capability in your Apple developer account.\n\n## Android setup\n\nAdd to `AndroidManifest.xml` (inside `<manifest>`, before `<application>`):\n\n```xml\n<uses-permission android:name=\"android.permission.NFC\" />\n<uses-permission android:name=\"android.permission.CAMERA\" />\n<uses-feature android:name=\"android.hardware.nfc\" android:required=\"false\" />\n<uses-feature android:name=\"android.hardware.camera\" android:required=\"false\" />\n```\n\n## Usage\n\n### Component (embed in existing screen)\n\n```tsx\nimport { AyuutoKYC } from '@ayuutokyc/react-native-sdk';\n\n<AyuutoKYC\n  baseUrl=\"https://kyc.ayuuto.com\"\n  sessionId={session.id}\n  sessionToken={session.token}\n  onStep={(step, progress, total) => console.log(step, progress, total)}\n  onSuccess={(result) => navigation.navigate('Success', { result })}\n  onError={(err) => Alert.alert('Error', err.message)}\n  onCancel={() => navigation.goBack()}\n/>\n```\n\n### Modal (full-screen overlay)\n\n```tsx\nimport { KYCModal } from '@ayuutokyc/react-native-sdk';\n\n<KYCModal\n  visible={showKyc}\n  onRequestClose={() => setShowKyc(false)}\n  baseUrl=\"https://kyc.ayuuto.com\"\n  sessionId={session.id}\n  sessionToken={session.token}\n  onSuccess={handleSuccess}\n  onError={handleError}\n  onCancel={() => setShowKyc(false)}\n/>\n```\n\n## Session creation\n\nSessions are always created server-side. Never expose your API key in the mobile app.\n\n```typescript\n// Your backend (Node.js example)\nconst response = await fetch('https://api.ayuuto.com/v1/kyc/sessions', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json',\n    'x-api-key': process.env.AYUUTO_API_KEY,\n  },\n  body: JSON.stringify({ reference: userId, expiresInMinutes: 30 }),\n});\nconst { sessionId, sessionToken } = await response.json();\n// Pass sessionId + sessionToken to mobile app — never the API key\n```\n\n## Events\n\n| Callback | When | Payload |\n|----------|------|---------|\n| `onStep` | Every step transition | `(step: string, progress: number, total: number)` |\n| `onSuccess` | Verification complete | `KYCResult` |\n| `onError` | Unrecoverable error | `KYCError` |\n| `onCancel` | User exits / closes | — |\n\n## NFC support\n\nNFC chip reading happens automatically when the user selects a supported document:\n\n| Country | Documents |\n|---------|-----------|\n| Kenya | ePassport, Maisha Card (NATIONAL_ID) |\n| Ghana | ePassport, Ghana Card |\n| South Africa | ePassport, Smart ID |\n| Nigeria, Uganda, Tanzania, Rwanda, Ethiopia | ePassport only |\n\nIf the device has no NFC or the user's document doesn't have a chip, the flow continues without NFC — no configuration needed.\n\n## Example app\n\nSee `example/` for a bare React Native demo app. Update the constants at the top of `example/App.tsx` before running:\n\n```bash\ncd example\nnpx react-native run-ios    # requires pod install first\nnpx react-native run-android\n```\n\n## TypeScript\n\nFull TypeScript support. Key types exported from the package:\n\n```typescript\nimport type {\n  KYCConfig,\n  KYCResult,\n  KYCResultDetails,\n  KYCError,\n  KYCTheme,\n  NFCChipData,\n} from '@ayuutokyc/react-native-sdk';\n```\n","readmeFilename":"README.md","_rev":"1-ac6804125eec34da8af247ca496ecd77"}