---
title: Incompatible changes
description: Incompatible changes refer to changes that impact existing functionality and might have an effect on your deployment. Before you upgrade, review these lists and make the appropriate changes to your scripts and plugins.
component: orchsdks
page_id: orchsdks:release-notes:breaking/breaking-changes
canonical_url: https://developer.pingidentity.com/orchsdks/release-notes/breaking/breaking-changes.html
revdate: Tue, 13 Jun 2023 13:08:39 +0100
section_ids:
  ANDROID482: Orchestration SDK for Android 4.8.2
  IOS400: ForgeRock SDK for iOS 4.0.0
  ANDROID400: ForgeRock SDK for Android 4.0.0
  JS400: ForgeRock SDK for JavaScript 4.0.0
---

# Incompatible changes

*Incompatible changes* refer to changes that impact existing functionality and might have an effect on your deployment. Before you upgrade, review these lists and make the appropriate changes to your scripts and plugins.

## Orchestration SDK for Android 4.8.2

* Upgraded cryptographic libraries

  The libraries the Orchestration SDK for Android use to handle **application PIN** unlocking during device binding have been updated in this release.

  If you application supports an application PIN during device binding you must update your app to use the updated library when upgrading to Orchestration SDK for Android 4.8.2.

  1. In the **Project** tree view of your Android Studio project, open your `build.gradle` file.

  2. In the `dependencies` section, update the application PIN dependency as follows:

     Old dependency:

     ```kotlin
     implementation 'com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0'
     ```

     Updated dependency:

     ```kotlin
     implementation 'org.bouncycastle:bcpkix-jdk18on:1.81'
     ```

  3. In the `android` section, and the following packaging statement to handle any potential manifest conflicts:

     ```kotlin
     android {
         packaging {
             resources.excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF")
         }
     }
     ```

## ForgeRock SDK for iOS 4.0.0

* Exception changes

  * The `FRAClient.updateAccount()` method now throws `AccountError.accountLocked` when attempting to update a locked account.

  * The `HOTPMechanism.generateCode()` and `TOTPMechanism.generateCode()` methods now throw AccountError.accountLocked when attempting to get an OATH token for a locked account.

* Method signature changes

  The signature of the following methods has changed:

  * `WebAuthnRegistrationCallback`

    * Old

      ```swift
      public func register(
        node: Node? = nil,
        onSuccess: @escaping StringCompletionCallback,
        onError: @escaping ErrorCallback
      )
      ```

    * New

      ```swift
      public func register(
        node: Node? = nil,
        window: UIWindow? = UIApplication.shared.windows.first,
        deviceName: String? = nil,
        usePasskeysIfAvailable: Bool = false,
        onSuccess: @escaping StringCompletionCallback,
        onError: @escaping ErrorCallback
      )
      ```

  * `WebAuthnAuthenticationCallback`

    * Old

      ```swift
      public func authenticate(
        node: Node? = nil,
        onSuccess: @escaping StringCompletionCallback,
        onError: @escaping ErrorCallback
      )
      ```

    * New

      ```swift
      public func authenticate(
        node: Node? = nil,
        window: UIWindow? = UIApplication.shared.windows.first,
        preferImmediatelyAvailableCredentials: Bool = false,
        usePasskeysIfAvailable: Bool = false,
        onSuccess: @escaping StringCompletionCallback,
        onError: @escaping ErrorCallback
      )
      ```

  * `FacebookSignInHandler`

    * Old

      ```swift
      public static func handle(
        _ application: UIApplication,
        _ url: URL,
        _ options: [UIApplication.OpenURLOptionsKey : Any] = [:]
      ) -> Bool
      ```

    * New

      ```swift
      public static func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
      ) -> Bool
      ```

      |   |                                                                                                                                                                                                                           |
      | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      |   | In ForgeRock SDK for Android 4.0.0 and later, make calls to the method using:`application(_ application:, didFinishLaunchingWithOptions launchOptions: )`Not the previous call:`application(_ app:, open url:, options:)` |

## ForgeRock SDK for Android 4.0.0

