From b68d3bf534fb2e1e4a9c7d5e469852a586185bd2 Mon Sep 17 00:00:00 2001 From: Nikhil Kuriakose Date: Mon, 3 Nov 2025 19:16:36 +0530 Subject: [PATCH] fix(editor): Limit telemetry event size to 32kb (#21312) --- packages/cli/src/telemetry/index.ts | 32 +++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/telemetry/index.ts b/packages/cli/src/telemetry/index.ts index 8c687943656..35899bea707 100644 --- a/packages/cli/src/telemetry/index.ts +++ b/packages/cli/src/telemetry/index.ts @@ -235,13 +235,37 @@ export class Telemetry { context: {}, }; - this.postHog?.track(payload); - - return this.rudderStack.track({ + // Build the actual payload that will be sent to RudderStack (with fake IP) + const rudderStackPayload = { ...payload, // provide a fake IP address to instruct RudderStack to not use the user's IP address context: { ...payload.context, ip: '0.0.0.0' }, - }); + }; + + // Limiting payload size to 32 KB - measure the actual payload sent to RudderStack + const payloadSize = Buffer.byteLength(JSON.stringify(rudderStackPayload), 'utf8'); + const maxPayloadSize = 32 << 10; // 32 KB + + if (payloadSize > maxPayloadSize) { + this.errorReporter.warn( + new Error( + `Telemetry event "${eventName}" payload size (${payloadSize} bytes) exceeds limit (${maxPayloadSize} bytes). Skipping event.`, + ), + { + extra: { + eventName, + payloadSize, + maxPayloadSize, + userId: payload.userId, + }, + }, + ); + return; + } + + this.postHog?.track(payload); + + return this.rudderStack.track(rudderStackPayload); } // test helpers