diff --git a/CHANGELOG.md b/CHANGELOG.md index 37ae4df..5f11e2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ [Release Notes](https://docs.usercentrics.com/cmp_in_app_sdk/latest/about/history/) +### 2.24.4 – Jan 27, 2026 +## Improvement +* Added a new feature allowing admins to show or hide the "Manage Settings" button +* Added TCF Storage Disclosures and detailed storage information views for CTV. +* Updated logic to ensure unsaved Legitimate Interest settings are correctly captured even after a user clicks "Deny All. +* Added status text for Legitimate Interest (LI) toggles on Android TV and AppleTV to clearly show if they are enabled/disabled +* UI improvements and fixes + ### 2.24.3 – Dec 18, 2025 ## Improvement * Updated CTV first layer CMP to fully align with TCF requirements by displaying purposes and stacks based on the Admin UI configuration, matching web and mobile behavior. diff --git a/android/build-legacy.gradle b/android/build-legacy.gradle index d7a6fd3..cc00f23 100644 --- a/android/build-legacy.gradle +++ b/android/build-legacy.gradle @@ -1,4 +1,4 @@ -def usercentrics_version = "2.24.3" +def usercentrics_version = "2.24.4" version usercentrics_version buildscript { diff --git a/android/build.gradle.kts b/android/build.gradle.kts index ceaf174..723713f 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,4 +1,4 @@ -val usercentricsVersion = "2.24.3" +val usercentricsVersion = "2.24.4" val reactNativeVersion = "+" fun BooleanProperty(name: String): Boolean { diff --git a/android/src/test/java/com/usercentrics/reactnative/fake/FakePromise.kt b/android/src/test/java/com/usercentrics/reactnative/fake/FakePromise.kt index e27c325..9f026b2 100644 --- a/android/src/test/java/com/usercentrics/reactnative/fake/FakePromise.kt +++ b/android/src/test/java/com/usercentrics/reactnative/fake/FakePromise.kt @@ -20,17 +20,17 @@ internal class FakePromise : Promise { lock.countDown() } - override fun reject(code: String, message: String?) { + override fun reject(code: String?, message: String?) { rejectThrowable = RuntimeException("$code: $message") lock.countDown() } - override fun reject(code: String, throwable: Throwable?) { + override fun reject(code: String?, throwable: Throwable?) { rejectThrowable = throwable ?: RuntimeException(code) lock.countDown() } - override fun reject(code: String, message: String?, throwable: Throwable?) { + override fun reject(code: String?, message: String?, throwable: Throwable?) { rejectThrowable = throwable ?: RuntimeException("$code: $message") lock.countDown() } @@ -45,17 +45,17 @@ internal class FakePromise : Promise { lock.countDown() } - override fun reject(code: String, userInfo: WritableMap) { + override fun reject(code: String?, userInfo: WritableMap) { rejectThrowable = RuntimeException("$code: $userInfo") lock.countDown() } - override fun reject(code: String, throwable: Throwable?, userInfo: WritableMap) { + override fun reject(code: String?, throwable: Throwable?, userInfo: WritableMap) { rejectThrowable = throwable lock.countDown() } - override fun reject(code: String, message: String?, userInfo: WritableMap) { + override fun reject(code: String?, message: String?, userInfo: WritableMap) { rejectThrowable = RuntimeException("$code: $message") lock.countDown() } diff --git a/package-lock.json b/package-lock.json index 5d83a81..a2a20ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@usercentrics/react-native-sdk", - "version": "2.24.3", + "version": "2.24.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@usercentrics/react-native-sdk", - "version": "2.24.3", + "version": "2.24.4", "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@babel/core": "^7.25.10", diff --git a/package.json b/package.json index 40e26e7..5b266e4 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "@usercentrics/react-native-sdk", - "version": "2.24.3", + "version": "2.24.4", "description": "Usercentrics SDK", "homepage": "https://usercentrics.com", "main": "lib/index.js", "types": "lib/index.d.ts", "author": "Usercentrics ", "iosPackageName": "react-native-usercentrics", - "iosPackageVersion": "2.24.3", + "iosPackageVersion": "2.24.4", "license": "SEE LICENSE IN LICENSE", "files": [ "android", diff --git a/sample/ios/Podfile.lock b/sample/ios/Podfile.lock index 07f226f..70fdcdb 100644 --- a/sample/ios/Podfile.lock +++ b/sample/ios/Podfile.lock @@ -1750,10 +1750,10 @@ PODS: - SocketRocket - react-native-safe-area-context (5.6.1): - React-Core - - react-native-usercentrics (2.24.3): + - react-native-usercentrics (2.24.4): - React-Core - React-NativeModulesApple - - UsercentricsUI (= 2.24.3) + - UsercentricsUI (= 2.24.4) - react-native-webview (13.16.0): - boost - DoubleConversion @@ -2317,9 +2317,9 @@ PODS: - SocketRocket - Yoga - SocketRocket (0.7.1) - - Usercentrics (2.24.3) - - UsercentricsUI (2.24.3): - - Usercentrics (= 2.24.3) + - Usercentrics (2.24.4) + - UsercentricsUI (2.24.4): + - Usercentrics (= 2.24.4) - Yoga (0.0.0) DEPENDENCIES: diff --git a/sample/ios/sampleTests/Mock/CMPData+Mock.swift b/sample/ios/sampleTests/Mock/CMPData+Mock.swift index 409ae2d..5a2ff64 100644 --- a/sample/ios/sampleTests/Mock/CMPData+Mock.swift +++ b/sample/ios/sampleTests/Mock/CMPData+Mock.swift @@ -317,6 +317,7 @@ extension TCF2Settings { dataSharedOutsideEUText: "dataSharedOutsideEUText", vendorIdsOutsideEUList: [1,2,3], firstLayerHideButtonDeny: true, + hideButtonManageSettings: false, secondLayerHideButtonDeny: true, publisherCountryCode: "publisherCountryCode", purposeOneTreatment: true, @@ -353,7 +354,8 @@ extension UsercentricsCustomization { overlayOpacity: 123, font: .mock(), color: .mock(), - logoAltTag: "logoAltTag") + logoAltTag: "logoAltTag", + buttonAlignment: "center") } }