Skip to content

Commit e98f452

Browse files
fix(audience): purge identify/alias messages in core on anonymous downgrade
Move the identify/alias queue purge from the SDK into core's createConsentManager so both the SDK and pixel correctly remove PII-linked messages on full→anonymous downgrade. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f9761df commit e98f452

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

packages/audience/core/src/consent.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ export function createConsentManager(
6262
// Purge all queued messages
6363
queue.purge(() => true);
6464
} else if (next === 'anonymous') {
65-
// Strip userId from queued messages
65+
// Remove identify/alias messages and strip userId from the rest
66+
queue.purge((msg: Message) => msg.type === 'identify' || msg.type === 'alias');
6667
queue.transform((msg: Message) => {
6768
if ('userId' in msg) {
6869
const { userId, ...rest } = msg;

packages/audience/sdk/src/sdk.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,8 @@ export class Audience {
362362
this.queue.stop();
363363
}
364364

365-
// Core handles: queue purge on →none, userId strip on →anonymous, server sync.
365+
// Core handles: queue purge on →none, identify/alias purge + userId strip
366+
// on →anonymous, server sync.
366367
this.consent.setLevel(level);
367368

368369
// Web-specific cleanup after core's transition.
@@ -371,9 +372,6 @@ export class Audience {
371372
deleteCookie(SESSION_COOKIE, this.cookieDomain);
372373
} else if (level === 'anonymous' && previous === 'full') {
373374
this.userId = undefined;
374-
this.queue.purge(
375-
(m) => m.type === 'identify' || m.type === 'alias',
376-
);
377375
}
378376

379377
if (isUpgradeFromNone) {

0 commit comments

Comments
 (0)