Skip to content

fix: sample with new arch enable#201

Merged
uc-brunosouza merged 2 commits into
masterfrom
fix/sample-with-new-arch-enable
Apr 14, 2026
Merged

fix: sample with new arch enable#201
uc-brunosouza merged 2 commits into
masterfrom
fix/sample-with-new-arch-enable

Conversation

@uc-brunosouza
Copy link
Copy Markdown
Collaborator

@uc-brunosouza uc-brunosouza commented Apr 13, 2026

CodeAnt-AI Description

Enable the sample app on the new React Native architecture and remove old sample references

What Changed

  • The sample app now runs with the new React Native architecture enabled on iOS and Android
  • iOS startup was updated to use the new architecture flow, so the sample launches with the current React Native setup
  • Dependency and script updates now point to the sample/ app and use the current React Native version
  • Old example and legacy-sample references were removed from setup scripts, docs, and project paths

Impact

✅ Sample app runs with the new architecture
✅ Fewer setup errors from outdated sample paths
✅ Clearer setup for local development and CI

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@uc-brunosouza uc-brunosouza self-assigned this Apr 13, 2026
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Apr 13, 2026

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 13, 2026

Important

Review skipped

Too many files!

This PR contains 151 files, which is 1 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 405c0fea-891f-469e-a7cb-1c8c2fd45551

📥 Commits

Reviewing files that changed from the base of the PR and between 26cba36 and 571910b.

