v0.4.0 — More explainable raw device signals
v0.4.0 — more explainable raw device signals
This release adds compact, independently implemented observations using only Android and Apple
system APIs. The SDK still returns raw evidence only: applications remain responsible for
interpretation, transport, retention, and policy.
Highlights
Better location-source context
locationServicesEnabledseparates the system-wide service state from app authorization on both
platforms.- iOS 15+ can report
isSimulatedBySoftwareandisProducedByAccessorywhen a cached location and
CLLocationSourceInformationare available. - Missing cached locations and older iOS versions omit source fields; they are never reported as
clean observations. mockLocationAppsFoundremains in the optional public type for compatibility but is intentionally
not populated because complete discovery would require broad app enumeration.
More granular integrity evidence
- Android adds
isDebuggerWaiting, the exact matcheddangerousSystemProperties, and
loadedHookClassNamesfor loadable Xposed/Substrate/LSPosed classes. - Class lookup disables initialization, so the probe does not execute third-party initializers.
- Raw artifact coverage now includes selected KernelSU, APatch, resetprop, modern rootless
jailbreak, Dopamine, palera1n, TrollStore, ElleKit, and Frida paths, images, and environment names. - Findings remain explainable paths,
key=valuepairs, class names, or mapped images. The SDK does
not turn them into a root/jailbreak score or trust verdict.
Resource and execution context
- Android and iOS add
lowPowerModeEnabledandprocessResidentMemoryBytes. - Android adds
isLowRamDevice,runtimeMaxMemoryBytes, and
isInstalledOnExternalStoragefor the host app. - iOS adds
isIosAppOnMacandisMacCatalystAppexecution-environment flags. - Failed
/proc, Mach task, system-property, or platform-service reads omit optional values rather
than substituting zero orfalse.
Compatibility and privacy
- Backward-compatible additive API for React Native 0.76+ with the New Architecture enabled.
- No npm, Gradle, CocoaPods, or bundled native-binary dependencies were added.
- No new permissions, permission prompts, network requests, persistent identifiers,
QUERY_ALL_PACKAGES, installed-app/process inventory, or Apple Required-Reason APIs were added. - The Probe Catalog, Data Dictionary, README, public TypeScript contract, and both native
implementations describe the same optional fields and platform gating.
Upgrade
npm install react-native-device-risk-signals@0.4.0For iOS applications, refresh CocoaPods after updating the package:
cd ios && bundle exec pod installNo configuration migration is required. Consumers should treat every newly added field as optional
and preserve the distinction between “unavailable” and an observed negative value.
See the complete changelog and
Data Dictionary for field-level detail.