flaky-noon-11399
07/18/2025, 2:29 PMgrowthbook_id, is being assigned to different variations by the two SDKs.
After initializing both SDKs, I set up the same attributes and captured the ExperimentResult logs. Here’s a representative comparison:
Android SDK (current implementation):
Experiment ab-app-multiple__double-points result: {"id":"doublePoints","enabled":true,"configuration":{...}}
hashAttribute: growthbook_id -> 7662e35d-57a9-49bd-a0b6-db2268ad0439
bucket: -> null
variationId: -> 1
J*ava SDK (our new integration):*
Experiment ab-app-multiple__double-points result: {id=doublePoints, enabled=false}
hashAttribute: growthbook_id -> 7662e35d-57a9-49bd-a0b6-db2268ad0439
bucket: -> 0.4606
variationId: -> 0
Both SDKs correctly pick up the same growthbook_id, but produce different bucketing outcomes:
• The Android SDK consistently returns null for the bucket but assigns the user to variation 1 (variant).
• The Java SDK returns a valid bucket (0.4606) and assigns the user to variation 0 (control).
These tests were performed on the same device, without using any proxy or intermediate layer—just a direct call to GrowthBook apiHost with the same apiKey. This suggests a potential inconsistency in how the SDKs compute the hash/bucket based on the provided attribute.
To further investigate, I tested other growthbook_id values and observed inconsistent results:
• `7662e35d-57a9-49bd-a0b6-db2268ad0439`: Android SDK → variant, Java SDK → control
• `1a2f94b5-667e-4a7d-9823-8d4bf611085c`: Android SDK → control, Java SDK → variant
• `23aa8888-97fe-4c57-9a57-f3517fa1f89c`: Android SDK → variant, Java SDK → control
• `3145ff6a-2148-48cb-b032-7f1892380a17`: Android SDK → variant, Java SDK → control
• `07b18ce4-6311-42ae-9bd9-68cd5e2623fc`: Android SDK → variant, Java SDK → variant
Given that the same inputs yield different results, this seems like something internal to how each SDK handles hashing and bucketing. Do you happen to know if there’s a known difference in hashing logic between the Java and Android SDKs? Or is there a recommended way to ensure parity?
Any insights or suggestions on how to approach this would be greatly appreciated!calm-dog-24239
07/18/2025, 3:19 PMancient-car-96302
07/20/2025, 1:54 PMbucket null variationId 1 on 1.1.41. It is planned to fix. variationId is already fixed in latest SDK version. bucket is left to fix.calm-dog-24239
07/21/2025, 6:32 AMflaky-noon-11399
07/21/2025, 8:36 AMflaky-noon-11399
07/21/2025, 8:43 AMancient-car-96302
07/21/2025, 9:01 AMcalm-dog-24239
07/21/2025, 9:17 AMancient-car-96302
07/21/2025, 2:24 PMbucket value is null. In v5.0.1 bucket value is the same as in the Java SDK.calm-dog-24239
07/21/2025, 2:28 PMflaky-noon-11399
07/21/2025, 3:17 PMcalm-dog-24239
07/21/2025, 3:29 PMcalm-dog-24239
07/22/2025, 7:30 AMcalm-dog-24239
07/22/2025, 7:32 AM