⛔ Files ignored due to path filters (80)
  • example/android/app/src/main/assets/fonts/Holysthic.ttf is excluded by !**/*.ttf
  • example/android/app/src/main/assets/fonts/Lora.ttf is excluded by !**/*.ttf
  • example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • example/android/gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
  • example/assets/fonts/Lora.ttf is excluded by !**/*.ttf
  • example/assets/images/logo.png is excluded by !**/*.png
  • example/ios/Podfile.lock is excluded by !**/*.lock
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo1024@1x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo20@1x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo20@2x-1.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo20@2x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo20@3x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo29@1x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo29@2x-1.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo29@2x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo29@3x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo40@1x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo40@2x-1.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo40@2x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo40@3x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo60@2x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo60@3x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo76@1x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo76@2x.png is excluded by !**/*.png
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Logo83.5@2x.png is excluded by !**/*.png
  • example/package-lock.json is excluded by !**/package-lock.json
  • legacy-sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • legacy-sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • legacy-sample/android/gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
  • legacy-sample/assets/fonts/Lora.ttf is excluded by !**/*.ttf
  • legacy-sample/assets/images/logo.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo1024@1x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo20@1x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo20@2x-1.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo20@2x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo20@3x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo29@1x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo29@2x-1.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo29@2x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo29@3x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo40@1x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo40@2x-1.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo40@2x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo40@3x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo60@2x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo60@3x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo76@1x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo76@2x.png is excluded by !**/*.png
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Logo83.5@2x.png is excluded by !**/*.png
  • legacy-sample/package-lock.json is excluded by !**/package-lock.json
  • 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 (151)
  • .cursor/rules/project-overview.mdc
  • .cursorignore
  • .cursorindexingignore
  • .eslintignore
  • README.md
  • example/.buckconfig
  • example/.editorconfig
  • example/.eslintrc.js
  • example/.gitattributes
  • example/.gitignore
  • example/.prettierrc.js
  • example/.watchmanconfig
  • example/android/app/_BUCK
  • example/android/app/build.gradle.kts
  • example/android/app/build_defs.bzl
  • example/android/app/debug.keystore
  • example/android/app/proguard-rules.pro
  • example/android/app/src/debug/java/com/usercentrics/reactnativesdk/example/ReactNativeFlipper.kt
  • example/android/app/src/main/AndroidManifest.xml
  • example/android/app/src/main/java/com/usercentrics/reactnativesdk/example/MainActivity.kt
  • example/android/app/src/main/java/com/usercentrics/reactnativesdk/example/MainApplication.kt
  • example/android/app/src/main/jni/CMakeLists.txt
  • example/android/app/src/main/jni/OnLoad.cpp
  • example/android/app/src/main/jni/rncli.cpp
  • example/android/app/src/main/jni/rncli.h
  • example/android/app/src/main/res/values/colors.xml
  • example/android/app/src/main/res/values/strings.xml
  • example/android/app/src/main/res/values/styles.xml
  • example/android/gradle.properties
  • example/android/gradle/wrapper/gradle-wrapper.properties
  • example/android/gradlew
  • example/android/gradlew.bat
  • example/android/settings.gradle.kts
  • example/app.json
  • example/babel.config.js
  • example/generateAutolinking.js
  • example/index.js
  • example/ios/Podfile
  • example/ios/example.xcodeproj/project.pbxproj
  • example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  • example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme
  • example/ios/example.xcworkspace/contents.xcworkspacedata
  • example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • example/ios/example/AppDelegate.swift
  • example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json
  • example/ios/example/Images.xcassets/Contents.json
  • example/ios/example/Info.plist
  • example/ios/example/LaunchScreen.storyboard
  • example/ios/example/example-Bridging-Header.h
  • example/ios/exampleTests/BannerSettingsDictTests.swift
  • example/ios/exampleTests/Fake/FakeDispatchQueue.swift
  • example/ios/exampleTests/Fake/FakePresentationViewController.swift
  • example/ios/exampleTests/Fake/FakeUsercentricsManager.swift
  • example/ios/exampleTests/FirstLayerOptionsDictTests.swift
  • example/ios/exampleTests/Mock/CMPData+Mock.swift
  • example/ios/exampleTests/Mock/TCFData+Mock.swift
  • example/ios/exampleTests/Mock/TCFUserDecisions+Mock.swift
  • example/ios/exampleTests/Mock/UserDecisions+Mock.swift
  • example/ios/exampleTests/Mock/UsercentricsIsReady+Mock.swift
  • example/ios/exampleTests/Mock/UsercentricsOptions+Mock.swift
  • example/ios/exampleTests/RNUsercentricsModuleTests.swift
  • example/ios/exampleTests/ReadyStatusDictTests.swift
  • example/ios/exampleTests/TCFDecisionUILayerTests.swift
  • example/ios/exampleTests/UserDecisionDictTests.swift
  • example/ios/exampleTests/UsercentricsAnalyticsEventTypeTests.swift
  • example/ios/exampleTests/UsercentricsConsentTypeTests.swift
  • example/ios/exampleTests/UsercentricsOptionsDictTests.swift
  • example/ios/exampleTests/UsercentricsUserInteractionDictTest.swift
  • example/metro.config.js
  • example/package.json
  • example/patches/react-native+0.78.3.patch
  • example/patches/react-native-screens+3.37.0.patch
  • example/react-native.config.js
  • example/src/App.tsx
  • example/src/screens/CustomUI.tsx
  • example/src/screens/CustomizationExamples.tsx
  • example/src/screens/Home.tsx
  • example/src/screens/WebviewIntegrationScreen.tsx
  • example/src/screens/index.tsx
  • example/tsconfig.json
  • ios/RNUsercentricsModule.xcodeproj/project.pbxproj
  • legacy-sample/.buckconfig
  • legacy-sample/.eslintrc.js
  • legacy-sample/.flowconfig
  • legacy-sample/.gitattributes
  • legacy-sample/.gitignore
  • legacy-sample/.prettierrc.js
  • legacy-sample/.tool-versions
  • legacy-sample/.watchmanconfig
  • legacy-sample/__tests__/App-test.js
  • legacy-sample/_editorconfig
  • legacy-sample/android/app/_BUCK
  • legacy-sample/android/app/build.gradle
  • legacy-sample/android/app/build_defs.bzl
  • legacy-sample/android/app/debug.keystore
  • legacy-sample/android/app/proguard-rules.pro
  • legacy-sample/android/app/src/debug/AndroidManifest.xml
  • legacy-sample/android/app/src/debug/java/com/legacysample/ReactNativeFlipper.java
  • legacy-sample/android/app/src/main/AndroidManifest.xml
  • legacy-sample/android/app/src/main/java/com/usercentrics/reactnativesdk/legacy/sample/MainActivity.java
  • legacy-sample/android/app/src/main/java/com/usercentrics/reactnativesdk/legacy/sample/MainApplication.java
  • legacy-sample/android/app/src/main/res/values/colors.xml
  • legacy-sample/android/app/src/main/res/values/strings.xml
  • legacy-sample/android/app/src/main/res/values/styles.xml
  • legacy-sample/android/build.gradle
  • legacy-sample/android/gradle.properties
  • legacy-sample/android/gradle/wrapper/gradle-wrapper.properties
  • legacy-sample/android/gradlew
  • legacy-sample/android/gradlew.bat
  • legacy-sample/android/settings.gradle
  • legacy-sample/app.json
  • legacy-sample/babel.config.js
  • legacy-sample/index.js
  • legacy-sample/ios/Podfile
  • legacy-sample/ios/legacysample.xcodeproj/project.pbxproj
  • legacy-sample/ios/legacysample.xcodeproj/xcshareddata/xcschemes/legacysample.xcscheme
  • legacy-sample/ios/legacysample.xcworkspace/contents.xcworkspacedata
  • legacy-sample/ios/legacysample/AppDelegate.h
  • legacy-sample/ios/legacysample/AppDelegate.m
  • legacy-sample/ios/legacysample/Images.xcassets/AppIcon.appiconset/Contents.json
  • legacy-sample/ios/legacysample/Images.xcassets/Contents.json
  • legacy-sample/ios/legacysample/Info.plist
  • legacy-sample/ios/legacysample/LaunchScreen.storyboard
  • legacy-sample/ios/legacysample/main.m
  • legacy-sample/ios/legacysampleTests/Info.plist
  • legacy-sample/ios/legacysampleTests/legacysampleTests.m
  • legacy-sample/metro.config.js
  • legacy-sample/package.json
  • legacy-sample/react-native.config.js
  • legacy-sample/src/App.tsx
  • legacy-sample/src/screens/CustomUI.tsx
  • legacy-sample/src/screens/CustomizationExamples.tsx
  • legacy-sample/src/screens/Home.tsx
  • legacy-sample/src/screens/WebviewIntegrationScreen.tsx
  • legacy-sample/src/screens/index.tsx
  • package.json
  • sample/android/gradle/libs.versions.toml
  • sample/ios/Podfile
  • sample/ios/sample.xcodeproj/project.pbxproj
  • sample/ios/sample/AppDelegate.swift
  • sample/ios/sample/Info.plist
  • sample/package.json
  • sample/patches/react-native+0.79.6.patch
  • sample/patches/react-native-safe-area-context+5.6.1.patch
  • sample/patches/react-native-screens+4.24.0.patch
  • sample/patches/react-native-webview+13.16.0.patch
  • scripts/auto-setup.sh
  • scripts/check-requirements.sh
  • scripts/clean-all-caches.sh
  • scripts/install-dependencies.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/sample-with-new-arch-enable

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.

