Skip to content

Release: 2.27.0#217

Merged
uc-brunosilva merged 3 commits into
masterfrom
Release/2.27.0
Jun 2, 2026
Merged

Release: 2.27.0#217
uc-brunosilva merged 3 commits into
masterfrom
Release/2.27.0

Conversation

@uc-brunosilva
Copy link
Copy Markdown
Collaborator

No description provided.

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Jun 2, 2026

Skipping CodeAnt AI review — this PR is a back-merge between long-lived branches (Release/2.27.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
Copy link
Copy Markdown

coderabbitai Bot commented Jun 2, 2026

Warning

Review limit reached

@uc-brunosilva, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 27 minutes and 43 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d77b4069-58b0-4314-a40a-f629d5d63ab3

📥 Commits

Reviewing files that changed from the base of the PR and between ea9cf47 and 467be7b.

⛔ 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 (9)
  • CHANGELOG.md
  • android/build-legacy.gradle
  • android/build.gradle.kts
  • android/src/androidTest/java/com/usercentrics/reactnative/mock/GetCMPDataMock.kt
  • android/src/main/java/com/usercentrics/reactnative/extensions/UsercentricsCMPDataExtensions.kt
  • ios/Extensions/UsercentricsCMPData+Dict.swift
  • package.json
  • sample/ios/sampleTests/Mock/CMPData+Mock.swift
  • src/models/TCF2Settings.tsx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch Release/2.27.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 and usage tips.

@uc-brunosilva uc-brunosilva requested a review from luislino-uc June 2, 2026 10:15
@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Jun 2, 2026

Review Summary by Qodo

(Agentic_describe updated until commit 467be7b)

Release 2.27.0 with mandatory label support

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Release version 2.27.0 with mandatory label feature
• Added mandatoryLabel field to TCF2Settings across platforms
• Implemented mandatory label support in Android, iOS, React Native
• Updated version numbers in build and package configuration
• Added comprehensive changelog with features and accessibility fixes
Diagram
flowchart LR
  A["Version Update<br/>2.26.3 → 2.27.0"] --> B["mandatoryLabel Field<br/>Added to TCF2Settings"]
  B --> C["Android Implementation<br/>Extensions & Mock Data"]
  B --> D["iOS Implementation<br/>Extensions & Mock Data"]
  B --> E["React Native Model<br/>TypeScript Definition"]
  C --> F["Release Notes<br/>Features & Fixes"]
  D --> F
  E --> F

Loading

Grey Divider

File Changes

1. android/build.gradle.kts ⚙️ Configuration changes +1/-1

Update Android SDK version to 2.27.0

• Updated usercentricsVersion from 2.26.3 to 2.27.0

android/build.gradle.kts


2. android/src/androidTest/java/com/usercentrics/reactnative/mock/GetCMPDataMock.kt 🧪 Tests +2/-1

Add mandatoryLabel to Android test mock data

• Added mandatoryLabel field with value "Mandatory" to mock TCF2Settings data
• Updated test mock to include new mandatory label property

android/src/androidTest/java/com/usercentrics/reactnative/mock/GetCMPDataMock.kt


3. android/src/main/java/com/usercentrics/reactnative/extensions/UsercentricsCMPDataExtensions.kt ✨ Enhancement +1/-0

Serialize mandatoryLabel in Android extensions

• Added mandatoryLabel field serialization in TCF2Settings.serialize() method
• Ensures mandatory label is included when converting settings to WritableMap

android/src/main/java/com/usercentrics/reactnative/extensions/UsercentricsCMPDataExtensions.kt


View more (5)
4. ios/Extensions/UsercentricsCMPData+Dict.swift ✨ Enhancement +1/-0

Add mandatoryLabel to iOS dictionary extension

• Added mandatoryLabel field to TCF2Settings dictionary conversion
• Includes mandatory label in iOS serialization output

ios/Extensions/UsercentricsCMPData+Dict.swift


5. sample/ios/sampleTests/Mock/CMPData+Mock.swift 🧪 Tests +3/-1

Update iOS sample mock with new fields

• Added consentOrPay and mandatoryLabel parameters to TCF2Settings mock
• Updated mock factory method to include new fields with default values

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


6. CHANGELOG.md 📝 Documentation +21/-0

Add 2.27.0 release notes and changelog

• Added comprehensive 2.27.0 release notes with features and fixes
• Documented mandatory label and hide vendor toggles implementation
• Listed multiple Android accessibility improvements (TalkBack, focus indicators)
• Included fixes for Android button alignment, iOS SPM compatibility, TV initialization
• Added Unity bridge enhancements and language change API

CHANGELOG.md


7. package.json ⚙️ Configuration changes +2/-2

Update package version to 2.27.0

• Updated version field from 2.26.3 to 2.27.0
• Updated iosPackageVersion field from 2.26.3 to 2.27.0

package.json


8. src/models/TCF2Settings.tsx ✨ Enhancement +3/-0

Add mandatoryLabel property to React Native model

• Added mandatoryLabel: string property to TCF2Settings class
• Added mandatoryLabel parameter to constructor with default value "Mandatory"
• Assigned mandatoryLabel in constructor body

src/models/TCF2Settings.tsx


Grey Divider

Qodo Logo

@uc-brunosilva uc-brunosilva self-assigned this Jun 2, 2026
@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Jun 2, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0)

Grey Divider


Action required

1. Mocks missing mandatoryLabel 🐞 Bug ≡ Correctness
Description
TCF2Settings now includes a non-optional mandatoryLabel, but src/__tests__/mocks.ts still
constructs a TCF2Settings-typed object literal without it, causing TypeScript compilation to fail.
This will break CI/unit tests for the package.
Code

