Skip to main content
Mobile SDK Changelog

React Native version v4.0.0

· 5 min read

Overview

This release performs two main changes:

  1. Provide support for React Native's new architecture
  2. Leverage Expo modules API to simplify maintenance

With these changes in place, it is recommended to use this version of the SDK with the following versions in place:

  • React Native ~0.79
  • Expo ~53
  • React ~19

Expo modules

If you are working on a bare React Native app, you'll need to follow the instructions from Expo on how to add Expo modules in a bare React Native App.

Please notice that the automatic approach to add support relies on your native code to match the code generated by React Native 0.79. If you have files that are not updated properly, it will fail to patch them and will require your manual intervention.

Changes

Breaking changes

  • initializeUXComponents now returns a Result with either a value, or an error, instead of Promise<string>. The value is a UXComponentsStatus, matching the structure offered by the iOS SDK notifying of success, and whether the user needs to re-login after the upgrade.
  • createToken used to return a dictionary of values which may contain an error inside. Instead, it now returns a Result with either error or value, with value being the dictionary of tokens.
  • KYC Events:
    • onKycSdkTerminate event now returns a boolean under verification rather than a string representing the boolean under Varification.
    • onKycFailed returns a dictionary with error, rather than an array where the description is in the second item.

Additions

  • setAppCheckToken is added

Deprecations

  • Result will still contain a result with the same value contained in value for backwards compatibility, but this is deprecated and will be removed in the future.

Asynchronous calls that become synchronous

The SDK can turn some asynchronous functions into synchronous functions thanks to Expo modules.

If you were awaiting on these methods, the await call will behave in the same way it did in the past.

The following functions have been converted into synchronous:

  • isAssociated
  • resetAssociation, it also returns a boolean rather than any.
  • updateFCMToken
  • initializePSA
  • checkReadyForAuth
  • checkIsReadyForEnrollment
  • clearCache
  • getDeviceFingerPrint, and is also available in iOS.
  • getSDKVersion, and is also available in iOS.

Backwards compatible improvements

  • setUserToken now returns a Result that contains either a value or an error. Before it was returning the same, but it was announced as Promise<any>.
  • matchComponents becomes Promise<boolean>, rather than Promise<any>. No change in behaviour, just type.
  • The process to get tags to match components or create multiple tokens in one go is overhauled. In previous versions, you'd call getTag, await a callback on onGetTag, and then passing the value received to the relevant method. From now on, getTag is a Promise that returns a string with the value to use.
  • checkDeviceIsEnrolled returns the result in the value key of the dictionary. The SDK kept the old result value for backwards compatibility, but it's marked as deprecated and will eventually be deleted.
  • startChallenge now returns Promise<Result<WeavrChallengeResult, WeavrError>>. This is the same structure that was provided in the past, but the type is more re-usable within our SDK.
  • KYC Events:
    • onKycSdkTerminate event now returns a string under successTermination rather than under Success Termination to make it more JS friendly. The previous approach is still available but will be deprecated.
    • onKycCompleteFailed now returns the error in error, as well as under message for backwards compatibility. message is deprecated.
    • Added onKycEvent to notify about step initiated, completed and applicant loaded in its value property.

Additional functionality inherited from native components:

The Biometric Authentication component now supports the authentication of the end user via password rather than passcode. The password is used in two scenarios related to biometrics:

  1. As a pre-requisite to biometrics enrolment, to authenticate the user for the first time
  2. As a fall-back method of authenticating the user if biometrics fails (e.g. fingerprint not recognised)

1. Pre-requisites

Configure Weavr Authentication to "Password" in the embedder portal. If necessary, this can be applied for you in sandbox by Weavr support.

Integrate to the Password Component to authenticate the user for the first time; see password component documentation.

2. Fall-back authentication method

If during biometric login, biometrics fails (e.g. fingerprint not recognised), the SDK will automatically provide a screen for the user to authenticate via the alternative method of their password.


version v3.0.0

· 3 min read

Overview

The v3 release introduces a unified biometric enrolment and authentication process across platforms.

Note: Users who were previously enrolled using earlier SDK versions will be required to re-enrol due to changes in the token architecture introduced in v3.

  • A refresh of the Firebase JSON is required in sandbox (and production if applicable). The new firebase token will work with the v3 SDK. If you had previously provided a firebase token (to work with v1 or v2 SDK), this will no longer be displayed in the embedder portal, but it will still be applicable for that SDK.
  • Changes to un-enrolment behaviour. Previously, a new user was allowed to enrol on a device that was already being used; and the old user would be unenrolled automatically. Now, the app must be uninstalled, or the user unlinked via multi-API, before a new user can enrol on the device. See un-enrolment section of the docs.

React Native

Minimum supported iOS version: 15.1

Legacy compatibility support for iOS versions below 15.1 has been dropped.

Android

In your Android sources, remove the following repository reference:

maven {
url "https://gitlab.okaythis.com/api/v4/projects/15/packages/maven"
name "GitLab"
}

Key changes

The iOS and android functionality have been unified

  • The biometrics user enrolment flow now requires an OTP. This is delivered via SMS, and input by the user into an integrated screen in the component.
  • The ability to exchange tokens via the SDK has been removed. For the biometrics login flow, the auth token is shared via webhook only and must be exchanged for an access token via your backend to the Weavr multi API.

version v2.0.1

· 2 min read

React Native v2.0.1

Major changes to biometrics authentication component

Changes in Enrol a device flow

  • Built in two factor authentication. The user must input an SMS OTP in a screen in the SDK as part of the enrolment.

Changes in enrolment and login flows:

  • Removed the functionality to exchange an auth token for an access token in the SDK.
  • The auth token is shared via webhook only and this must be exchanged for an access token via your backend to the Weavr multi API.

SafetyNet Deprecation

  • Obtain integrity key id ( server key ) from your Google Cloud Account to use in biometric authentication. Process has changed slightly in v3.0.0

Version updates

  • Java Version Update: The SDK now requires Java 17 (previously Java 8). Ensure your project is configured to use Java 17.
  • Gradle Version Update: The SDK now requires Gradle 8.7 (previously Gradle 7.5). Upgrade your project to this Gradle version to ensure compatibility.
  • Kotlin Version Update: The SDK has been updated to use Kotlin 8.6.0 (previously 7.4.2). Ensure your project is configured to use Kotlin 8.6.0 or higher to avoid compatibility issues.

User-data collection fix

Fix to remove user-data collection from the app to the identity-verification provider. Otherwise full disclosure would be required under android rules.

Other minor improvements to KYC component:

  • Added support for per-level countries and territories restrictions.
  • Added support for immutable Applicant Data fields.

version v1.6.5

· One min read

React Native V1.6.5

SDK updated to target Android 14 (API Level 34). For full details of android configuration, please refer to the Get started with React Native SDK section.

Migrated from JCenter Repository to MavenCentral.


version v1.6.0

· One min read

React Native V1.6.0

  • Support for 3DS
  • Performance improvements for Biometrics & Login
  • Bug fixed related to Apple Push Notification Service (code change needed)
  • Following two functions return type has been changed from string to boolean.
    • checkIsReadyForEnrollment
    • checkReadyForAuth
if (isIOS) {
checkIsReadyForEnrollment()
.then((res) => {
dLog("enrolment ready: " + res);
if (res) {
startEnrollment(fcmToken!, globalToken!)
.then((res) => {
dLog(res);
Toast.show(res, 1);
})
.catch((e) => {
dLog(e);
Toast.show(e.toString(), 1);
});
} else {
Toast.show("You are not ready for Enrolment", 1);
}
})
.catch((e) => {
dLog(e);
Toast.show(e.toString(), 1);
});
} else {
startEnrolment(fcmToken!, globalToken!)
.then((res) => {
dLog(res);
Toast.show(res, 1);
})
.catch((e) => {
dLog(e);
Toast.show(e.toString(), 1);
});
}