@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

Enable new React Native architecture and modernize sample app

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Enable new React Native architecture (TurboModules + Fabric) in sample app
• Modernize AppDelegate with ReactNativeDelegate and factory pattern
• Remove legacy sample and example folder references from scripts
• Update dependencies and React Native version to 0.81.4
• Add Podfile helper to fix ReactCodegen third-party component sources
Diagram
flowchart LR
  A["Legacy AppDelegate<br/>RCTRootView pattern"] -->|"Refactor to new arch"| B["ReactNativeDelegate<br/>RCTReactNativeFactory"]
  C["RCT_NEW_ARCH_ENABLED<br/>false"] -->|"Enable"| D["RCT_NEW_ARCH_ENABLED<br/>true"]
  E["Legacy sample/example<br/>folder references"] -->|"Remove"| F["Single sample folder<br/>in scripts"]
  G["React Native 0.79.6"] -->|"Upgrade"| H["React Native 0.81.4"]
  B --> I["Fabric + TurboModules<br/>enabled"]
  D --> I
Loading

Grey Divider

File Changes

1. sample/ios/sample/AppDelegate.swift ✨ Enhancement +30/-25

Refactor AppDelegate to new architecture pattern

sample/ios/sample/AppDelegate.swift


2. sample/ios/sample.xcodeproj/project.pbxproj ⚙️ Configuration changes +8/-14

