From 38232e17fb2a5b5e15b4c6468ad9266993d847c0 Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Thu, 26 Mar 2026 16:55:44 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A5=20remove=20addTiming=20relative=20?= =?UTF-8?q?time=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Accepting relative times (ms since view start) was undocumented and impractical since there's no public API to retrieve the view start time. addTiming now only accepts epoch timestamps. --- packages/rum-core/src/boot/rumPublicApi.spec.ts | 4 ++-- packages/rum-core/src/boot/rumPublicApi.ts | 8 +------- .../rum-core/src/domain/view/trackViews.spec.ts | 15 +-------------- packages/rum-core/src/domain/view/trackViews.ts | 7 +++---- 4 files changed, 7 insertions(+), 27 deletions(-) diff --git a/packages/rum-core/src/boot/rumPublicApi.spec.ts b/packages/rum-core/src/boot/rumPublicApi.spec.ts index 4b78835f11..d8b4936930 100644 --- a/packages/rum-core/src/boot/rumPublicApi.spec.ts +++ b/packages/rum-core/src/boot/rumPublicApi.spec.ts @@ -1,4 +1,4 @@ -import type { RelativeTime, DeflateWorker, TimeStamp } from '@datadog/browser-core' +import type { DeflateWorker, TimeStamp } from '@datadog/browser-core' import { ONE_SECOND, display, @@ -587,7 +587,7 @@ describe('rum public api', () => { expect(addTimingSpy).toHaveBeenCalledTimes(1) expect(addTimingSpy.calls.argsFor(0)[0]).toEqual('foo') - expect(addTimingSpy.calls.argsFor(0)[1]).toBe(12 as RelativeTime) + expect(addTimingSpy.calls.argsFor(0)[1]).toBe(12 as TimeStamp) expect(displaySpy).not.toHaveBeenCalled() }) }) diff --git a/packages/rum-core/src/boot/rumPublicApi.ts b/packages/rum-core/src/boot/rumPublicApi.ts index 986ee7ae98..d0b4edbfad 100644 --- a/packages/rum-core/src/boot/rumPublicApi.ts +++ b/packages/rum-core/src/boot/rumPublicApi.ts @@ -1,7 +1,6 @@ import type { Context, TimeStamp, - RelativeTime, DeflateWorker, DeflateEncoderStreamId, DeflateEncoder, @@ -227,10 +226,6 @@ export interface RumPublicApi extends PublicApi { * Add a custom timing relative to the start of the current view, * stored in `@view.custom_timings.` * - * Note: passing a relative time is discouraged since it is actually used as-is but displayed relative to the view start. - * We currently don't provide a way to retrieve the view start time, so it can be challenging to provide a timing relative to the view start. - * see https://github.com/DataDog/browser-sdk/issues/2552 - * * @category Data Collection * @param name - Name of the custom timing * @param [time] - Epoch timestamp of the custom timing (if not set, will use current time) @@ -781,8 +776,7 @@ export function makeRumPublicApi( }, addTiming: monitor((name, time) => { - // TODO: next major decide to drop relative time support or update its behaviour - strategy.addTiming(sanitize(name)!, time as RelativeTime | TimeStamp | undefined) + strategy.addTiming(sanitize(name)!, time as TimeStamp | undefined) }), setViewLoadingTime: monitor(() => { diff --git a/packages/rum-core/src/domain/view/trackViews.spec.ts b/packages/rum-core/src/domain/view/trackViews.spec.ts index a29aa415b0..d08a0d502b 100644 --- a/packages/rum-core/src/domain/view/trackViews.spec.ts +++ b/packages/rum-core/src/domain/view/trackViews.spec.ts @@ -726,19 +726,6 @@ describe('view custom timings', () => { }) }) - it('should add custom timing with a specific relative time', () => { - const { getViewUpdate, addTiming } = viewTest - - clock.tick(1234) - addTiming('foo', relativeNow()) - - clock.tick(THROTTLE_VIEW_UPDATE_PERIOD) - - expect(getViewUpdate(1).customTimings).toEqual({ - foo: clock.relative(1234), - }) - }) - it('should sanitized timing name', () => { const { getViewUpdate, addTiming } = viewTest @@ -763,7 +750,7 @@ describe('view custom timings', () => { expect(getViewUpdateCount()).toBe(2) - addTiming('foo', relativeNow()) + addTiming('foo', timeStampNow()) clock.tick(THROTTLE_VIEW_UPDATE_PERIOD) diff --git a/packages/rum-core/src/domain/view/trackViews.ts b/packages/rum-core/src/domain/view/trackViews.ts index 039d340683..fc96d3ee83 100644 --- a/packages/rum-core/src/domain/view/trackViews.ts +++ b/packages/rum-core/src/domain/view/trackViews.ts @@ -20,7 +20,6 @@ import { relativeToClocks, timeStampNow, display, - looksLikeRelativeTime, setInterval, clearInterval, setTimeout, @@ -174,7 +173,7 @@ export function trackViews( } return { - addTiming: (name: string, time: RelativeTime | TimeStamp = timeStampNow()) => { + addTiming: (name: string, time: TimeStamp = timeStampNow()) => { currentView.addTiming(name, time) }, setLoadingTime: (callTimestamp?: TimeStamp) => currentView.setLoadingTime(callTimestamp), @@ -371,11 +370,11 @@ function newView( stopINPTracking() stopObservable.notify() }, - addTiming(name: string, time: RelativeTime | TimeStamp) { + addTiming(name: string, time: TimeStamp) { if (endClocks) { return } - const relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time) + const relativeTime = elapsed(startClocks.timeStamp, time) customTimings[sanitizeTiming(name)] = relativeTime scheduleViewUpdate() },