v0.5.0 — Richer raw device context, clearer semantics
v0.5.0 — richer raw device context, clearer semantics
This release adds 23 new raw observations implemented with Android and Apple system APIs. The SDK
still performs no network request and returns no score, trust verdict, or blocking decision.
Highlights
Detailed Android battery, power, and NFC context
batteryHealth,batteryVoltageMv,batteryTechnology, andbatteryPresentexpose the values
available from the system battery broadcast.batteryLowreports Android's own low-battery classification;powerSourcedistinguishes battery,
AC, USB, wireless, and dock power where the platform provides it.- Android 14+ may report
batteryCycleCount, while Android 9+ may report
chargeTimeRemainingMs. Unsupported values and platform sentinels are omitted. nfcAvailableandnfcEnabledreport feature/adapter state without scanning a tag, opening an NFC
flow, requesting a permission, or displaying a prompt.
Active-network context without network traffic
When the host application already declares ACCESS_NETWORK_STATE, Android may now return:
networkTransportTypesdnsServerAddressesisPrivateDnsActiveandprivateDnsServerNameactiveNetworkMtuisInternetValidatedhasCaptivePortal
These observations come from the active link's system metadata. Collection performs no DNS lookup,
socket connection, IP-reputation request, or vendor call. Missing permission and failed reads omit
the affected values. An offline result is returned only after a successful observation found no
active network.
Build, provisioning, and display topology
- Android
androidBuild.buildTimeMsexposes publicBuild.TIME; it is a platform-build timestamp,
not an app installation timestamp. - iOS
embeddedProvisioningProfilePresentreports only whether the host bundle contains
embedded.mobileprovision; the profile is not parsed. - Android adds
displayCountandpresentationDisplayCount. - iOS adds
connectedScreenCountandmirroredScreenCount; the connected count includes the main
screen.
More honest unavailable-state behavior
- iOS
isScreenMirrorednow checksUIScreen.mirroredScreen. A second display used for extended
content is not automatically classified as mirroring. - Android no longer manufactures
usbDebuggingEnabled: falsefrom a setting ordinary modern apps
cannot read reliably. The compatibility field is omitted. getTaskAllowEntitlementis reserved as an optional field but not populated: the current public
iPhoneOS SDK headers do not expose a supported entitlement lookup API. The package does not
hand-declare unsupported symbols or replace an unavailable read withfalse.
Compatibility and privacy
- Backward-compatible additive API for React Native 0.76+ with the New Architecture enabled.
- Every new field is optional and preserves the distinction between unavailable and an observed
negative value. - No npm, Gradle, CocoaPods, or bundled native-binary dependencies were added.
- No new Android permissions, permission prompts, network requests, persistent identifiers,
QUERY_ALL_PACKAGES, or Apple Required-Reason API declarations were added. - Focused TypeScript and Kotlin regressions cover field/catalog parity, platform omissions,
connectivity policy, battery enum/sentinel handling, dependency boundaries, and privacy manifests.
Upgrade
npm install react-native-device-risk-signals@0.5.0For iOS applications, refresh CocoaPods after updating the package:
cd ios && bundle exec pod installNo configuration migration is required. Hosts that already grant ACCESS_NETWORK_STATE can receive
the new Android link observations; the SDK itself still declares no permission.
See the complete changelog
and Data Dictionary
for field-level detail.