Update Xcode project pod framework references

sample/ios/sample.xcodeproj/project.pbxproj


3. sample/ios/Podfile ✨ Enhancement +45/-1

Enable new architecture and add ReactCodegen fix

sample/ios/Podfile


View more (110)
4. sample/ios/sample/Info.plist ⚙️ Configuration changes +1/-1

Enable RCTNewArchEnabled flag in plist

sample/ios/sample/Info.plist


5. sample/package.json Dependencies +9/-11

Update dependencies and npm script commands

sample/package.json


6. sample/android/gradle/libs.versions.toml Dependencies +1/-1

Upgrade React Native to 0.81.4

sample/android/gradle/libs.versions.toml


7. scripts/clean-all-caches.sh Miscellaneous +3/-41

Remove legacy-sample folder detection logic

scripts/clean-all-caches.sh


8. scripts/install-dependencies.sh Miscellaneous +5/-26

Remove legacy-sample and fix duplicate npm install

scripts/install-dependencies.sh


9. README.md 📝 Documentation +7/-7

Update documentation to reference sample app

README.md


10. .cursor/rules/project-overview.mdc 📝 Documentation +1/-3

Remove example and legacy-sample folder references

.cursor/rules/project-overview.mdc


11. ios/RNUsercentricsModule.xcodeproj/project.pbxproj ⚙️ Configuration changes +2/-2

Update header search paths from example to sample

ios/RNUsercentricsModule.xcodeproj/project.pbxproj


12. sample/patches/react-native-screens+4.24.0.patch Formatting +1/-1

Fix patch file newline formatting

sample/patches/react-native-screens+4.24.0.patch


13. .cursorignore Additional files +0/-2

...

.cursorignore


14. .cursorindexingignore Additional files +0/-5

...

.cursorindexingignore


15. .eslintignore Additional files +0/-1

...

.eslintignore


16. example/.buckconfig Additional files +0/-6

...

example/.buckconfig


17. example/.editorconfig Additional files +0/-3

...

example/.editorconfig


18. example/.eslintrc.js Additional files +0/-11

...

example/.eslintrc.js


19. example/.gitattributes Additional files +0/-3

...

example/.gitattributes


20. example/.prettierrc.js Additional files +0/-5

...

example/.prettierrc.js


21. example/.watchmanconfig Additional files +0/-1

...

example/.watchmanconfig


22. example/android/app/_BUCK Additional files +0/-55

...

example/android/app/_BUCK


23. example/android/app/build.gradle.kts Additional files +0/-96

...

example/android/app/build.gradle.kts


24. example/android/app/build_defs.bzl Additional files +0/-19

...

example/android/app/build_defs.bzl


25. example/android/app/debug.keystore Additional files +0/-0

...

example/android/app/debug.keystore


26. example/android/app/proguard-rules.pro Additional files +0/-10

...

example/android/app/proguard-rules.pro


27. example/android/app/src/debug/java/com/usercentrics/reactnativesdk/example/ReactNativeFlipper.kt Additional files +0/-36

...

example/android/app/src/debug/java/com/usercentrics/reactnativesdk/example/ReactNativeFlipper.kt


28. example/android/app/src/main/AndroidManifest.xml Additional files +0/-25

...

example/android/app/src/main/AndroidManifest.xml


29. example/android/app/src/main/java/com/usercentrics/reactnativesdk/example/MainActivity.kt Additional files +0/-18

...

example/android/app/src/main/java/com/usercentrics/reactnativesdk/example/MainActivity.kt


