From 8c9bfd230fa7135f4913d9d8336a636eb2690021 Mon Sep 17 00:00:00 2001 From: gonzaloriestra <14979109+gonzaloriestra@users.noreply.github.com> Date: Thu, 28 May 2026 00:15:14 +0000 Subject: [PATCH] [Performance] Remove redundant JSON cycle in analytics The `buildPayload` function was performing an expensive `JSON.parse(JSON.stringify(payload))` cycle to strip `undefined` fields. This is redundant because the subsequent `sanitizePayload` call already performs a full stringification and parsing pass, and `JSON.stringify` naturally omits `undefined` properties. Removing this saves an unnecessary serialization/deserialization pass on a potentially large payload object. --- packages/cli-kit/src/public/node/analytics.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/cli-kit/src/public/node/analytics.ts b/packages/cli-kit/src/public/node/analytics.ts index 5578e3af328..ed7af7703c3 100644 --- a/packages/cli-kit/src/public/node/analytics.ts +++ b/packages/cli-kit/src/public/node/analytics.ts @@ -148,7 +148,7 @@ async function buildPayload({config, errorMessage, exitMode}: ReportAnalyticsEve const wallClockElapsed = currentTime - startTime const totalTimeWithoutSubtimers = wallClockElapsed - totalTimeFromSubtimers - let payload = { + const payload = { public: { command: startCommand, time_start: startTime, @@ -192,9 +192,6 @@ async function buildPayload({config, errorMessage, exitMode}: ReportAnalyticsEve } }) - // strip undefined fields -- they make up the majority of payloads due to wide metadata structure. - payload = JSON.parse(JSON.stringify(payload)) - return sanitizePayload(payload) }