Skip to content

[FFL-3436] Preserve absent targeting keys across telemetry bridges - #1510

Draft
vjfridge wants to merge 1 commit into
developfrom
vickie/ffl-3436/nullable-telemetry-key
Draft

vjfridge wants to merge 1 commit into
developfrom
vickie/ffl-3436/nullable-telemetry-key

Conversation

@vjfridge

@vjfridge vjfridge commented Oct 23, 2026 •

Copy link
Copy Markdown

What does this PR do?

Preserves the difference between an omitted targeting key and an explicit empty string when React Native forwards evaluations to native telemetry. Implements the nullable-identity prerequisite for FFL-3436.

Online and offline providers capture key presence before assignment-context normalization. New additive Android/iOS bridge methods carry that nullable identity separately: missing or malformed Unicode is omitted; an explicit empty string remains empty; valid strings are preserved for native consent enforcement. Assignment inputs, exposure attribution and subject opt-out continue to use the original evaluation context. A failed online refresh retains the previous snapshot's identity.

Motivation

Normalizing a missing key to an empty string loses information needed by the client telemetry privacy contract. Keeping a separate optional telemetry value preserves that information without changing targeting or bucketing.

Additional Notes

Draft — merge/release blockers:

  • Release native APIs from Android #4025 and iOS #3340, then update the React Native native dependency pins consistently. The currently pinned releases do not contain these methods.
  • Set the OpenFeature provider's core peer minimum to the actual React Native core release containing __ddSetEvaluationContext. The current ^3.1.0 range permits incompatible older core packages; a supporting version has not been assigned yet.
  • Validate native compilation and real bridge execution on supported old/new architectures, including missing, empty and Unicode targeting keys, exposure attribution and opt-out. JavaScript-only updates require a rebuilt native app containing the new bridge method; this is a coordinated native/core/provider release.

This PR is the nullable-targeting-key foundation. Configuration-level consent transport and error/default evaluation replay remain follow-up work in FFL-3436. It does not complete React Native privacy enforcement.

Validation:

  • Core and OpenFeature JavaScript suites: 1,030 passed, one existing skipped test. Covers online/offline presence, queued context updates, failed refresh and malformed Unicode.
  • Scoped production TypeScript checks and ESLint on changed TypeScript files passed.
  • React Native Codegen passed for Android and iOS; generated nullable signatures match both bridge adapters.
  • Native bridge compilation/device execution and the new Swift adapter tests have not been run here. The workspace has no Apple toolchain, and native release dependencies above remain pending. The full monorepo TypeScript check is not green in this setup because unrelated benchmark/example package dependencies are not built; the affected production scope passes.

Review checklist (to be filled by reviewers)

  • Feature or bugfix MUST have appropriate tests
  • Make sure you discussed the feature or bugfix with the maintaining team in an Issue
  • Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)
  • If this PR is auto-generated, please make sure also to manually update the code related to the change

Carry nullable telemetry identity separately from the normalized assignment context through online and offline providers and both native bridges.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-6 <noreply@localhost>
@datadog-official

datadog-official Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Pipelines  Tests

✨ Unblock PR with BitsAI

❌ Errors

Your PR has failed checks. Please review the issues below and take necessary action before merging.

🚦 4 Pipeline jobs failed

DataDog/dd-sdk-reactnative | test:native-android — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

DataDog/dd-sdk-reactnative | test:native-ios — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

DataDog/dd-sdk-reactnative | test:native-ios-newarch — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

View all 4 failed jobs.

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 1116fda | Docs | View more details | Give us feedback!

This branch has not been deployed

No deployments
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.

1 participant