30. example/android/app/src/main/java/com/usercentrics/reactnativesdk/example/MainApplication.kt Additional files +0/-77

...

example/android/app/src/main/java/com/usercentrics/reactnativesdk/example/MainApplication.kt


31. example/android/app/src/main/jni/CMakeLists.txt Additional files +0/-63

...

example/android/app/src/main/jni/CMakeLists.txt


32. example/android/app/src/main/jni/OnLoad.cpp Additional files +0/-10

...

example/android/app/src/main/jni/OnLoad.cpp


33. example/android/app/src/main/jni/rncli.cpp Additional files +0/-34

...

example/android/app/src/main/jni/rncli.cpp


34. example/android/app/src/main/jni/rncli.h Additional files +0/-25

...

example/android/app/src/main/jni/rncli.h


35. example/android/app/src/main/res/values/colors.xml Additional files +0/-6

...

example/android/app/src/main/res/values/colors.xml


36. example/android/app/src/main/res/values/strings.xml Additional files +0/-3

...

example/android/app/src/main/res/values/strings.xml


37. example/android/app/src/main/res/values/styles.xml Additional files +0/-12

...

example/android/app/src/main/res/values/styles.xml


38. example/android/gradle.properties Additional files +0/-53

...

example/android/gradle.properties


39. example/android/gradle/wrapper/gradle-wrapper.properties Additional files +0/-7

...

example/android/gradle/wrapper/gradle-wrapper.properties


40. example/android/gradlew Additional files +0/-251

...

example/android/gradlew


41. example/android/gradlew.bat Additional files +0/-92

...

example/android/gradlew.bat


42. example/android/settings.gradle.kts Additional files +0/-29

...

example/android/settings.gradle.kts


43. example/app.json Additional files +0/-4

...

example/app.json


44. example/babel.config.js Additional files +0/-3

...

example/babel.config.js


45. example/generateAutolinking.js Additional files +0/-35

...

example/generateAutolinking.js


46. example/index.js Additional files +0/-10

...

example/index.js


47. example/ios/Podfile Additional files +0/-21

...

example/ios/Podfile


48. example/ios/example.xcodeproj/project.pbxproj Additional files +0/-792

...

example/ios/example.xcodeproj/project.pbxproj


49. example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata Additional files +0/-7

...

example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata


50. example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist Additional files +0/-8

...

example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist


51. example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme Additional files +0/-99

...

example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme


52. example/ios/example.xcworkspace/contents.xcworkspacedata Additional files +0/-13

...

example/ios/example.xcworkspace/contents.xcworkspacedata


53. example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist Additional files +0/-8

...

example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist


54. example/ios/example/AppDelegate.swift Additional files +0/-34

...

example/ios/example/AppDelegate.swift


55. example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json Additional files +0/-116

...

example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json


56. example/ios/example/Images.xcassets/Contents.json Additional files +0/-6

...

example/ios/example/Images.xcassets/Contents.json


57. example/ios/example/Info.plist Additional files +0/-60

...

example/ios/example/Info.plist


58. example/ios/example/LaunchScreen.storyboard Additional files +0/-45

...

example/ios/example/LaunchScreen.storyboard


59. example/ios/example/example-Bridging-Header.h Additional files +0/-7

...

example/ios/example/example-Bridging-Header.h


60. example/ios/exampleTests/BannerSettingsDictTests.swift Additional files +0/-31

...

example/ios/exampleTests/BannerSettingsDictTests.swift


61. example/ios/exampleTests/Fake/FakeDispatchQueue.swift Additional files +0/-8

...

example/ios/exampleTests/Fake/FakeDispatchQueue.swift


62. example/ios/exampleTests/Fake/FakePresentationViewController.swift Additional files +0/-5

...

example/ios/exampleTests/Fake/FakePresentationViewController.swift


63. example/ios/exampleTests/Fake/FakeUsercentricsManager.swift Additional files +0/-238

...

example/ios/exampleTests/Fake/FakeUsercentricsManager.swift


