# ZSM Client SDK for React Native Apps

The ZSM Client SDK for React Native Apps provides the resources needed to integrate Ideem's Universal MFA into React Native applications.

## Resources:

- Support Email: support@useideem.com
- Support Site: [https://support.useideem.com](https://support.useideem.com)
- Documentation: [https://docs.useideem.com](https://docs.useideem.com)

## Known Issues

- None

---

## Release 2.8.5 - July 8, 2026 [ NPM PACKAGE RELEASE ] **[ LATEST ]**

### Improvements

- Simplified SDK configuration and initialization
- Refreshed example app UI across platforms for improved consistency and usability
- Expanded log display area for better visibility during testing
- Removed unused payment amount fields from Android example applications

### Fixed

- Resolved an issue with Passkeys+ enrollment across multiple devices, ensuring existing passkeys are reused instead of creating duplicate passkey credentials.

---

## Release 2.8.4 - June 4, 2026 [ NPM PACKAGE RELEASE ]

- Incorporates capabilities from the 2.8.4 Android and iOS SDK releases (Passkey re-enroll flow, second-device enrollment fix, `checkUserCredentialState` no-identity guard)
- Added `"re-enroll"` / `"reenroll"` as a special `userVerification` value on `UMFAClient.enroll(userId, { userVerification })` — triggers PasskeysPlus re-enrollment for an existing user. Always uses a fresh registration (CREATE) ceremony, clearing any stale local passkey metadata first. This handles the case where the OS passkey was deleted from the device credential store without calling `unenroll()`. The server replaces the old passkey credential on finish. Call `validateToken` with the returned credential after re-enroll to activate the new passkey on the server
- Hardened the JS pre-enrollment short-circuit in `UMFAClient.enroll()` so that **re-enroll requests** and **second-device enrollments** (server has credentials, local state is `NONE`) fall through to the native `UMFAClient.enroll()` instead of returning `{ alreadyEnrolled: true }`. Without this, the new native 2.8.4 fixes were unreachable from React Native
- Added `UMFAClient.isPasskeysSupported()` as a deprecated alias of `isPasskeySupported()` for parity with the iOS / Android native API surfaces — prefer `isPasskeySupported()` in new code
- Sample app (`platforms/react/apps/umfa/App.jsx`): added a "Re-enroll Passkey" button to both the Login and Logged-In screens, mirroring the new `UMFAViewModel` flows added to the `umfa_swift`, `umfa_objc`, and Android UMFA sample apps
- Added `sync-native-binaries.sh` helper in the RN module to refresh the bundled `ios/ZSM.xcframework` and `android/libs/zsm-classes.jar` + `jniLibs/<abi>/libzsm.so` from the canonical native build outputs — run this after a native rebuild and before `pack-module.sh`
- New 2.8.4 versioned docs at `platforms/docs/src/react-native/2.8.4/` mirroring the iOS / Android 2.8.4 doc layout

## Release 2.8.3 - May 13, 2026 [ NPM PACKAGE RELEASE ]

- Incorporates capabilities from the 2.8.3 Android and iOS SDK releases
- Added `checkAllEnrollmentsWithRemoteCheck(userId, forceRemoteCheck)` native bridge method on both iOS and Android — passes the full normalized enrollment response to JavaScript, including `hasLocalPasskey`, `hasRemotePasskey`, `zsmCredID`, `pkpCredID`, `zsmCredentialID`, `pkpCredentialID`, `mpcEnrollment`, `passkeyEnrollment`, `state`, `enrollmentActive`, and more
- Added `getNativeEnrollmentInfo(userIdentifier, forceRemoteCheck)` JS wrapper — prefers the new bridge method with automatic fallback to the legacy `checkAllEnrollments` for backward compatibility with older bridge versions
- All enrollment-check call sites in `umfa-client.js` updated to use `getNativeEnrollmentInfo(userIdentifier, true)` — enrollment status now always reflects both local and server state

## Release 2.8.1 - March 27, 2026 [ NPM PACKAGE RELEASE ]

- Incorporates capabilities from the latest 2.8.x Android and iOS SDK releases
- Updates to userVerification parameter handling for Passkeys+
- Improved support for handling Passkeys+ attempts on devices that do not support Passkeys
- Removed internally deprecated calls, no external impact
- Addition of client SDK version to logs

## Release 2.7.0 - February 17, 2026 [ NPM PACKAGE RELEASE ]

- Initial implementation of Passkeys+ for React Native
- Region configuration support

## Release 2.5.0 - December 12, 2025 [ NPM PACKAGE RELEASE ]

- Resolution of Babel dependencies
- Additional changes for User Verification (UV) settings

## Release 2.4.7 - December 2, 2025 [ NPM PACKAGE RELEASE ]

- Updated handling of User Verification (UV) value in credentials
- Resolved minor issues

## Release 2.4.6 - August 22, 2025 [ NPM PACKAGE RELEASE ]

- Resolved gradle-related publishing issue

## Release 2.4.5 - August 1, 2025 [ NPM PACKAGE RELEASE ]

- Optimized flow for UMFAClient.enroll()
- Library size reduction
- Resolve issue with UMFAClient.unenroll()

## Release 2.4.4 - Jul 18, 2025 [ NPM PACKAGE RELEASE ]

- Minor bug fixes and improvements
- Token validation endpoints now accept any of the valid token types transparently
- Improved error handling and debugging capabilities
- Extended Sample Application to better demonstrate validation options

## Release 2.4.3 - Jul 17, 2025 [ NPM PACKAGE RELEASE ]

- Minor bug fixes and improvements
- Updates to documentation
- Upgrades to both the UMFAClient and FIDO2Client for better performance
- Improved IdentityID handling
- Extended support for optional environments in UMFA CLI
- Enhanced error handling and debugging capabilities
- Extended Origin support for MTLS and Passkey flows
- Added synchronous support for UMFAClient and FIDO2Client
- Removed legacy shell scripts
- Added local artifactory for setup, installation, and testing

## Release 2.4.2 - July 1, 2025

- Added support for React Native 0.72
- Added support for Android 14
- Added support for iOS 17

## Release 2.4.1 - June 18, 2025 [ NPM PACKAGE RELEASE ]

- Altered credential object return value
- Updates to documentation
- Updates to example apps

## Release 2.4.0 - June 14, 2025

- Lowered base React Native support to 0.60
- Lowered Android support to AndroidOS 7 / API 24
- Updates to documentation
- Updates to example apps

## Release 2.3.0 - April 11, 2025 [ NPM PACKAGE RELEASE ]

- Added optimized UMFA flows
- Updates to WASM build artifacts
- Update example UMFA application
- Minor bug fixes and improvements
- Documentation and Version Bump Changes

## Release 2.2.5 - January 27, 2025

- Added React Native support, through new NPM package @ideem/zsm-react-native
