late-ambulance-66508
07/28/2026, 3:37 PMbucketVersion, the experiment condition is not re-evaluated, so the user remains enrolled.
Is preserving enrollment after the user becomes ineligible intentional? If eligibility should be re-evaluated after authentication, what is the recommended approach: delay the initial evaluation, disable sticky bucketing for this experiment, or model the targeting differently?powerful-spoon-16837
07/28/2026, 3:39 PMlate-ambulance-66508
07/28/2026, 3:43 PMpowerful-spoon-16837
07/29/2026, 8:18 AMbucketVersion, targeting conditions are deliberately not re-evaluated (same if (!foundStickyBucket) check in the JS SDK). Sticky bucketing is designed to keep enrollment stable across exactly this kind of change.
The root cause is that the experiment is evaluated before the targeting attributes are available — sticky bucketing just persists that early decision.
You don't need an extra rule with inverted conditions — the cleanest fix is a targeting change on the experiment itself, not a code change. Add a presence check to the experiment's own targeting, e.g. {"registrationDate": {"$exists": true}}. Pre-login the attribute is missing, the user doesn't qualify, and no sticky document is written at all — nothing to undo later. After login you setAttributes(...), re-read the flag, and bucketing is correct.
To clean up assignments already persisted in production, bump bucketVersion (with minBucketVersion to block the old ones) — note this resets enrollment, so worth checking with whoever owns the experiment's analytics.
If you must bucket at app launch regardless, `disableStickyBucketing`: true re-evaluates targeting every time; trade-off is the variation can change.late-ambulance-66508
07/30/2026, 8:32 AM