64. example/ios/exampleTests/FirstLayerOptionsDictTests.swift Additional files +0/-237

...

example/ios/exampleTests/FirstLayerOptionsDictTests.swift


65. example/ios/exampleTests/Mock/CMPData+Mock.swift Additional files +0/-547

...

example/ios/exampleTests/Mock/CMPData+Mock.swift


66. example/ios/exampleTests/Mock/TCFData+Mock.swift Additional files +0/-103

...

example/ios/exampleTests/Mock/TCFData+Mock.swift


67. example/ios/exampleTests/Mock/TCFUserDecisions+Mock.swift Additional files +0/-80

...

example/ios/exampleTests/Mock/TCFUserDecisions+Mock.swift


68. example/ios/exampleTests/Mock/UserDecisions+Mock.swift Additional files +0/-12

...

example/ios/exampleTests/Mock/UserDecisions+Mock.swift


69. example/ios/exampleTests/Mock/UsercentricsIsReady+Mock.swift Additional files +0/-37

...

example/ios/exampleTests/Mock/UsercentricsIsReady+Mock.swift


70. example/ios/exampleTests/Mock/UsercentricsOptions+Mock.swift Additional files +0/-30

...

example/ios/exampleTests/Mock/UsercentricsOptions+Mock.swift


71. example/ios/exampleTests/RNUsercentricsModuleTests.swift Additional files +0/-663

...

example/ios/exampleTests/RNUsercentricsModuleTests.swift


72. example/ios/exampleTests/ReadyStatusDictTests.swift Additional files +0/-76

...

example/ios/exampleTests/ReadyStatusDictTests.swift


73. example/ios/exampleTests/TCFDecisionUILayerTests.swift Additional files +0/-12

...

example/ios/exampleTests/TCFDecisionUILayerTests.swift


74. example/ios/exampleTests/UserDecisionDictTests.swift Additional files +0/-23

...

example/ios/exampleTests/UserDecisionDictTests.swift


75. example/ios/exampleTests/UsercentricsAnalyticsEventTypeTests.swift Additional files +0/-11

...

example/ios/exampleTests/UsercentricsAnalyticsEventTypeTests.swift


76. example/ios/exampleTests/UsercentricsConsentTypeTests.swift Additional files +0/-12

...

example/ios/exampleTests/UsercentricsConsentTypeTests.swift


77. example/ios/exampleTests/UsercentricsOptionsDictTests.swift Additional files +0/-89

...

example/ios/exampleTests/UsercentricsOptionsDictTests.swift


78. example/ios/exampleTests/UsercentricsUserInteractionDictTest.swift Additional files +0/-15

...

example/ios/exampleTests/UsercentricsUserInteractionDictTest.swift


79. example/metro.config.js Additional files +0/-39

...

example/metro.config.js


80. example/package.json Additional files +0/-78

...

example/package.json


81. example/patches/react-native+0.78.3.patch Additional files +0/-12052

...

example/patches/react-native+0.78.3.patch


82. example/patches/react-native-screens+3.37.0.patch Additional files +0/-175

...

example/patches/react-native-screens+3.37.0.patch


83. example/react-native.config.js Additional files +0/-22

...

example/react-native.config.js


84. example/src/App.tsx Additional files +0/-33

...

example/src/App.tsx


85. example/src/screens/CustomUI.tsx Additional files +0/-336

...

example/src/screens/CustomUI.tsx


86. example/src/screens/CustomizationExamples.tsx Additional files +0/-102

...

example/src/screens/CustomizationExamples.tsx


87. example/src/screens/Home.tsx Additional files +0/-108

...

example/src/screens/Home.tsx


88. example/src/screens/WebviewIntegrationScreen.tsx Additional files +0/-86

...

example/src/screens/WebviewIntegrationScreen.tsx


89. example/src/screens/index.tsx Additional files +0/-4

...

example/src/screens/index.tsx


90. example/tsconfig.json Additional files +0/-17

...

example/tsconfig.json


