| Library version | Expo SDK | React Native | Notes |
|---|---|---|---|
6.0.x (GA) |
52+ | 0.80–0.85 | Nitro Modules, New Architecture only. Current stable. |
5.6.x |
49–51 | 0.71–0.74 | Legacy bridge build, maintenance mode (security only). |
react-native-sensitive-info ships native code, so it cannot run inside Expo Go. You need
either a custom Dev Client (npx expo run:ios / npx expo run:android) or an EAS Build.
When the native module is unavailable at runtime (typically Expo Go), every API throws a
SensitiveInfoError with a hint that points to the Dev Client / EAS workflow.
npx expo install react-native-sensitive-infoAdd the plugin to your app.json / app.config.ts:
{
"expo": {
"plugins": [
[
"react-native-sensitive-info",
{
"faceIDPermission": "Authenticate to unlock your account.",
"enableNewArchitecture": true
}
]
]
}
}| Prop | Type | Default | Effect |
|---|---|---|---|
faceIDPermission |
string | null |
"Authenticate to access your secure data." |
When a string is provided, it is written to NSFaceIDUsageDescription if the key is missing; a pre-existing value in your Info.plist is always preserved. Pass null to skip the modifier entirely (e.g. another plugin owns the key). |
enableNewArchitecture |
boolean |
true |
Writes newArchEnabled (Android) and RCT_NEW_ARCH_ENABLED (iOS) flags. |
The plugin also adds the following Android permissions automatically:
android.permission.USE_BIOMETRIC(API 28+)android.permission.USE_FINGERPRINTwithandroid:maxSdkVersion="28"(legacy fallback)
After adding the plugin:
npx expo prebuild --clean # Regenerates ios/ and android/ with the plugin applied
npx expo run:ios # or run:androidFor EAS Build:
eas build --profile development --platform ios- "native module is not available" at runtime — you are running in Expo Go. Switch to a Dev Client.
- Face ID prompt has no usage string — confirm
NSFaceIDUsageDescriptionis in the renderedios/<app>/Info.plistafterprebuild. - Biometric APIs return
softwaresecurity level on Android — confirm the device is enrolled and thatUSE_BIOMETRICwas written to the renderedAndroidManifest.xml.