Skip to content

Commit 8522d52

Browse files
committed
✨ Add betaEnableViewUpdates config option
1 parent 8af9fbf commit 8522d52

8 files changed

Lines changed: 50 additions & 7 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"woke": "scripts/cli woke"
4444
},
4545
"devDependencies": {
46-
"@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7",
46+
"@datadog/rum-events-format": "DataDog/rum-events-format#commit=c90ea19ee1804c20a37193f938c43559ba92abea",
4747
"@eslint/js": "10.0.1",
4848
"@jsdevtools/coverage-istanbul-loader": "3.0.5",
4949
"@microsoft/api-extractor": "7.58.9",

packages/browser-core/src/domain/telemetry/telemetryEvent.types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,10 @@ export type TelemetryConfigurationEvent = CommonTelemetryProperties & {
482482
* Whether the beta encode cookie options is enabled
483483
*/
484484
beta_encode_cookie_options?: boolean
485+
/**
486+
* Whether the beta partial view updates feature is enabled
487+
*/
488+
beta_enable_view_updates?: boolean
485489
[k: string]: unknown
486490
}
487491
[k: string]: unknown

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[]
@@ -457,6 +466,7 @@ export function validateAndBuildRumConfiguration(
457466
workerUrl: initConfiguration.workerUrl,
458467
compressIntakeRequests: !!initConfiguration.compressIntakeRequests,
459468
trackUserInteractions: !!(initConfiguration.trackUserInteractions ?? true),
469+
betaEnableViewUpdates: !!initConfiguration.betaEnableViewUpdates,
460470
trackViewsManually: !!initConfiguration.trackViewsManually,
461471
trackResources: !!(initConfiguration.trackResources ?? true),
462472
trackResourceHeaders: validateAndBuildTrackResourceHeaders(initConfiguration),
@@ -685,6 +695,7 @@ export function serializeRumConfiguration(configuration: RumInitConfiguration) {
685695
profiling_sample_rate: configuration.profilingSampleRate,
686696
use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy,
687697
track_resource_headers: getTrackResourceHeadersTelemetryValue(configuration.trackResourceHeaders),
698+
beta_enable_view_updates: configuration.betaEnableViewUpdates,
688699
...baseSerializedConfiguration,
689700
} satisfies RawTelemetryConfiguration
690701
}

packages/browser-rum-core/src/rumEvent.types.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,6 +1657,26 @@ export interface ProfilingInternalContextSchema {
16571657
| 'failed-to-lazy-load'
16581658
| 'missing-document-policy-header'
16591659
| 'unexpected-exception'
1660+
/**
1661+
* The reason provided by the profiling quota admission API. This attribute is only present if the status is `stopped` due to quota.
1662+
*
1663+
* Possible values:
1664+
* - `quota_ok`: Quota check passed.
1665+
* - `quota_exceeded`: The organization has exceeded its profiling quota.
1666+
* - `org_disabled`: The organization has profiling disabled.
1667+
* - `backend_unavailable`: The quota admission API is unavailable or not initialized.
1668+
* - `undefined`: The quota reason is undefined.
1669+
* - `timeout`: The quota check timed out on the client side.
1670+
* - `api-error`: An API error occurred on the client side.
1671+
*/
1672+
readonly quota_reason?:
1673+
| 'quota_ok'
1674+
| 'quota_exceeded'
1675+
| 'org_disabled'
1676+
| 'backend_unavailable'
1677+
| 'undefined'
1678+
| 'timeout'
1679+
| 'api-error'
16601680
[k: string]: unknown
16611681
}
16621682
/**

scripts/json-schemas.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as path from 'node:path'
33
import { parseArgs } from 'node:util'
44

55
import type jsonSchemaToTypescriptModule from 'json-schema-to-typescript'
6-
import { resolveConfig } from 'prettier'
6+
import { resolveConfig, format as prettierFormat } from 'prettier'
77

88
import { printLog, runMain, fetchHandlingError } from './lib/executionUtils.ts'
99
import { command } from './lib/command.ts'
@@ -108,7 +108,8 @@ async function build() {
108108
...options,
109109
})
110110
printLog(`Writing ${typesPath}...`)
111-
fs.writeFileSync(absoluteTypesPath, compiledTypes)
111+
const formattedTypes = await prettierFormat(compiledTypes, { ...prettierConfig, filepath: absoluteTypesPath })
112+
fs.writeFileSync(absoluteTypesPath, formattedTypes)
112113
}
113114

114115
printLog('Done.')

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,10 +599,10 @@ __metadata:
599599
languageName: unknown
600600
linkType: soft
601601

602-
"@datadog/rum-events-format@DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7":
602+
"@datadog/rum-events-format@DataDog/rum-events-format#commit=c90ea19ee1804c20a37193f938c43559ba92abea":
603603
version: 0.0.0
604-
resolution: "@datadog/rum-events-format@https://github.com/DataDog/rum-events-format.git#commit=02c94b31a2676458a156ed627f3edcd87254beb7"
605-
checksum: 10c0/4a14c1afb23b3e4a0f631f8a1f077d6abab913c82f1145e1585002b488038b00ed19ce16c8840c20c7d94e5d113bc43c48bbb69f46038533cd53d3ebbcbc74c5
604+
resolution: "@datadog/rum-events-format@https://github.com/DataDog/rum-events-format.git#commit=c90ea19ee1804c20a37193f938c43559ba92abea"
605+
checksum: 10c0/24cb4527dbdb216687de7378ac04ff28235015fd02a47608012bd055eed7e32e57cc30282922aafb5e37fa7b549902e66396f1fb9e3bd7915cb75a87a08d6411
606606
languageName: node
607607
linkType: hard
608608

@@ -3919,7 +3919,7 @@ __metadata:
39193919
version: 0.0.0-use.local
39203920
resolution: "browser-sdk@workspace:."
39213921
dependencies:
3922-
"@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7"
3922+
"@datadog/rum-events-format": "DataDog/rum-events-format#commit=c90ea19ee1804c20a37193f938c43559ba92abea"
39233923
"@eslint/js": "npm:10.0.1"
39243924
"@jsdevtools/coverage-istanbul-loader": "npm:3.0.5"
39253925
"@microsoft/api-extractor": "npm:7.58.9"

0 commit comments

Comments
 (0)