91. legacy-sample/.buckconfig Additional files +0/-6

...

legacy-sample/.buckconfig


92. legacy-sample/.eslintrc.js Additional files +0/-4

...

legacy-sample/.eslintrc.js


93. legacy-sample/.flowconfig Additional files +0/-63

...

legacy-sample/.flowconfig


94. legacy-sample/.gitattributes Additional files +0/-3

...

legacy-sample/.gitattributes


95. legacy-sample/.prettierrc.js Additional files +0/-7

...

legacy-sample/.prettierrc.js


96. legacy-sample/.tool-versions Additional files +0/-1

...

legacy-sample/.tool-versions


97. legacy-sample/.watchmanconfig Additional files +0/-1

...

legacy-sample/.watchmanconfig


98. legacy-sample/__tests__/App-test.js Additional files +0/-14

...

legacy-sample/tests/App-test.js


99. legacy-sample/_editorconfig Additional files +0/-3

...

legacy-sample/_editorconfig


100. legacy-sample/android/app/_BUCK Additional files +0/-55

...

legacy-sample/android/app/_BUCK


101. legacy-sample/android/app/build_defs.bzl Additional files +0/-19

...

legacy-sample/android/app/build_defs.bzl


102. legacy-sample/android/app/debug.keystore Additional files +0/-0

...

legacy-sample/android/app/debug.keystore


103. legacy-sample/android/app/proguard-rules.pro Additional files +0/-10

...

legacy-sample/android/app/proguard-rules.pro


104. legacy-sample/android/app/src/debug/AndroidManifest.xml Additional files +0/-13

...

legacy-sample/android/app/src/debug/AndroidManifest.xml


105. legacy-sample/android/app/src/debug/java/com/legacysample/ReactNativeFlipper.java Additional files +0/-72

...

legacy-sample/android/app/src/debug/java/com/legacysample/ReactNativeFlipper.java


106. legacy-sample/android/app/src/main/AndroidManifest.xml Additional files +0/-26

...

legacy-sample/android/app/src/main/AndroidManifest.xml


107. legacy-sample/android/app/src/main/java/com/usercentrics/reactnativesdk/legacy/sample/MainActivity.java Additional files +0/-28

...

legacy-sample/android/app/src/main/java/com/usercentrics/reactnativesdk/legacy/sample/MainActivity.java


108. legacy-sample/android/app/src/main/java/com/usercentrics/reactnativesdk/legacy/sample/MainApplication.java Additional files +0/-80

...

legacy-sample/android/app/src/main/java/com/usercentrics/reactnativesdk/legacy/sample/MainApplication.java


109. legacy-sample/android/app/src/main/res/values/colors.xml Additional files +0/-6

...

legacy-sample/android/app/src/main/res/values/colors.xml


110. legacy-sample/android/app/src/main/res/values/strings.xml Additional files +0/-3

...

legacy-sample/android/app/src/main/res/values/strings.xml


111. legacy-sample/android/app/src/main/res/values/styles.xml Additional files +0/-12

...

legacy-sample/android/app/src/main/res/values/styles.xml


112. legacy-sample/android/gradle.properties Additional files +0/-30

...

legacy-sample/android/gradle.properties


113. Additional files not shown Additional files +0/-0

...

Additional files not shown


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Apr 13, 2026

Code Review by Qodo

🐞 Bugs (2)   📘 Rule violations (0)   📎 Requirement gaps (0)
🐞\ ≡ Correctness (1) ⚙ Maintainability (1)

Grey Divider


Action required

1. RN Gradle plugin mismatch 🐞
Description
The sample app is bumped to React Native 0.81.4 in the version catalog, but
sample/android/settings.gradle.kts still pins the com.facebook.react Gradle plugin to 0.79.6.
This makes the Android build apply a different React Native Gradle plugin version than the React
Native artifacts being forced/resolved for the app.
Code

sample/android/gradle/libs.versions.toml[17]

