Skip to content

chore(release): 7.0.2 — RPC bridge cleanup, PurchaseConnector fix, js-core-plugin 7.0.14 - #700

Merged
al-af merged 21 commits into
developmentfrom
dev/DELIVERY-128515/latest-rpc-module-update
Aug 25, 2026
Merged

al-af merged 21 commits into
developmentfrom
dev/DELIVERY-128515/latest-rpc-module-update

Conversation

@al-af

@al-af al-af commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Bumps 7.0.1 → 7.0.2. Builds on the already-merged TurboModule/RPC rewrite; this PR is the follow-up polish pass.

Highlights

  • @appsflyer-sdk/js-core-plugin → ^7.0.14; mediation-network wire-value resolution moved fully into that package (dead code removed from index.ts)
  • Native SDKs: iOS AppsFlyerRPC 7.0.13, Android af-android-sdk 7.0.1 / af-android-plugin-bridge 7.0.12; PurchaseConnector native deps bumped (iOS pod 7.0.2, Android 2.3.0)
  • Fix: stop(false) never resumed the SDK on Android (missing shouldStop flag)
  • Fix: logAdRevenue's mediationNetwork silently failing on Android for several constants (exact-match vs. iOS's normalized match)
  • Fix: PurchaseConnector's 5 listener methods now return a real EmitterSubscription instead of a bare unsubscribe function
  • iOS handleLaunchOptions now routes through AppsFlyerAttribution.shared, same as continueUserActivity/handleOpen — one import covers the whole AppDelegate
  • ConversionData.data.is_first_launch now a real boolean, not a string
  • Strict mode now pulls AppsFlyerRPC/Strict

Breaking changes (full details in MIGRATION.md): every method now takes a single params object (no positional args); several 6.x-carried no-op options/listeners removed outright (initSdk, onInstallConversionData/onDeepLink family, setUserEmails, AppsFlyerConsent, setCollectIMEI, etc.); PurchaseConnector listener return type changed as above.

Verification: npm test, npx tsc --noEmit, iOS/Android e2e scenario runners.

al-af and others added 14 commits August 24, 2026 14:35
AppsFlyerRPC 7.0.12 to 7.0.13, af-android-plugin-bridge pinned to 7.0.12 independent of the af-android-sdk-bom line, js-core-plugin dependency range widened to ^7.0.14.
…ugin 7.0.14

js-core-plugin now owns the mediationNetwork wire-value mapping and the fbLoginId precision fix internally, so the local overrides in index.ts are dead weight. Also trims now-redundant comments across the touched native files and quiets a duplicate console.log in the Expo Android config plugin.
Assert against the new dependency's actual behavior instead of the removed local overrides; add version-sync.test.js to catch drift between the 3 version-surface literals.
Drop the stale ios_files.png doc asset alongside the text updates.
promote-release.yml now rewrites the CHANGELOG heading on promotion and blocks on an unfilled TODO placeholder; release.yml prefixes RC tags with v and makes android_plugin_bridge_version optional.
wait_for_qa_marker now polls process liveness after a grace period so a launch-time crash aborts early instead of burning the full timeout; log collection widened to catch AndroidRuntime/FATAL EXCEPTION crash tags.
Docs/RN_API.md predated the js-core-plugin single-params-object
convention -- nearly every method still showed positional-argument
signatures/examples. Rewrote all ~80 method sections to the real
params-object calling convention, verified against
generated/methods.d.ts, appsflyer-sdk.d.ts, and rpc-wire-contract.test.js.

- Renamed unregisterForDeepLink -> unregisterDeeplinkListener (Android-only)
- Added missing sections: handlePushNotification (iOS), onPause (Android),
  collectDataFromLauncherActivity (Android), handleOpenURL, handleOpenUrl,
  continueUserActivity, handleLaunchOptions (all iOS-only) -- replaces a
  section that incorrectly claimed these weren't JS-callable
- Rewrote sendPushNotificationData to its actual Android-only shape
- Fixed registerConversionListener/registerDeepLinkListener to the real
  callbacks-object shape, removed a false 'returns unregister function' claim
- setPluginInfo intentionally left undocumented -- not on the public SDK
  class, reported internally via PluginIdentity

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… facade

Matches the existing continueUserActivity/handleOpen pattern -- one import (react_native_appsflyer) now covers the whole AppDelegate, AppsFlyerLib import no longer needed at the app level.
@al-af
al-af requested a review from pazlavi August 25, 2026 10:06
@al-af al-af self-assigned this Aug 25, 2026
al-af added 7 commits August 25, 2026 13:29
The AppsFlyer SDK now handles initial deep link processing internally, making manual invocation of `performDeepLinking` from `Linking.getInitialURL()` unnecessary in the demo app.
Update all occurrences of `appsFlyer` to `AppsFlyer` for the main SDK export and instance name across documentation and test files. This aligns the casing with the official branding and the `@AppsFlyer-sdk/js-core-plugin` package name for consistency.
This commit updates and clarifies the internal documentation (`.claude/rules/`) to reflect the latest RPC module and TurboModule architecture.

Key changes include:
*   **Condensing resolved issues:** Many entries in `known-issues-kb.md` are simplified, retaining only root causes relevant to current constraints and removing verbose explanations for issues that are now fixed.
*   **Streamlining architectural details:** Descriptions of bridge patterns, Expo config, and native module rules are made more concise and accurate.
*   **Removing outdated information:** Historical context and details no longer relevant to the current SDK behavior or plugin responsibilities have been pruned.

This improves readability and maintainability by ensuring the documentation accurately reflects the current state of the SDK and its interactions.
Reflects changes in the SDK where `registerDeepLinkListener` and `registerConversionListener` now accept an object with named callback properties (e.g., `onDeepLinking`, `onConversionDataSuccess`) instead of direct callback arguments. This ensures documentation provides correct usage examples.

DELIVERY-128515
The `AFPurchaseType.ONE_TIME_PURCHASE` value was previously `one_time_purchase` (snake_case), matching Android's wire format. This caused `validateAndLogInAppPurchase` to fail for one-time purchases on iOS, which expects `oneTimePurchase` (camelCase) from the `publicApi` contract. This commit corrects the enum value to `oneTimePurchase`.

Additionally, this commit includes the following improvements:
- Enhanced the release workflow's input validation with more specific error messages for missing variables.
- Improved resilience for `AppsFlyerPurchaseConnector.OnReceivePurchaseRevenueValidationInfo` by adding error handling around the callback.
- Pinned the `@appsflyer-sdk/js-core-plugin` dependency to an exact version.

DELIVERY-128515
@al-af
al-af merged commit 8113deb into development Aug 25, 2026
9 checks passed
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.

2 participants