in src/amo/withExperiment.js [262:317]
componentDidMount() {
const { variant } = this;
const { _isExperimentEnabled, cookies } = this.props;
const addExperimentToCookie =
variant && !this.cookieIncludesExperiment();
const registeredExperiments = this.getExperimentsFromCookie();
const experimentsToStore = { ...registeredExperiments };
// Clear any disabled experiments from the cookie.
let cleanupNeeded = false;
for (const experimentId of Object.keys(registeredExperiments)) {
if (!_isExperimentEnabled({ _config, id: experimentId })) {
delete experimentsToStore[experimentId];
cleanupNeeded = true;
}
}
if (addExperimentToCookie) {
experimentsToStore[id] = variant;
if (variant) {
// Send an enrollment event.
_tracking.sendEvent({
_config,
action: variant,
category: [EXPERIMENT_ENROLLMENT_CATEGORY, id].join(' '),
});
}
}
if (cleanupNeeded || addExperimentToCookie) {
cookies.set(
EXPERIMENT_COOKIE_NAME,
experimentsToStore,
cookieConfig || defaultCookieConfig,
);
}
// If the user is enrolled in a branch, set the GA custom dimensions
// and GA4 user properties.
if (variant && variant !== NOT_IN_EXPERIMENT) {
_tracking.setDimension({
dimension: EXPERIMENT_ID_GA_DIMENSION,
value: id,
});
_tracking.setDimension({
dimension: EXPERIMENT_VARIATION_GA_DIMENSION,
value: variant,
});
_tracking.setUserProperties({
experimentId: id,
experimentVariation: variant,
});
}
}