Repository navigation
fix(leanplum): derive the start-up user id from the kit's filtered user - #918
Conversation
The Leanplum kit built its user id from the raw current user, so an identity the data plan blocks for kits could still become the user id passed to Leanplum.start. It now reads the kit's filtered current user, the same one every other identity callback receives. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Kotlin migration progressNo change to the Java left to convert.
Conversion progress: 0.0% (16,613 of 16,550 baseline Java LOC left to convert). 132 Java files and 36 Kotlin files in scope. |
Binary compatibility
Compares the release AAR against the same artifact at the last version published to Maven Central; R8-renamed classes and members are excluded (see the script docstring). Full japicmp HTML/XML reports are attached as the |
📦 SDK Size Impact ReportWhat the SDK adds to a minified release APK. mParticle Core SDKMeasured against an empty baseline app. Unlike the Rokt kit, android-core ships no Compose and no resources, so there is nothing here that a host app would already provide.
mParticle Core + Rokt kitMeasured against a Compose + Material3 reference app, so these are the costs on top of an app that already ships Compose. The reference app's dependencies are a documented convention, not a measured average: see
Rokt SDK+ umbrella (adds the payment extension)
➡️ SDK size impact change is minimal. Raw measurementscore, Target branch: {"baseline_dex_bytes": 0, "baseline_download_bytes": 2509, "baseline_install_bytes": 7525, "core_dex_bytes": 218892, "core_download_bytes": 122941, "core_install_bytes": 130193}core, This PR: {"baseline_dex_bytes": 0, "baseline_download_bytes": 2513, "baseline_install_bytes": 7529, "core_dex_bytes": 218892, "core_download_bytes": 122944, "core_install_bytes": 130196}rokt, Target branch: {"baseline_dex_bytes": 1829108, "baseline_download_bytes": 1240062, "baseline_install_bytes": 1300934, "kit_dex_bytes": 4162180, "kit_download_bytes": 2542337, "kit_install_bytes": 2623275, "sdkplus_dex_bytes": 9282848, "sdkplus_download_bytes": 7980435, "sdkplus_install_bytes": 8148975}rokt, This PR: {"baseline_dex_bytes": 1829108, "baseline_download_bytes": 1240062, "baseline_install_bytes": 1300934, "kit_dex_bytes": 4162180, "kit_download_bytes": 2542335, "kit_install_bytes": 2623275, "sdkplus_dex_bytes": 9282848, "sdkplus_download_bytes": 7980433, "sdkplus_install_bytes": 8148975} |
Why
When the Leanplum integration starts up, it picks a user ID from the user's identities. It read them without the app's data plan, so an identity the plan blocks for integrations could still become the user ID Leanplum sees. Once this lands, start-up uses the same filtered identities as every other update.
Programme
Standalone change, no programme.
What changes
Before:
LeanplumKit.generateLeanplumIdreadMParticle.getInstance()?.Identity()?.currentUser. After: it reads the kit's own filteredcurrentUser. The kit's own identity filter already applied, so only the data plan's identity block is new here. No documentation or changelog change is needed.Linked work
None.
Rollout
Path: merging changes
mainonly. The fix ships in the next release of the Leanplum kit, and apps get it when they upgrade. It is live as soon as an app runs that release, with no switch and no ordering constraint.Feature flags: none.
Turning it off: revert this pull request and publish a new release. A published version cannot be recalled, so apps on the release that carries it keep the change until they upgrade again.
What we watch: no dashboard covers this path. We watch the issues reported on this repository after the release that carries it, and the
build-kitsandKit Compatibility Testjobs on this pull request.Risks
Risk class: low.
Who
Written by: an automated coding agent (Claude Code), working for a maintainer who asked for this fix.
Code reviewed before opening: an independent review agent, 13 October 2026; it found nothing to change and asked for the commit message to say only the data plan block was missing, which it does.
Design reviewed before opening: no one.
Decision this implements: a maintainer's request on 13 October 2026; there is no public record.
Checked: the leanplum-7
testReleaseandktlintCheckagainst the core SDK published to Maven local, on 13 October 2026.Not checked: a new unit test, because the start-up path calls static Leanplum methods.
Size
Hand-written: 2 lines in 1 file.
Generated: none.
🤖 Generated with Claude Code