Skip to content

v0.4.0 — More explainable raw device signals

Choose a tag to compare

@AfanasievN AfanasievN released this 21 Jul 10:51
· 34 commits to main since this release

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

  • locationServicesEnabled separates the system-wide service state from app authorization on both
    platforms.
  • iOS 15+ can report isSimulatedBySoftware and isProducedByAccessory when a cached location and
    CLLocationSourceInformation are available.
  • Missing cached locations and older iOS versions omit source fields; they are never reported as
    clean observations.
  • mockLocationAppsFound remains 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 matched dangerousSystemProperties, and
    loadedHookClassNames for 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=value pairs, 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 lowPowerModeEnabled and processResidentMemoryBytes.
  • Android adds isLowRamDevice, runtimeMaxMemoryBytes, and
    isInstalledOnExternalStorage for the host app.
  • iOS adds isIosAppOnMac and isMacCatalystApp execution-environment flags.
  • Failed /proc, Mach task, system-property, or platform-service reads omit optional values rather
    than substituting zero or false.

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.0

For iOS applications, refresh CocoaPods after updating the package:

cd ios && bundle exec pod install

No 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.