Skip to content

Release: 2.31.0 - #243

Merged
islameldesoky95 merged 2 commits into
masterfrom
release/2.31.0
Sep 10, 2026
Merged

Release: 2.31.0#243
islameldesoky95 merged 2 commits into
masterfrom
release/2.31.0

Conversation

@islameldesoky95

@islameldesoky95 islameldesoky95 commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Bumps the native Usercentrics SDK dependency to 2.31.0 and includes the merged edge-to-edge (MSDK-4636) and controllerId (MSDK-4525) bridge work. See MSDK-4191.

Summary by CodeRabbit

  • New Features

    • Added support for displaying an edge-to-edge banner on Android in React Native.
    • Added controllerId support to the React Native bridge and configuration options.
    • Added initial native bridge support for Unreal Engine.
  • Bug Fixes

    • Corrected handling of the version parameter when settings are loaded from cache.
  • Chores

    • Updated the package and native SDK versions to 2.31.0.

@codeant-ai

codeant-ai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Skipping CodeAnt AI review — this PR is a back-merge between long-lived branches (release/2.31.0master). The diff here has already been reviewed when the underlying commits landed on the source branch, so re-running analysis would produce duplicate findings on already-reviewed code.

If you want to analyze this anyway (e.g. you resolved conflicts with new logic), comment @codeant-ai : review and CodeAnt will start a review.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review limit reached

Next included review available in 29 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: ecf7f392-3eb5-457a-8492-e1a649c0f024

📥 Commits

Reviewing files that changed from the base of the PR and between 8009da6 and bcdfa27.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • sample/ios/sampleTests/Mock/UsercentricsOptions+Mock.swift

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 0472078b-ec8f-42d5-9b61-681820357756

📥 Commits

Reviewing files that changed from the base of the PR and between 678b144 and 8009da6.