* Removed support for native single sign-on (SSO)

  The Android platform has deprecated `sharedUserId` that underpins the ForgeRock SDK for Android native SSO implementation.

  This native SSO implementation will not be viable after `sharedUserId` is removed from the Android platform.

  Due to this deprecation, ForgeRock SDK for Android 4.0.0 removes support for Android native single sign-on, as well as the following related changes:

  * `AuthenticatorService` is removed. Remove `<service>` from your `AndroidManifest.xml` file.

  * The ForgeRock SDK for Android no longer requires the following permissions:

    * `android.permission.AUTHENTICATE_ACCOUNTS`

    * `android.permission.GET_ACCOUNTS`

    * `android.permission.MANAGE_ACCOUNTS`

    * `android.permission.USE_CREDENTIALS`

  * The ForgeRock SDK for Android no longer requires the following configuration properties:

    * `forgerock`

    * `forgerock_account_name`

    * `forgerock_webauthn_account_name`

    * `forgerock_webauthn_max_credential`

    * `forgerock_enable_sso`

* Method signature changes

  The signature of the following methods has changed:

  * `WebAuthnRegistrationCallback`

    * Old

      ```java
      public void register(Node node,FRListener<Void> listener)
      ```

    * New

      ```java
      suspend fun register(context: Context, node: Node)
      ```

  * `WebAuthAuthenticationCallback`

    * Old

      ```java
      public void authenticate(
        @NonNull Fragment fragment,
        @NonNull Node node,
        @Nullable WebAuthnKeySelector selector,
        FRListener<Void> listener
      )
      ```

    * New

      ```java
      suspend fun authenticate(
        context: Context,
        node: Node,
        selector: WebAuthnKeySelector = WebAuthnKeySelector.DEFAULT
      )
      ```

  * `org.forgerock.android.auth.FRAClient`

    * Old

      ```java
      public boolean updateAccount(@NonNull Account account)
      ```

    * New

      ```java
      public boolean updateAccount(@NonNull Account account)
        throws AccountLockException
      ```

  * `org.forgerock.android.auth.HOTPMechanism`

    * Old

      ```java
      public OathTokenCode getOathTokenCode()
        throws OathMechanismException
      ```

    * New

      ```java
      public OathTokenCode getOathTokenCode()
        throws OathMechanismException, AccountLockException
      ```

  * `org.forgerock.android.auth.OathMechanism`

    * Old

      ```java
      public abstract OathTokenCode getOathTokenCode()
        throws OathMechanismException
      ```

    * New

      ```java
      public abstract OathTokenCode getOathTokenCode()
        throws OathMechanismException, AccountLockException
      ```

  * `org.forgerock.android.auth.TOTPMechanism`

    * Old

      ```java
      public OathTokenCode getOathTokenCode()
        throws OathMechanismException
      ```

    * New

      ```java
      public OathTokenCode getOathTokenCode()
        throws OathMechanismException, AccountLockException
      ```

## ForgeRock SDK for JavaScript 4.0.0

* No longer provides Universal Module Definition (UMD) support

  This version of the ForgeRock SDK for JavaScript does not provide a UMD bundle.

  If you require UMD support, you can:

  * Use an earlier version of the ForgeRock SDK for JavaScript, such as 3.4.0.

  * Clone the repository with the latest source code and configure it locally to provide UMD support.

    |   |                                                                                                                          |
    | - | ------------------------------------------------------------------------------------------------------------------------ |
    |   | Support for CommonJS (CJS) and ES Modules (ESM) is not affected and still provided in ForgeRock SDK for JavaScript 4.0.0 |

* Removal of `indexedDB` token store

  The `indexedDB` option has been removed from the `tokenStore` configuration property in ForgeRock SDK for JavaScript 4.0.0. The `indexedDB` option did not offer sufficient functionality or reliability when the browser is using a private or incognito window.

  If you are using the `indexedDB` option after upgrading to ForgeRock SDK for JavaScript 4.0.0 it is ignored and the SDK defaults to using the `localStorage` option instead. A warning message is output to the browser console.

  This change will not affect the functionality of your app.

* Updated `Policy` types

  Updated policy types so that a `PolicyRequirement` array is output from `failedPolicies`.

* Removed duplicate modules

  Removed the `FRUI` and `Event` modules from the ForgeRock SDK for JavaScript repository.

  These modules were incorrectly duplicated from the [`forgerock-javascript-sdk-ui`](https://github.com/ForgeRock/forgerock-javascript-sdk-ui) repository.
