<!-- DO NOT MODIFY IT BY HAND. This file is generated automatically during the release process. -->
Changelog
Legend
- 💥 Breaking change - Breaking API changes
- ✨ New feature - New public API, behavior, event, property
- 🐛 Bug fix - Fix bugs, regressions, crashes
- ⚡️ Performance - Improve performance, reduce bundle size
- 📝 Documentation - User-facing documentation
- ⚗️ Experimental - New public feature behind a feature flag
See Gitmoji for a guide on the emojis used.
v7.4.0
Public Changes:
- ✨Rename feature operation APIs to operation (#4810)
- ✨[RUM-16632] add profiling bridge mode support (#4747)
- 🐛 [VULN-81506] fix prototype pollution via mergeInto and tryJsonParse (#4820)
- 🐛 Fix flaky stylesheet rules test (#4803)
- 🐛 [Profiler] Fix empty session ID & quota check on renew (#4766)
- 🐛 Tolerate an invalid view URL in the developer extension (#4773)
- 📝 add deterministic sampling warning to v7.0.0 release notes (#4805)
- 📝 use typedoc for js-core (#4801)
Internal Changes:
- 👷 Update Node.js to v25 (#4818)
- 👷 Update Puppeteer to v25 (#4819)
- 👷 Update dependency babel-loader to v10 (#4817)
- 👷 Update all non-major dependencies (#4816)
- 👷 Update dependency undici to v8.5.0 [SECURITY] (#4808)
- 👷 Update Angular, Vue compiler-dom, and Vite dependencies (#4799)
- 👷 Add API surface linting for @datadog/js-core via API Extractor (#4804)
- 👷 Bump @datadog/js-core to 0.0.3 (#4800)
- 👷 [RUM-16634] Require WebView wildcard to match at least one character (#4785)
- 👷 Improve checkTelemetryErrors: exclude deprecated datacenters and add detailed logging (#4794)
- 👷 migrate module builds from TypeScript compiler API to tsdown (#4767)
- 👷 Update dependency @angular/common to v22.0.1 [SECURITY] (#4789)
- 👷 Update dependency @angular/core to v22.0.1 [SECURITY] (#4786)
- 👷 Allow passing a full commit hash to
json-schemas --update (#4784)
- 👷 also pin angular-cli deps on angular-app (#4783)
- 👷 fix performance benchmark CI and rename e2e setup script (#4781)
- 👷 Update all non-major dependencies (#4777)
- 👷 Update dependency @vitejs/plugin-react to v6 (#4776)
- 👷 Update dependency webpack-cli to v7 (#4780)
- 👷 Update dependency vite to v8 (#4778)
- 👷 use rum-events-format as a yarn dependency (#4772)
- ♻️ move hook and merge utilities from browser-core to @datadog/js-core (#4797)
- ♻️ Migrate browser-core monitoring/display to @datadog/js-core (#4758)
- 🔧 set ephemeral:false for staging branches (#4813)
v7.3.0
Public Changes:
- ✨ Add browser debugger Capture Expressions (#4731)
- ✨ Add Browser RUM Salesforce support (#4726)
- ✨ RUM-16635 Add wildcard host pattern matching to WebView event bridge (#4703)
- ✨ Introduce @datadog/js-core, a runtime-agnostic core package with independent versioning (#4727)
- ✨ Release feature operation vital APIs publicly (#4684)
- 🐛 Harden debugger error formatting for hostile values (#4740)
- 🐛 fix wrong framework name in angular router warning (#4762)
- 🐛 remove unused getValidTagName (#4752)
- 🐛 Restore sanitize toJSON hooks after failures (#4750)
- 🐛 Omit global this from debugger snapshots (#4732)
- 🐛 stop browser source leaking into Node-only scripts typecheck (#4729)
- 🐛 Use Debugger SDK prefix for debugger logs (#4722)
- 🐛 Ignore unsupported debugger probes (#4723)
- 🐛 Forward initial loader errors to RouterProvider's onError (#4660)
- 🐛 Preserve in-flight debugger probe entries on removal (#4688)
- 🐛 [RUM-11848] Guard window/location access for non-browser environments (#4674)
- 🐛 [PANA-7563] Fix maximum call stack exceeded error when processing mutations (#4694)
- 🐛 Skip debugger probes with invalid conditions (#4686)
- 🐛 Report debugger condition evaluation errors (#4685)
- 📝 add code review guide for agents (#4706)
- 📝 remove package tags from changelog entries (#4689)
- ⚗️ Add instrumentConstructor utility (#4714)
- ⚗️ Partial view updates (experimental) (#4201)
Internal Changes:
- 👷 remove dead puppeteer-core ws resolution (#4771)
- 👷 Update dependency eslint-plugin-unicorn to v65 (#4745)
- 👷 Unfreeze canary deployment (#4765)
- 👷 Update angular monorepo to v22 (#4725)
- 👷 Lock file maintenance (#4713)
- 👷 Add 'dependencies' label to bump-chrome-version PRs (#4710)
- 👷 Update dependency next to v16.2.6 [SECURITY] (#4552)
- 👷 Update Node.js to v26 (#4698)
- 👷 Update all non-major dependencies to v7.3.5 (#4744)
- 👷 Allow bcaudan/json-schema-to-typescript git dependency in Yarn hardened mode (#4743)
- 👷 Freeze canary deployment by commenting out deploy-prod-canary CI job (#4742)
- 👷 Update all non-major dependencies (#4724)
- 👷 Update playwright monorepo to v1.60.0 (#4719)
- 👷 Update dependency typescript to v6 (#4700)
- 👷 Update all non-major dependencies (#4701)
- 👷 Bump chrome to 149.0.7827.53-1 (#4709)
- 👷 Update dependency @playwright/test to v1.59.1 (#4502)
- 👷 Add help message when publish fail (#4690)
- 👷 add CI check for unreplaced BUILD_ENV placeholders (#4693)
- 👷 Update BS Mobile Chrome Device (#4692)
- 👷 Add debugger bundle to deploy scripts (#4682)
- 👷 Allow version bump titles in PR (#4681)
- ♻️ Tighten debugger capture return types (#4755)
- ♻️ remove
allowUntrustedEvents from internal configuration (#4769)
- ♻️ more flexible Hook API (#4749)
- ♻️ Rename E2E intake server to Datadog HTTP API (#4737)
- ♻️ Align CODEOWNERS entries (#4739)
- ♻️ Move time utilities from browser-core to @datadog/js-core (#4748)
- ♻️ Simplify debugger template evaluation (#4730)
- ♻️ Make react-router-app the latest version app (#4728)
- ♻️ rename packages/* folders with browser- prefix (#4712)
- ♻️ Rename scripts/performance to scripts/bundle-size and remove deploy step from CI job (#4707)
- ♻️ build intake endpoints lazily instead of storing them on the configuration (#4699)
- ♻️ ESLint maintenance (#4697)
- ♻️ improve
globalObject definition and usage (#4695)
- ♻️ unify endpoint URL building with buildEndpointUrl (#4683)
- ♻️ [PANA-7375] Eliminate unnecessary conditional node serialization (#4629)
- ♻️ refactor modifiable field paths in rum assembly (#4687)
- ♻️ Update debugger generated code target to ES2020 (#4680)
- 🎨 Gate view_update events behind datadogMode in developer extension (#4622)
- 🎨 [PANA-7353] Clean up naming in recording code (#4628)
- ✅ Test probe error handling when addProbe fails (#4754)
- ✅ fail unit tests when unexpected console logs are detected in CI (#4770)
- ✅ Simplify debugger API spec call sites (#4741)
- ✅ Add debugger E2E coverage for delivery lifecycle (#4738)
- ✅ Make tanstack router use basePluginRouterTests (#4746)
- ✅ Fix React router test state leak (#4751)
- ✅ Simplify debugger probe test fixtures (#4736)
- ✅ Add e2e test for Vue Router v5 (#4711)
- ✅ fix flaky test (#4708)
- ✅ debugger: complete entry-snapshot capture-decision tests (#4670)
- 🔧 Add .DS_Store files to .gitignore (#4721)
- 🔥 remove WeakSet fallback in mergeInto (#4763)
- 🔥 remove unused types (#4753)
- 🚨 enable prefer-optional-chain (#4705)
- 🧹 telemetry maintenance: drop unused instrumentation, bump expirations (#4702)
- 🔇 Discard expected navigator.locks errors from page teardown (#4691)
v7.2.0
Public Changes:
- ✨ add
required option for remote configuration (#4651)
- ✨ [PROF-13798] ✨ Add subdomain support to ProxyFn for quota check (#4638)
- ✨[Profiler] Quota check (#4514)
- ✨ implement remote configuration async loading & caching (#4606)
- ✨ Add operation's start vital's id to profiles metadata (#4617)
- ✨ Add
view_update support to developer extension (#4319)
- ✨ Remove start stop action and resource experiment flag (#4677)
- ✨ feat(graphql): extract operationType from the req. body (#4574)
- 🐛 generalize @-prefix ref desugaring in debugger expressions (#4671)
- 🐛 await re-grant if consent is revoked during session manager init (#4605)
- 🐛 ignore symlinked BROWSER_SUPPORT.md in prettier (#4665)
- 🐛 Add context to session manager error telemetry (#4621)
- 🐛 honor strictest allowUntrustedEvents policy in XHR observable (#4611)
- 🐛 improve early request collection reliability in Firefox (#4573)
- 📝 group subdomain option with Session Replay in docs (#4632)
- ⚗️ auto-disable Live Debugger after prolonged Delivery API outage (#4663)
- ⚗️ Default debugger version and embed build identity in snapshots (#4511)
- ⚗️ Add Live Debugger lifetime event budgets (#4510)
- ⚗️️️️ Default args and locals params in debugger snapshot hooks (#4609)
- ⚗️ test(e2e): work around Playwright WebKit click and session bugs (#4616)
- ⚗️ Switch debugger delivery to public ClientTokenAuth endpoint (#4480)
- ⚗️ [Live Debugger] Add 10ms snapshot capture timeout circuit breaker (#4512)
- ⚗️ Make Live Debugger per-second budgets configurable (#4509)
- ⚗️ Tighten Live Debugger global hook typing (#4508)
- ⚗️ fix debugger package version for v7
- ⚗️ Add Live Debugger package (#4449)
Internal Changes:
- 👷 Allow version bump titles in PR (#4681)
- 👷 Split unit-bs CI job per browser (#4623)
- 👷 Update dependency nuxt to v3.21.6 [SECURITY] (#4653)
- 👷 run latest firefox and webkit in CI, default local e2e to chromium (#4618)
- 👷 add CI check enforcing gitmoji PR title convention (#4619)
- 👷 scope debugger CODEOWNERS to the Node.js debugger team (#4666)
- 👷 Update dependency @vitejs/plugin-vue to v6 (#4655)
- 👷 Update dependency vue-router to v5.0.7 (#4654)
- 👷 Update actions/upload-pages-artifact action to v5 (#4636)
- 👷 Update all non-major dependencies (#4635)
- 👷 E2E scope WebKit workaround to macOS only (#4643)
- 👷 add api-performance-benchmark scheduled job + rename test-performance to bundle-size (#4633)
- 👷 default local e2e to chromium only (#4634)
- 👷 disable reviewers-approval mergegate rule (#4627)
- 👷 support Claude worktree setup (#4620)
- 👷 bump performance test SDK bundle to v7 (#4614)
- 👷 Update actions/configure-pages action to v6 (#4597)
- 👷 allocate 4 CPUs to performance-benchmark job (#4610)
- 👷 Add pinned Firefox 119 + WebKit 17.4 e2e + Chromium 120 test runner without BrowserStack (#4612)
- 👷 parallelize test app builds (#4567)
- 👷 Update actions/deploy-pages action to v5 (#4598)
- ♻️ Update debugger generated code target to ES2020 (#4680)
- ♻️ [Profiler] Remove sample-count threshold from profiler discard logic (#4566)
- ✅ remove unit test noise (#4673)
- ✅ fix flaky cookieAccess tests in slow CI (#4613)
- ✅ delay /empty.css response to fix WebKit early-timings flake (#4631)
- 🔧 handle missing packages when renewing the npm token (#4411)
- 🧹 [Profiler] Remove dead page.route() quota mock from E2E profiling scenario (#4656)
- 🔊 Send source-code-context telemetry usage (#4675)
- 🔊 enrich session lock error telemetry with operation and lifecycle context (#4668)
- 🔊 Add more session error context telemetry (#4641)
v7.1.0
Public Changes:
- ✨ [RUM-16070] GA trackResourceHeaders (#4542)
- 🐛 make sure we don't postpone batch indefinitely when upserting a view (#4583)
- 🐛 align trace sampling fallback with non-bridge path
- 🐛 tolerate Cypress.env throwing under allowCypressEnv: false (#4550)
- 🐛 [Browser Profiler] use profiling start time to look up session id (#4545)
- 📝 export public API option types for typedoc (#4575)
- 📝 Add DO NOT MODIFY IT BY HAND comment to CHANGELOG.md (#4526)
- 📝 update CDN URLs to v7 and clear NEXT_MAJOR_BRANCH (#4551)
Internal Changes:
- 👷 Update all non-major dependencies (#4596)
- 👷 Auto-cancel interruptible jobs on new commits (#4571)
- 👷 Update all non-major dependencies (#4501)
- 👷 Renovate: pin angular-app to its current Angular version (#4565)
- 👷 check @datadog/browser-* in test app devDependencies (#4564)
- 👷 add dd-octo-sts[bot] to CLA allowlist (#4562)
- 👷 Bump chrome to 148.0.7778.96-1 (#4559)
- 👷 Lock file maintenance (#4504)
- 👷 Update dependency typescript to v6 (#4553)
- 👷 Update dependency next to v16.1.7 [SECURITY] (#4375)
- 👷 [PANA-7214] Use only new serialization code in mutation tracker tests (#4538)
- 👷 Bump chrome to 147.0.7727.55-1 (#4452)
- 👷 RUM-15702 Add trace sampling decision to DatadogEventBridge (#4516)
- ♻️ remove unnecessary type assertions
- 🔥 [PANA-7724] Remove the old session replay serialization algorithm (#4547)
v7.0.0
This is the v7 major release. It removes deprecated options and legacy code paths accumulated over the v6 line, modernizes the build, and ships a more reliable session manager.
- Smaller, faster bundle — dropping legacy browser shims and switching to ESM dynamic imports reduces the SDK footprint on modern browsers.
- Better privacy out of the box — safer default privacy settings mean less risk of capturing sensitive content without explicit configuration.
- More reliable sessions — modernized session manager with bug fixes, including around very short repetitive sessions.
- Higher-quality data — deterministic sampling (consistent decisions across products), aborted requests no longer polluting error metrics, and a new
session_renewal view loading type to better understand session boundaries.
- A cleaner API — deprecated options and beta flags removed; what's left is the supported, stable surface going forward.
Warning
Upgrading to v7 introduces deterministic sampling for distributed traces based on the RUM session ID. As a result, under RUM without Limits, the likelihood to index sessions that had sampled associated traces is significantly increased — meaning more traces will now be retained by your existing Cross-Product Retention Filters RUMxAPM, even without any configuration change.
If you have cross-product Retention Filters (e.g. RUM-linked APM traces), you may see an increase in the volume of indexed spans, which could lead to higher costs. We recommend reviewing your Retention Filter configuration and estimated span volume after upgrading.
Migrating from v6:
Public Changes:
- 💥 remove fake resource timing for document resources (#4406)
- 💥 add
session_renewal view loading type for session-renewed views (#4478)
- 💥 always collect early requests (#4285)
- 💥 replace DurationVitalReference with vitalKey option in start/stopDurationVital (#4403)
- 💥 Rename chunk files to include "datadog" prefix for cross-bundler naming (#4391)
- 💥 Remove deprecated
strategy from plugin API (#4382)
- 💥 [RUM-8693] Decouple forwardErrorsToLogs from console.error log capture (#4356)
- 💥 remove trackBfcacheViews and track bfcache restores by default (#4228)
- 💥 default privacy settings to improve privacy out of the box (#4279)
- 💥 Remove FID (First Input Delay) tracking (#4223)
- 💥 [RUM-970] do not collect network errors for aborted requests (#4225)
- 💥 [RUM-14058] Use tree walker for action name computation (#3972)
- 💥 enable propagateTraceBaggage by default (#4226)
- 💥 use ESM dynamic imports for CDN async chunks (#4217)
- 💥 drop old-browser compatibility code for ES2020 baseline (#4428)
- 💥 remove internalAnalyticsSubdomain and INTAKE_SITE_FED_STAGING (#4354)
- 💥 remove betaTrackActionsInShadowDom and make shadow DOM action tracking the default (#4355)
- 💥 Remove deprecated allowFallbackToLocalStorage option (#4329)
- 💥 [RUM-11273] Remove usePciIntake option (#4335)
- 💥 Remove old cookie migration (#4198)
- 💥 Remove betaEncodeCookieOptions and always encode cookie options (#4195)
- ✨ [RUM-15280] Expose DEFAULT_TRACKED_RESOURCE_HEADERS on RumPublicApi (#4523)
- ✨ Make nuxt package public (#4520)
- ✨ [PANA-6624] Enable the new session replay serialization algorithm by default (#4507)
- ✨ Rename session store key to
_dd_s_v2 with legacy migration (#4459)
- ✨ make all sampling decisions deterministic (#4194)
- 🐛 [PANA-7217] Limit the size of the string table in session replay recordings (#4544)
- 🐛 don't adopt another tab's session when it replaces ours directly (#4537)
- 🐛 fix session lifetime bugs for long-lived pages and multi-tab scenarios (#4531)
- 🐛 fix regexp for cookie parsing (#4527)
- 🐛 Prevent cross-tab session adoption after expiry (#4475)
- 🐛 make sure we never send data for very old sessions (#4462)
- 🐛 Ignore cookie observable updates missing the c marker (#4437)
- 🐛 Add telemetry debug for Cookie Store API set failures (#4432)
- 🐛 Fix InvalidStateError when tracing buffered XHR requests (#4423)
- 📝 Add Claude Code skill for v6 to v7 SDK migration (#4486)
Internal Changes:
- 👷 Renovate: tweak memory (#4539)
- 👷 Use 15-minute cache for next major canary S3 uploads (#4476)
- 👷 bump rum-vue version to 7.0.0-alpha.0 (#4351)
- 👷 Bump rum-nextjs version to 7.0.0-alpha.0 (#4295)
- 🔧 use NEXT_MAJOR_BRANCH variable for canary deploy versioning (#4407)
- 🔧 Decouple v7 SDK artifact version from package.json version (#4401)
- 🔧 Bump @datadog/browser-rum-angular to 7.0.0-alpha.0 (#4394)
- 🔧 fix root package.json version (#4286)
- 🤖 bring v7 upgrade skill to
main (#4541)
- ♻️ Replace BoundedBuffer with BufferedObservable and track dropped data via telemetry (#4489)
- 📈 Add telemetry metric for session manager init duration (#4488)
- ♻️ Route fetch, XHR, and console through bufferedDataObservable (#4470)
- ♻️ Refactor startSessionManager to return a Promise instead of using a callback (#4438)
- ♻️ decouple session change notification from state reading (#4457)
- 🔍 add cookie value and debug context to session renewal event (#4433)
- ♻️ Rewrite SessionManager with reactive strategy interface (#4348)
- ♻️ Simplify session managers by removing product-specific wrappers (#4204)
- ♻️ Make session manager injectable and isolate for v7 rewrite (#4157)
- ♻️ Async session manager (#4131)
v6.33.0
Public Changes:
- ✨ Add tab.id to all RUM and Logs events (#4184)
- ✨ Allow more granularity on trackResourceHeaders (#4421)
- ✨ Add TanStack Router integration to browser-rum-react (#4414)
- ✨ feat: enable INP subparts collection by default (#4371)
- 🐛 Handle null deadline in taskQueue requestIdleCallback (#4497)
- 🐛 [PANA-6774] Make the new data format compatible with existing mobile SDKs (#4441)
- 🐛 Fix false duplicate test name reports on browser restart (#4439)
- 🐛 [PANA-6683] Prevent MASK_UNLESS_ALLOWLISTED from unmasking form element children (#4409)
- 🐛 Fix yarn.lock modifications on test apps rebuild (#4387)
- 🐛 [RUM-15239] Fix penultimate batch lost on unload when batch is near size limit (#4385)
- 🐛 [PANA-6683] Never serialize descendants of hidden or ignored elements (#4408)
- 📝 Add README for rum-nuxt package (#4506)
Internal Changes:
- 👷 Update dependency vite to v7.3.2 [SECURITY] (#4487)
- 👷 Ensure test apps use peerDependencies for @datadog/* packages (#4491)
- 👷 Remove safari mobile from browsers.conf (#4467)
- 🔧 Add dd-devflow[bot] to CLA allowlist (#4440)
- Revert "🔧 disable renovate (#4381)" (#4427)
- 🎨 [PANA-6846] Make whitespace consistent between different E2E setups (#4450)
- 🎨 [PANA-6776] Separate session replay test helpers and update CODEOWNERS (#4435)
- 🎨 [PANA-6682] Add independent tests for serializeNodeAsChange (#4410)
- ✅ improve E2E test reliability on BrowserStack (#4494)
- ✅ Create basePlugin tests (#4395)
- ✅ [PANA-6831] Support the Change data format in E2E tests (#4447)
- ✅ [PANA-6863] Increase timeout for session replay serialization tests (#4456)
- ✅ Fix NextJS flaky tests, cleanup Firefox skip. (#4426)
- ✅ remove unit tests spam (#4419)
- [RUM-15273] 🔊 Add telemetry for trackResourceHeaders (#4492)
- Remove shadow reviewer workflow (#4517)
- Fix TanStack Router lint resolution in test app (#4513)
- ⚗️ Add Nuxt error tracking (#4477)
- ⬆️ upgrade dependencies (#4490)
- RUM-15488: add US2_FED intake site (#4495)
- [PANA-6266] Remove ExperimentalFlag composed_path_selector 🚩 (#4396)
- ⚗️ Add Nuxt plugin with router tracking (#4424)
- Fix shadow reviewer cross-references and depth limits (#4455)
- Add shadow reviewer workflow (#4430)
- 🧹 Cleanup session manager telemetry (#4434)
- ⬆️ [PANA-6792] Bump replay sandbox version to support data format changes (#4442)
- 🚧 [PANA-6774] Update FullSnapshotRecord definition from rum-events-format (#4436)
- 🔥 remove lerna (#4412)
- ⚗️ [RUM-15226] Capture network headers (#4372)
- 🧹 Sync Rum-Events-Format for GraphQL (#4417)