⛔ Files ignored due to path filters (3)
  • package-lock.json is excluded by !**/package-lock.json
  • sample/ios/Podfile.lock is excluded by !**/*.lock
  • sample/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (3)
  • CHANGELOG.md
  • android/build.gradle.kts
  • package.json

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The release metadata now targets version 2.31.0. The Android dependency uses Usercentrics SDK 2.31.0. The changelog documents the release features, fix, and dependency updates.

Changes

2.31.0 Release Alignment

Layer / File(s) Summary
Version and release metadata
package.json, android/build.gradle.kts, CHANGELOG.md
Package metadata and the Android Usercentrics SDK dependency now use version 2.31.0. The changelog documents the release contents and dependency updates.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: asadraza-usercentrics, uc-brunosilva

Merge Risk: ⚪ Minimal · up to 8009d

The release metadata and Android dependency are aligned for version 2.31.0, with the documented release scope included. No actionable merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (2 skipped: 2 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies this pull request as the 2.31.0 release, which matches the stated objectives and version updates.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/2.31.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

qodo-code-review Bot commented Sep 10, 2026

Copy link
Copy Markdown

PR Summary by Qodo

Release React Native SDK 2.31.0

✨ Enhancement 🐞 Bug fix 🧪 Tests 📝 Documentation ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Releases React Native SDK and native Android/iOS dependencies at version 2.31.0.
• Documents cross-platform edge-to-edge, controllerId, cache, Unreal, and security changes.
• Extends the iOS options test mock with controllerId support.
Diagram

graph TD
  REL["Release 2.31.0"] --> MAN["Package metadata"] --> LOCK["iOS Pod lock"] --> IOS["iOS SDK 2.31"]
  REL --> AND["Android build"] --> ASDK["Android SDK 2.31"]
  REL --> NOTES["Release notes"]
  MOCK["iOS test mock"] --> IOS
Loading
High-Level Assessment

The current release-oriented approach is appropriate: update each platform's required version source, regenerate committed lockfiles, document the bundled changes, and adapt the affected test mock. Centralizing every version into one source was considered, but the package, Gradle, and CocoaPods ecosystems require separate metadata and generated locks.

Files changed (7) +35 / -16

Tests (1) +3 / -2
UsercentricsOptions+Mock.swiftAdd controllerId to the iOS options mock +3/-2

Add controllerId to the iOS options mock

• Extends the mock factory with an optional controllerId and forwards it to the native UsercentricsOptions initializer, keeping tests compatible with the 2.31.0 API.

sample/ios/sampleTests/Mock/UsercentricsOptions+Mock.swift

Documentation (1) +18 / -0
CHANGELOG.mdDocument the complete 2.31.0 cross-platform release +18/-0

Document the complete 2.31.0 cross-platform release

• Adds release notes for edge-to-edge banners, controllerId injection, Unreal bridge scaffolding, the Android cached-version fix, native SDK upgrades, and security dependency patches.

CHANGELOG.md

Other (5) +14 / -14
build.gradle.ktsUpgrade the Android Usercentrics SDK to 2.31.0 +1/-1

Upgrade the Android Usercentrics SDK to 2.31.0

• Updates the Gradle version used by the Usercentrics UI dependency from 2.30.0 to 2.31.0.

android/build.gradle.kts

package-lock.jsonSynchronize root package lock version to 2.31.0 +2/-2

Synchronize root package lock version to 2.31.0

• Updates the root package and lockfile package entry to the new React Native SDK release version.

package-lock.json

package.jsonPublish package and iOS bindings as 2.31.0 +2/-2

Publish package and iOS bindings as 2.31.0

• Bumps the npm package version and the native iOS package dependency version to 2.31.0.

package.json

Podfile.lockResolve sample iOS dependencies at 2.31.0 +8/-8

Resolve sample iOS dependencies at 2.31.0

• Pins react-native-usercentrics, Usercentrics, and UsercentricsUI to 2.31.0 and refreshes their CocoaPods checksums.

sample/ios/Podfile.lock

package-lock.jsonRefresh TypeScript lockfile dependency metadata +1/-1

Refresh TypeScript lockfile dependency metadata

• Marks the sample application's TypeScript package as a development dependency instead of a development-optional dependency.

sample/package-lock.json

@pantoaibot

pantoaibot Bot commented Sep 10, 2026

Copy link
Copy Markdown

PR Summary:

Release 2.31.0 release metadata and version bumps.

  • Updated CHANGELOG.md with 2.31.0 release notes: RN edge-to-edge consent banner handling, added controllerId to RN bridge options and core UsercentricsOptions, Unreal Engine bridge scaffolding, Android fix for UsercentricsOptions version being ignored when cached settings exist, and security dependency bumps.
  • Bumped Android native SDK variable in android/build.gradle.kts: usercentricsVersion 2.30.0 -> 2.31.0.
  • Bumped package.json versions: "version" and "iosPackageVersion" to 2.31.0.
  • No code changes beyond metadata/version updates in this diff; no breaking changes introduced here.

Reviewed by Panto AI

@qodo-code-review

qodo-code-review Bot commented Sep 10, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. iOS tests drop mocked controller IDs 🐞 Bug ≡ Correctness
Description
mock(controllerId:) forwards the value into UsercentricsOptions, but asDict(mockObject:) omits
the corresponding dictionary entry. Any test that round-trips a non-nil controller ID through this
helper initializes options without it, allowing bridge regressions to pass under an incomplete
fixture.
Code

sample/ios/sampleTests/Mock/UsercentricsOptions+Mock.swift[R14-15]

+                   controllerId: String? = nil) -> UsercentricsOptions {
+    return UsercentricsOptions(settingsId: settingsId, defaultLanguage: defaultLanguage, version: version, timeoutMillis: timeoutMillis, loggerLevel: loggerLevel, ruleSetId: ruleSetId, consentMediation: consentMediation, domains: domains, initTimeoutMillis: initTimeoutMillis, controllerId: controllerId)
Evidence
The changed helper exposes and forwards controllerId, while its adjacent asDict serializer emits
every established option except that new value. The production decoder only sets the native option
when the controllerId key exists, proving that omission from this helper loses the supplied value.

sample/ios/sampleTests/Mock/UsercentricsOptions+Mock.swift[13-28]
ios/Extensions/UsercentricsOptions+Dict.swift[44-46]
sample/ios/sampleTests/RNUsercentricsModuleTests.swift[29-38]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The iOS options mock now accepts and stores `controllerId`, but `asDict(mockObject:)` drops that value when constructing the bridge input dictionary.

## Fix Focus Areas
- sample/ios/sampleTests/Mock/UsercentricsOptions+Mock.swift[17-28]

## Recommended Fix
Build the options dictionary as a mutable dictionary and conditionally add `controllerId` when `expectedOptions.controllerId` is non-nil, preserving the existing omission behavior for nil values. Add or update a test that passes a controller ID through `mock` and `asDict` and verifies that the decoded options retain it.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
Review mode: ⚖️ Balanced: This release updates a native SDK and modifies bridge-facing Swift options, introducing behavioral compatibility risk beyond the otherwise mechanical version and lockfile changes.

Grey Divider

Tip of the day
💡 Did you know, you can turn these tips off under Display preferences

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread CHANGELOG.md
Comment thread android/build.gradle.kts
Comment thread package.json
@pantoaibot

pantoaibot Bot commented Sep 10, 2026

Copy link
Copy Markdown

Reviewed up to commit:8009da6c95dbb40fd0bd347af1ca9e48d936b362

Additional Suggestion
Others - This release note and version bump mention bridge additions (edge-to-edge, controllerId). Those changes typically require regenerated native bridge artifacts (codegen/JNI and any generated Objective‑C/Swift / Java glue). Confirm that the codegen step (scripts/generate-codegen-jni.js or similar) was executed and that the generated JNI / bridge files have been included in the PR. If generated artifacts are missing, consumers (or CI publish) will fail to build the native module. Actionable steps: run the project codegen script, run `yarn compile`, commit generated native bridge files (android/ and ios/ codegen outputs) and the compiled lib, then run a full Android and iOS build to verify.

Reviewed by Panto AI

@islameldesoky95
islameldesoky95 deleted the release/2.31.0 branch September 10, 2026 10:37
@pantoaibot

pantoaibot Bot commented Sep 10, 2026

Copy link
Copy Markdown

Do you want me to review this PR? Please comment /review .

@qodo-code-review

Copy link
Copy Markdown

Code review by qodo was updated up to the latest commit 8009da6

@islameldesoky95
islameldesoky95 merged commit ee0d62d into master Sep 10, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants