Repository navigation
Conversation
5 tasks
🎉 All green!🧪 All tests passed 🔗 Commit SHA: 1ebc9bc | Docs | View more details | Give us feedback! |
This was referenced Oct 21, 2026
Route independent RUM hooks through the selected native Flags client and preserve telemetry opt-out. Warn once when core tracking helpers are unavailable, with regression coverage and updated usage guidance. Ref: FFL-3355
Keep the new tracking hooks Android-only and preserve the existing iOS dependency and installation requirements. Disable optional hooks on iOS with a one-time warning and reject direct independent bridge calls as unsupported. Add platform regression coverage and document the deferred iOS rollout.
Preserve successful DEFAULT assignments in independent tracking hooks. Send only tracking metadata to native and avoid serializing flag values. Add rules/precomputed regression tests and sparse Android payload coverage.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Add independent native-backed OpenFeature tracking hooks for
DatadogCoreProvideron Android only (FFL-3355):createDatadogExposureLoggingHook,createDatadogEvaluationLoggingHook, andcreateDatadogRumTrackingHook.composeDatadogTrackingHookswith explicit initialization/shutdown, aligned with the browser hook API.UNSUPPORTED_PLATFORM.Hooks submit asynchronously without JS batching. Shutdown disables the hooks but does not own or stop the shared native SDK. Site, consent, storage, aggregation, and upload remain native SDK responsibilities.
Motivation
Rules-based JS evaluation needs independently selectable tracking without triggering every native tracking operation or maintaining a second JS telemetry pipeline. This PR delivers that capability on Android without changing the installation requirements for existing iOS customers.
Additional Notes
Platform scope and native dependencies
Why iOS is deferred
The native iOS APIs from DataDog/dd-sdk-ios#3329 are available in SDK 3.21.0, but that release is not currently available on CocoaPods Trunk and raises the native minimum from iOS/tvOS 12 to 15.
We validated a Git-pinned CocoaPods workaround, but it would require existing CocoaPods-based RN applications to add explicit native Datadog pod overrides to their own Podfiles. Because the native dependencies belong to the core RN SDK, this requirement and the deployment-target increase would affect customers who do not use the flagging provider or tracking hooks. Without those overrides,
pod installwould fail.This PR deliberately avoids imposing that installation change. iOS support is deferred until the native dependency distribution and deployment-target migration can be handled explicitly in a separate follow-up with the mobile maintainers. The broader Swift Package Manager migration (#1455) remains separate.
The shared TurboModule interface still includes the new methods, so iOS supplies explicit unsupported-platform responses rather than silently reporting successful tracking. Hook initialization on iOS disables the hook without affecting evaluation; applications that never initialize the optional hooks receive no new warning.
Validation
Validated locally with React Native 0.76.9; native iOS runs used Xcode 26.2 and an iPhone 17 Pro / iOS 26.0 simulator:
pod installsucceeded for both iOS example configurations without native Git overrides.git diff --checkpassed.These results replace the earlier stacked-branch validation note; fetch-helper tests are not part of this PR. Full CI for the latest commit remains to be checked. Android end-to-end upload verification and Android/physical-device Release performance measurements are not claimed by this validation.
Performance
Tracking uses asynchronous native bridge calls without JS-side batching. Current Android performance, physical-device Release performance, and frame impact remain unmeasured.
Review checklist (to be filled by reviewers)