Skip to content

Commit 5a12bfc

Browse files
✨ [RUM-10146] implement trackEarlyRequests (#3846)
1 parent e22fd85 commit 5a12bfc

File tree

5 files changed

+16
-8
lines changed

5 files changed

+16
-8
lines changed

packages/core/src/tools/experimentalFeatures.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { objectHasValue } from './utils/objectUtils'
1616
export enum ExperimentalFeature {
1717
TRACK_INTAKE_REQUESTS = 'track_intake_requests',
1818
WRITABLE_RESOURCE_GRAPHQL = 'writable_resource_graphql',
19-
EARLY_REQUEST_COLLECTION = 'early_request_collection',
2019
USE_TREE_WALKER_FOR_ACTION_NAME = 'use_tree_walker_for_action_name',
2120
GRAPHQL_TRACKING = 'graphql_tracking',
2221
FEATURE_OPERATION_VITAL = 'feature_operation_vital',

packages/rum-core/src/domain/configuration/configuration.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,7 @@ describe('serializeRumConfiguration', () => {
591591
trackResources: true,
592592
trackLongTasks: true,
593593
trackBfcacheViews: true,
594+
trackEarlyRequests: true,
594595
remoteConfigurationId: '123',
595596
remoteConfigurationProxy: 'config',
596597
plugins: [{ name: 'foo', getConfigurationTelemetry: () => ({ bar: true }) }],
@@ -642,6 +643,7 @@ describe('serializeRumConfiguration', () => {
642643
track_resources: true,
643644
track_long_task: true,
644645
track_bfcache_views: true,
646+
track_early_requests: true,
645647
use_worker_url: true,
646648
compress_intake_requests: true,
647649
plugins: [{ name: 'foo', bar: true }],

packages/rum-core/src/domain/configuration/configuration.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,14 @@ export interface RumInitConfiguration extends InitConfiguration {
198198
*/
199199
trackLongTasks?: boolean | undefined
200200

201+
/**
202+
* Enables early request collection before resource timing entries are available.
203+
*
204+
* @category Data Collection
205+
* @defaultValue false
206+
*/
207+
trackEarlyRequests?: boolean | undefined
208+
201209
/**
202210
* List of plugins to enable. The plugins API is unstable and experimental, and may change without
203211
* notice. Please use only plugins provided by Datadog matching the version of the SDK you are
@@ -258,6 +266,7 @@ export interface RumConfiguration extends Configuration {
258266
trackResources: boolean
259267
trackLongTasks: boolean
260268
trackBfcacheViews: boolean
269+
trackEarlyRequests: boolean
261270
subdomain?: string
262271
customerDataTelemetrySampleRate: number
263272
initialViewMetricsTelemetrySampleRate: number
@@ -330,6 +339,7 @@ export function validateAndBuildRumConfiguration(
330339
trackResources: !!(initConfiguration.trackResources ?? true),
331340
trackLongTasks: !!(initConfiguration.trackLongTasks ?? true),
332341
trackBfcacheViews: !!initConfiguration.trackBfcacheViews,
342+
trackEarlyRequests: !!initConfiguration.trackEarlyRequests,
333343
subdomain: initConfiguration.subdomain,
334344
defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)
335345
? initConfiguration.defaultPrivacyLevel
@@ -468,6 +478,7 @@ export function serializeRumConfiguration(configuration: RumInitConfiguration) {
468478
track_resources: configuration.trackResources,
469479
track_long_task: configuration.trackLongTasks,
470480
track_bfcache_views: configuration.trackBfcacheViews,
481+
track_early_requests: configuration.trackEarlyRequests,
471482
plugins: configuration.plugins?.map((plugin) => ({
472483
name: plugin.name,
473484
...plugin.getConfigurationTelemetry?.(),

packages/rum-core/src/domain/resource/resourceCollection.spec.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -307,13 +307,9 @@ describe('resourceCollection', () => {
307307
expect(resourceEvent.resource.graphql).toBeUndefined()
308308
})
309309

310-
describe('with EARLY_REQUEST_COLLECTION enabled', () => {
311-
beforeEach(() => {
312-
mockExperimentalFeatures([ExperimentalFeature.EARLY_REQUEST_COLLECTION])
313-
})
314-
310+
describe('with trackEarlyRequests enabled', () => {
315311
it('creates a resource from a performance entry without a matching request', () => {
316-
setupResourceCollection({ trackResources: true })
312+
setupResourceCollection({ trackResources: true, trackEarlyRequests: true })
317313

318314
notifyPerformanceEntries([
319315
createPerformanceEntry(RumPerformanceEntryType.RESOURCE, {

packages/rum-core/src/domain/resource/resourceCollection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function startResourceCollection(
5151
retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming
5252
) {
5353
let requestRegistry: RequestRegistry | undefined
54-
const isEarlyRequestCollectionEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.EARLY_REQUEST_COLLECTION)
54+
const isEarlyRequestCollectionEnabled = configuration.trackEarlyRequests
5555

5656
if (isEarlyRequestCollectionEnabled) {
5757
requestRegistry = createRequestRegistry(lifeCycle)

0 commit comments

Comments
 (0)