Skip to content

Commit 7dd147b

Browse files
committed
✨ Add betaEnableViewUpdates config option
1 parent 4d515d6 commit 7dd147b

3 files changed

Lines changed: 18 additions & 0 deletions

File tree

packages/browser-rum-core/src/boot/preStartRum.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
noop,
1111
getEventBridge,
1212
initFeatureFlags,
13+
addExperimentalFeatures,
14+
ExperimentalFeature,
1315
addTelemetryConfiguration,
1416
CustomerContextKey,
1517
buildAccountContextManager,
@@ -229,6 +231,9 @@ export function createPreStartStrategy(
229231
}
230232
// Set the experimental feature flags as early as possible, so we can use them in most places
231233
initFeatureFlags(initConfiguration.enableExperimentalFeatures)
234+
if (initConfiguration.betaEnableViewUpdates) {
235+
addExperimentalFeatures([ExperimentalFeature.PARTIAL_VIEW_UPDATES])
236+
}
232237
setAllowUntrustedEvents(initConfiguration.allowUntrustedEvents)
233238

234239
// Expose the initial configuration regardless of initialization success.

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,7 @@ describe('serializeRumConfiguration', () => {
832832
profilingSampleRate: 42,
833833
propagateTraceBaggage: true,
834834
trackResourceHeaders: true,
835+
betaEnableViewUpdates: true,
835836
}
836837

837838
type MapRumInitConfigurationKey<Key extends string> = Key extends keyof InitConfiguration
@@ -887,6 +888,7 @@ describe('serializeRumConfiguration', () => {
887888
use_remote_configuration_proxy: true,
888889
profiling_sample_rate: 42,
889890
track_resource_headers: 'default_headers',
891+
beta_enable_view_updates: true,
890892
})
891893
})
892894
})

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,14 @@ export interface RumInitConfiguration extends InitConfiguration {
343343
* @category Data Collection
344344
*/
345345
allowedGraphQlUrls?: Array<MatchOption | GraphQlUrlOption> | undefined
346+
347+
/**
348+
* Enable partial view updates, which reduces bandwidth by sending only changed
349+
* fields instead of full view events on intermediate updates.
350+
*
351+
* @category Beta
352+
*/
353+
betaEnableViewUpdates?: boolean | undefined
346354
}
347355

348356
export type HybridInitConfiguration = Omit<RumInitConfiguration, 'applicationId' | 'clientToken'>
@@ -386,6 +394,7 @@ export interface RumConfiguration extends Configuration {
386394
sessionReplaySampleRate: number
387395
startSessionReplayRecordingManually: boolean
388396
trackUserInteractions: boolean
397+
betaEnableViewUpdates: boolean
389398
trackViewsManually: boolean
390399
trackResources: boolean
391400
trackResourceHeaders: MatchHeader[]
@@ -458,6 +467,7 @@ export function validateAndBuildRumConfiguration(
458467
workerUrl: initConfiguration.workerUrl,
459468
compressIntakeRequests: !!initConfiguration.compressIntakeRequests,
460469
trackUserInteractions: !!(initConfiguration.trackUserInteractions ?? true),
470+
betaEnableViewUpdates: !!initConfiguration.betaEnableViewUpdates,
461471
trackViewsManually: !!initConfiguration.trackViewsManually,
462472
trackResources: !!(initConfiguration.trackResources ?? true),
463473
trackResourceHeaders: validateAndBuildTrackResourceHeaders(initConfiguration),
@@ -687,6 +697,7 @@ export function serializeRumConfiguration(configuration: RumInitConfiguration) {
687697
profiling_sample_rate: configuration.profilingSampleRate,
688698
use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy,
689699
track_resource_headers: getTrackResourceHeadersTelemetryValue(configuration.trackResourceHeaders),
700+
beta_enable_view_updates: configuration.betaEnableViewUpdates,
690701
...baseSerializedConfiguration,
691702
} satisfies RawTelemetryConfiguration
692703
}

0 commit comments

Comments
 (0)