+reactNative = "0.81.4"
Evidence
The PR updates the Android version catalog to RN 0.81.4 and the sample app depends on RN 0.81.4, but
the Gradle plugin resolution is still hard-pinned to 0.79.6 in settings.gradle.kts, creating an
inconsistent build configuration.

sample/android/gradle/libs.versions.toml[1-20]
sample/package.json[20-28]
sample/android/settings.gradle.kts[1-13]
sample/android/app/build.gradle.kts[53-58]

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 sample app is now on React Native 0.81.4, but Gradle still pins the `com.facebook.react` plugin to 0.79.6 in `settings.gradle.kts`, creating a mismatched RN plugin vs RN dependency configuration.
## Issue Context
- RN version is set to 0.81.4 in the version catalog and the sample depends on `react-native@0.81.4`.
- The Gradle plugins block in `settings.gradle.kts` still uses `id("com.facebook.react") version "0.79.6"`.
## Fix Focus Areas
- sample/android/gradle/libs.versions.toml[14-18]
- sample/android/settings.gradle.kts[1-13]
## Suggested fix
- Update the pinned plugin version to `0.81.4`.
- Preferably, remove hardcoding and resolve the plugin from the included build in `node_modules/@react-native/gradle-plugin` (e.g., move `includeBuild("../node_modules/@react-native/gradle-plugin")` into `pluginManagement` and avoid an explicit version pin), so it stays in lockstep with the installed RN version.

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



Remediation recommended

2. Install script flag mismatch 🐞
Description
scripts/install-dependencies.sh runs npm install without --legacy-peer-deps, while the README
and other helper scripts instruct using npm install --legacy-peer-deps. This means `npm run
install-dependencies` does not follow the documented setup path and can yield inconsistent
dependency trees versus the supported instructions.
Code

scripts/install-dependencies.sh[R33-36]

+if npm install; then
  echo "✅ Root dependencies installed successfully"
else
  echo "❌ Failed to install root dependencies"
Evidence
The install helper script uses plain npm install, but both the README manual setup instructions
and other repo scripts explicitly direct developers to use npm install --legacy-peer-deps for root
and sample installs.

scripts/install-dependencies.sh[30-50]
README.md[99-107]
scripts/auto-setup.sh[380-394]
scripts/check-requirements.sh[279-310]

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

## Issue description
`scripts/install-dependencies.sh` runs `npm install` without `--legacy-peer-deps`, but the README and other helper scripts/documentation tell users to install with `--legacy-peer-deps`. This inconsistency makes the helper script disagree with the documented setup.
## Issue Context
- README manual setup uses `npm install --legacy-peer-deps` in both root and `sample/`.
- `auto-setup.sh` also installs with `--legacy-peer-deps`.
- `check-requirements.sh` tells users to run `npm install --legacy-peer-deps` when deps are missing.
## Fix Focus Areas
- scripts/install-dependencies.sh[30-50]
- README.md[99-107]
- scripts/auto-setup.sh[380-394]
- scripts/check-requirements.sh[279-310]
## Suggested fix
Pick one supported approach and make everything consistent:
1) If `--legacy-peer-deps` is still required/supported: update `scripts/install-dependencies.sh` to use `npm install --legacy-peer-deps` (root + sample).
2) If it is no longer needed: update README + `auto-setup.sh` + `check-requirements.sh` messaging to remove the flag and standardize on plain `npm install`.

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


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@codeant-ai codeant-ai Bot added the size:L This PR changes 100-499 lines, ignoring generated files label Apr 13, 2026
@pantoaibot
Copy link
Copy Markdown

pantoaibot Bot commented Apr 13, 2026

Auto review disabled due to large PR. If you still want me to review this PR? Please comment /review

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Apr 13, 2026

CodeAnt AI finished reviewing your PR.

Comment thread sample/android/gradle/libs.versions.toml
@uc-brunosouza uc-brunosouza force-pushed the fix/sample-with-new-arch-enable branch from 9569a6b to 571910b Compare April 13, 2026 13:52
@uc-brunosouza uc-brunosouza merged commit cd01f6d into master Apr 14, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants