Repository navigation
feat(SDK-548): React Native SDK feature parity epic - #933
Open
jferrao-itrbl wants to merge 50 commits into
Open
jferrao-itrbl wants to merge 50 commits into
jferrao-itrbl wants to merge 50 commits into
Conversation
Co-authored-by: Cursor <cursoragent@cursor.com>
Bridge Iterable.disableDeviceForAllUsers() so iOS can unregister this device's push token for every associated user. Android stays a logged no-op because the native SDK has no public equivalent. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the native bridge no-op, but emit the same unsupported warning from JS so the gap is visible without logcat when logReactNativeSdkCalls is on. Co-authored-by: Cursor <cursoragent@cursor.com>
…all-users feat(SDK-550): expose disableDeviceForAllUsers on the RN SDK
Co-authored-by: Cursor <cursoragent@cursor.com>
docs(SDK-549): document logout() as native logoutUser equivalent
Add IterableConfig.keychainEncryption (default true) and apply it on the Android bridge, deprecating encryptionEnforced which was never honored. Co-authored-by: Cursor <cursoragent@cursor.com>
Align encryptionEnforced JSDoc with keychainEncryption defaults and assert explicit keychainEncryption wins over encryptionEnforced in toDict(). Co-authored-by: Cursor <cursoragent@cursor.com>
Expose IterableConfig.decryptionFailureHandler so RN apps can react when Android keychain PII decryption fails, matching native IterableConfig parity.
Avoid RN debug RedBox when apps set decryptionFailureHandler on iOS. Assert listenerCount in the omitted-callback test.
Bridge native JWT reads for parity with Android getAuthToken() and iOS IterableAPI.authToken, alongside existing getEmail/getUserId.
Expose IterableConfig sync success/failure handlers via native events so apps can observe embedded sync outcomes.
Assert sync handlers stay separate from message-update events and respect enableEmbeddedMessaging when callbacks are omitted or set.
Drop dead encryptionEnforced fallback, tighten deprecated docs, and trim misleading tests per PR review.
…tion feat(SDK-555): wire Android keychain encryption config
…cryption-failure-handler
IterableKeychain caches decryptionFailureHandler at first construction. Register the RN bridge unconditionally; keep the JS listener conditional.
…ure-handler feat(SDK-557): bridge Android decryption failure handler to JS
feat(SDK-559): expose Iterable.authManager.getAuthToken()
…ccess-failure-callbacks
The bridge accepted the flag but dropped it before IterableApi. Call the five-argument trackPushOpen overload so campaigns see the real value.
Add RNIterableInternal unit tests against the five-argument trackPushOpen overload, wire testDebugUnitTest in CI, and implement embedded sync handler stubs required to compile against iterableapi 3.10.1.
Keep compile-only stubs for IterableEmbeddedUpdateHandler without emitting events outside SDK-748 scope; JS wiring remains SDK-749.
Serialize the native JSON-only flag onto bridge dictionaries so inAppHandler and message fetches can distinguish JSON-only in-apps from HTML messages.
Always overwrite jsonOnly with a boolean after toJSONObject() so the bridge does not forward native integer 1 to JS.
Use put(boolean) instead of putOpt so false is always written, and propagate JSONException to existing handlers in onNewInApp and getMessages paths.
Expose optional placement scoping on embedded sync so RN matches native Android and iOS APIs; omit/null/empty still syncs all placements.
Lock AC2 sync-all inputs at IterableApi and IterableEmbeddedManager.
…-callbacks feat(SDK-749): embedded messaging sync success and failure callbacks
…rward-app-already-running Keep parity embedded sync handler emissions; SDK-748 push-open forwarding unchanged.
Scope push-open fix to trackPushOpenWithCampaignId and call the package script from the Android CI job.
…eady-running fix(SDK-748): forward appAlreadyRunning on Android push open
…nc-messages-placement-ids
Resolve Android conflicts: keep embedded sync events from the feature branch, adopt master logging and Robolectric test dependency.
…nc-messages-placement-ids
Add Robolectric tests for Android getInAppMessageJson boolean overwrite and Jest coverage for inAppHandler and getMessages jsonOnly payloads.
Warn when scoped sync is used on Android and document iOS/Android cache behavior in CHANGELOG and public TSDoc for SDK-751.
feat(SDK-750): expose jsonOnly on in-app message payloads
…nc-messages-placement-ids
…lacement-ids feat(SDK-751): add placement IDs to syncMessages
|
Coverage Impact ⬆️ Merging this pull request will increase total coverage on Modified Files with Diff Coverage (6)
🛟 Help
|
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.

Summary
Epic integration PR for SDK-548. This merges the long-lived
feature/SDK-548-feature-paritybranch intomaster.Each slice below was implemented on its own branch, reviewed, and merged into this epic branch already. This PR is mainly integration and changelog packaging, not a first-pass review of new design.
Jira Ticket: SDK-548
Included work (already reviewed)
feature/SDK-549-logout-user-parityfeature/SDK-550-disable-device-all-usersfeature/SDK-555-keychain-encryptionfeature/SDK-557-decryption-failure-handlerfeature/SDK-559-get-auth-tokenfeature/SDK-748-forward-app-already-runningfeature/SDK-749-success-failure-callbacksfeature/SDK-750-expose-json-onlyfeature/SDK-751-sync-messages-placement-idsSDK-798 (Android scoped embedded sync caveat) is documented in the SDK-751 changelog note and in #913, not a separate branch on this epic.
Unknown User Activation follow-ups (SDK-553, SDK-554, SDK-556, SDK-561, SDK-794, SDK-804) live on
feature/SDK-548-uua-feature-parity, not in this PR.Description
Rolls up RN bridge and API parity work tracked under SDK-548: push open
appAlreadyRunning, embedded sync callbacks and scoped sync, in-appjsonOnly, auth token read, Android keychain encryption and decryption failure handling, anddisableDeviceForAllUsers, plus logout documentation (SDK-549).See
CHANGELOG.mdUnreleased for customer-facing bullets.How to test?
Changelog
Unreleased section added in
CHANGELOG.mdon this branch.Loom recording if applicable
N/A
Github Issues solved
N/A
Docs PR if applicable
N/A (SDK-549 is in-repo documentation only; see #900)