diff --git a/services/web/app/src/Features/SplitTests/SplitTestHandler.js b/services/web/app/src/Features/SplitTests/SplitTestHandler.js index cb58acba15..fabce8b25b 100644 --- a/services/web/app/src/Features/SplitTests/SplitTestHandler.js +++ b/services/web/app/src/Features/SplitTests/SplitTestHandler.js @@ -248,7 +248,15 @@ async function _getAssignment( return DEFAULT_ASSIGNMENT } - if (session) { + // Do not cache assignments for anonymous users. All the context for their assignments is in the session: + // They cannot be part of the alpha or beta program, and they will use their analyticsId for assignments. + const canUseSessionCache = session && SessionManager.isUserLoggedIn(session) + if (session && !canUseSessionCache) { + // Purge the existing cache + delete session.cachedSplitTestAssignments + } + + if (canUseSessionCache) { const cachedVariant = _getCachedVariantFromSession( session, splitTest.name, @@ -275,7 +283,7 @@ async function _getAssignment( user = user || (userId && (await _getUser(userId, splitTestName))) const { activeForUser, selectedVariantName, phase, versionNumber } = await _getAssignmentMetadata(analyticsId, user, splitTest) - if (session) { + if (canUseSessionCache) { _setVariantInSession({ session, splitTestName,