Add native FF&E configuration flow for React Native#1317
Draft
leoromanovsky wants to merge 18 commits into
Draft
Add native FF&E configuration flow for React Native#1317leoromanovsky wants to merge 18 commits into
leoromanovsky wants to merge 18 commits into
Conversation
🎉 All green!🧪 All tests passed 🔗 Commit SHA: f423aa9 | Docs | Datadog PR Page | Give us feedback! |
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.
Motivation
We need a React Native delivery path for offline initialization and dynamic configuration that can move quickly for a customer evaluation without first landing, reviewing, releasing, and consuming upstream iOS and Android SDK changes. This branch keeps the implementation native-first: React Native exposes the RFC-shaped rules/offline configuration API surface, while Kotlin and Swift own configuration parsing, evaluator state, rules fetch, persistence, and SDK side effects in RN-local code that can later be extracted into the iOS and Android SDKs.
Changes
ffe-system-test-dataparity tests plus a new-architecture Android smoke that runs the offline corpus from React Native JS through the native bridge in CI.Decisions
DdFlags/FlagsClient/DatadogOpenFeatureProviderprecompute client remains unchanged; this PR adds a separate rules/offline path.setConfiguration.React Native API Example
Flow
Validation
yarn tsc -p example-new-architecture/tsconfig.json --noEmityarn run lintpasses with 0 errors and the existing 10 warnings.ANDROID_HOME=/opt/homebrew/share/android-commandlinetools ANDROID_SDK_ROOT=/opt/homebrew/share/android-commandlinetools JAVA_HOME=/Users/leo.romanovsky/.sdkman/candidates/java/17.0.13-tem ./gradlew --no-daemon clean build -PDdSdkReactNative_minSdkVersion=24frompackages/core/android.xcodebuild -workspace example-new-architecture/ios/DdSdkReactNativeExample.xcworkspace -scheme DatadogSDKReactNative-Unit-Tests test -destination 'platform=iOS Simulator,id=DACA5ADA-1149-4987-9ED2-1F76A786B332'passes, 193 tests including the Swift shared-corpus evaluator test.ANDROID_HOME=/opt/homebrew/share/android-commandlinetools ANDROID_SDK_ROOT=/opt/homebrew/share/android-commandlinetools JAVA_HOME=/Users/leo.romanovsky/.sdkman/candidates/java/17.0.13-tem ./example-new-architecture/scripts/native-ffe-offline-android-smoke.shpasses and rendersNative FFE offline fixture pass: 233 cases across 30 files.test:native-android, so CI now exercises the offline corpus from React Native JS through the native Android bridge without credentials.