From 30f7237963286802b57af9e54b08a7a03d5b279d Mon Sep 17 00:00:00 2001 From: gonzaloriestra <14979109+gonzaloriestra@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:22:23 +0000 Subject: [PATCH] [Performance] Remove redundant JSON serialization in analytics Removed a redundant `JSON.parse(JSON.stringify(payload))` cycle in `packages/cli-kit/src/public/node/analytics.ts`. `JSON.stringify` automatically omits properties with `undefined` values, so the explicit cycle used to strip them was unnecessary as `sanitizePayload` performs its own `JSON.stringify`/`JSON.parse` cycle immediately after. This change reduces CPU overhead and memory allocations during analytics reporting. Verified with unit tests, lint, and type-check. --- 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) }