src/models/TCF2Settings.tsx[R59-62]

Evidence
The model change makes mandatoryLabel required, but the existing test mock object typed as
TCF2Settings omits it, which TypeScript rejects for object literals.

src/models/TCF2Settings.tsx[59-63]
src/models/TCF2Settings.tsx[121-126]
src/tests/mocks.ts[178-238]

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

## Issue description
`TCF2Settings` added a required `mandatoryLabel` field, but the Jest test mock `tcf2Settings: TCF2Settings` is missing this property, which will fail TypeScript compilation.
## Issue Context
The native bridges now serialize `mandatoryLabel`, and the TS model declares it as required (`mandatoryLabel: string`). Any object literal typed as `TCF2Settings` must include it.
## Fix Focus Areas
- src/__tests__/mocks.ts[178-238]
- src/models/TCF2Settings.tsx[59-126]
## Expected change
Add e.g. `mandatoryLabel: "Mandatory"` to the `tcf2Settings` object in `src/__tests__/mocks.ts` (or make the field optional if it truly can be absent).

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


Grey Divider

Previous review results

Review updated until commit 467be7b

Results up to commit 467be7b


🐞 Bugs (1) 📘 Rule violations (0)


Action required
1. Mocks missing mandatoryLabel 🐞 Bug ≡ Correctness
Description
TCF2Settings now includes a non-optional mandatoryLabel, but src/__tests__/mocks.ts still
constructs a TCF2Settings-typed object literal without it, causing TypeScript compilation to fail.
This will break CI/unit tests for the package.
Code

src/models/TCF2Settings.tsx[R59-62]

Evidence
The model change makes mandatoryLabel required, but the existing test mock object typed as
TCF2Settings omits it, which TypeScript rejects for object literals.

src/models/TCF2Settings.tsx[59-63]
src/models/TCF2Settings.tsx[121-126]
src/tests/mocks.ts[178-238]

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

## Issue description
`TCF2Settings` added a required `mandatoryLabel` field, but the Jest test mock `tcf2Settings: TCF2Settings` is missing this property, which will fail TypeScript compilation.

## Issue Context
The native bridges now serialize `mandatoryLabel`, and the TS model declares it as required (`mandatoryLabel: string`). Any object literal typed as `TCF2Settings` must include it.

## Fix Focus Areas
- src/__tests__/mocks.ts[178-238]
- src/models/TCF2Settings.tsx[59-126]

## Expected change
Add e.g. `mandatoryLabel: "Mandatory"` to the `tcf2Settings` object in `src/__tests__/mocks.ts` (or make the field optional if it truly can be absent).

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


Qodo Logo

@pantoaibot
Copy link
Copy Markdown

pantoaibot Bot commented Jun 2, 2026

PR Summary:

Release 2.27.0 — Adds PUR Compliance support (mandatory label + hide-vendor toggles), accessibility fixes, Unity improvements, and exposes a new mandatoryLabel field across platforms; version bumps.

  • Features
    • PUR Compliance: Implemented "Mandatory" label rendering and option to hide vendor toggles on the second layer (behavior gated by consentOrPay.enableConsentOrPay / showTogglesForVendors).
    • Extended PUR compliance behavior to Flutter, React Native and Unity bridges.
    • Unity: exposed GDPR legal texts in getCmpData and added changeLanguage() API to the Unity bridge.
  • Data model / bridging changes
    • Added mandatoryLabel to CMP data serialization across platforms:
      • Android: UsercentricsCMPDataExtensions.kt maps "mandatoryLabel".
      • iOS: UsercentricsCMPData+Dict.swift includes "mandatoryLabel".
      • JS/TS: src/models/TCF2Settings.tsx adds mandatoryLabel property with default 'Mandatory'.
      • Tests/mocks updated to include mandatoryLabel (Android test mock, iOS sample/mock).
  • Fixes & improvements (high level)
    • Multiple Android accessibility fixes (TalkBack language/pronunciation, focus indicators, button/link/accordion announcements, focus handling, semantic exposure of history table/headings).
    • Android/iOS/TV/Unity fixes: button alignment, preview-page blocking, Xcode 26 SPM fix, Samsung TV AbortController error.
  • Packaging / versioning
    • Bumped package version to 2.27.0 (package.json, iosPackageVersion) and usercentrics_version in android build files.
  • Compatibility / breaking changes
    • No breaking changes expected — new behavior is gated behind consentOrPay flags and mandatoryLabel has a default ('Mandatory') to preserve backwards compatibility.

Reviewed by Panto AI

Comment thread src/models/TCF2Settings.tsx
@pantoaibot
Copy link
Copy Markdown

pantoaibot Bot commented Jun 2, 2026

Reviewed up to commit:467be7bb4f86cef288b0561b87896fb1ca24b5ae

Looks good to me! 👍

Additional Suggestion
Others - You bumped the package/native versions in multiple places (package.json -> 2.27.0, iosPackageVersion -> 2.27.0, android/build-legacy.gradle and android/build.gradle.kts usercentrics version). Before publishing, validate the full release matrix: run `yarn compile`, run Android Gradle sync and an Android instrumentation build, and run `pod install` + `pod spec lint` for iOS to confirm CocoaPods picks up the new iosPackageVersion. Also ensure generated/native codegen artifacts (generate-codegen-jni.js) are executed and included in the packaged release so consumers don't get mismatched JS/native APIs.

Reviewed by Panto AI

@pantoaibot
Copy link
Copy Markdown

pantoaibot Bot commented Jun 2, 2026

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

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Jun 2, 2026

Code review by qodo was updated up to the latest commit 467be7b

@uc-brunosilva uc-brunosilva merged commit 1ea68b5 into master Jun 2, 2026
10 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.

2 participants