Releases: signalfx/splunk-otel-js-web
Release list
v3.0.0
Breaking Changes
@splunk/otel-web- Domain migration from
signalfx.comtoobservability.splunkcloud.com#1695- All endpoints have moved to new domains:
- CDN:
cdn.signalfx.com→cdn.observability.splunkcloud.com - RUM ingest:
rum-ingest.{realm}.signalfx.com→rum-ingest.{realm}.observability.splunkcloud.com - Source map upload API:
api.{realm}.signalfx.com→api.{realm}.observability.splunkcloud.com - Session Replay ingest:
rum-ingest.{realm}.signalfx.com→rum-ingest.{realm}.observability.splunkcloud.com
- CDN:
- Content Security Policy (CSP): If your application uses a CSP, you must update your directives before upgrading:
script-src: addcdn.observability.splunkcloud.com(for loading the agent and session replay via CDN)connect-src: addrum-ingest.{realm}.observability.splunkcloud.com(for telemetry and replay data export) andapi.{realm}.observability.splunkcloud.com(if using source map upload via build plugins)- The old
signalfx.comdomains can be removed from your CSP after all agents are upgraded
latestCDN tag discontinued: Thelatesttag is permanently pinned to v2.5.1 and will not receive any future updates — including v3.0.0 and beyond. Users loading the agent viacdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.jswill remain on v2.5.1 indefinitely. Migrate to a versioned URL on the new CDN domain:Available version locks:- <script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js"></script> + <script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3/splunk-otel-web.js"></script>
v3— major version lock (recommended), receives all minor and patch updatesv3.0— minor version lock, receives patch updates onlyv3.0.0— exact version pin
- All endpoints have moved to new domains:
- OTLP exporter enabled by default #1791
- OTLP is now the default export format when
beaconEndpointis not specified - A deprecation warning is emitted when
beaconEndpointis explicitly provided withoutexporter.otlp: true, indicating Zipkin will be removed in a future version - Migration: Set
exporter.otlp: falseto opt out.
- OTLP is now the default export format when
- Promoted experimental flags to stable defaults #1780
_experimental_adjustSessionStartToTimeOrigin→adjustSessionStartToTimeOrigin(default:true) — session start time is backdated toperformance.timeOrigin_experimental_discardDataAfterInactivity→discardDataAfterInactivity(default:true) — telemetry is discarded after 15 minutes of user inactivityspaMetricsnow defaults totrue— SPA route metrics collected by defaultexperimental_alignWebVitalsSpansWithDocumentLoad→instrumentations.webvitals.alignWebVitalsSpansWithDocumentLoad— LCP, CLS, and INP spans are anchored to the documentLoad span timestamp by default- Migration: Set individual flags to
falseto opt out of new defaults.
- Domain migration from
New Features and Improvements
-
@splunk/otel-web- Add
http.cache.hitattribute to resource spans #1768- Boolean attribute on resource fetch spans (document-load and post-document-load) indicating cache status
- Detects cache hits via 304 response status or zero transfer size with non-zero decoded body size
- Attribute is omitted for cross-origin requests without
Timing-Allow-Originheaders
- Add
_experimental_captureBrowserDebugAttributesoption #1793- Experimental flag that collects browser diagnostics (hardware concurrency, device memory, viewport/screen data, network hints, JS heap memory, storage quota, User-Agent Client Hints) and attaches them as global span attributes
- High cardinality — intended for temporary debugging only
- Add
-
@splunk/otel-web-session-recorder- Add option to store failed segments to IndexedDB #1766
- New
persistFailedReplayData: 'indexeddb'configuration option for storing failed replay segments in IndexedDB instead of localStorage - Automatic retry on subsequent page loads
- New
- Add option to store failed segments to IndexedDB #1766
-
Updated dependencies #1771, #1772, #1773, #1774, #1775, #1777, #1778, #1779, #1782, #1783, #1784, #1785, #1786, #1787, #1788, #1789, #1790
CDN
Version v3.0.0
background-service.html:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3.0.0/background-service.html" integrity="sha384-0Plr22r4EPSZZYnvJBmBA9/uIjDusocispOGmWMnGxdiNRjuvgVHfOKsCCI90L1s" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3.0.0/splunk-otel-web-session-recorder.js" integrity="sha384-dfTBovwhNIZNfT0bDhY5r1DbMmoiWTxnTMUM6lQndfPpjJZL6Ud1s1hyQFqyfXXs" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3.0.0/splunk-otel-web.js" integrity="sha384-Ic25qGYVTgaMsMh6CLv+cj/OI9QshU6d8leunR8UwWMwCH+8Km/AgClNe2oFHsjn" crossorigin="anonymous"></script>Version v3.0
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3.0/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3.0/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3.0/splunk-otel-web.js" crossorigin="anonymous"></script>Version v3
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3/splunk-otel-web.js" crossorigin="anonymous"></script>v2.5.1
-
@splunk/otel-web- Trace separation of XHR and Fetch from parent trace #1693
- New
separateTracesconfiguration option that gives XHR and Fetch requests their own trace IDs instead of inheriting the parent click event's trace ID - Preserves the relationship through
parent.traceIdandparent.spanIdattributes, enabling proper Business Transaction correlation in backend APM while maintaining RUM trace correlation - Supports top-level config, per-instrumentation config, and mixed configurations with overrides
- New
- Add
user_agent.is_botanduser_agent.is_automatedattributes #1760- New global span attribute
user_agent.is_botthat uses regex detection to flag bot/crawler user agents - New global span attribute
user_agent.is_automatedthat checksnavigator.webdriverto identify browsers controlled by automation frameworks like Selenium, Puppeteer, and Playwright - Enables downstream filtering and analysis of synthetic versus real user traffic
- New global span attribute
- Add
splunk.rum.is_latest_tagattribute #1762- Adds a global span attribute
splunk.rum.is_latest_tag: truewhen the agent loads via the "latest" CDN tag - Updates deprecation warnings to clarify that the "latest" tag remains pinned to v2.5.x
- Adds a global span attribute
- Improve dead click detection for
role=buttonand anchor elements #1756- Elements with
role="button"are now treated as interactive components for dead click detection - Excludes
<a>elements with actual href attributes from detection since they trigger navigation - Keeps anchors without href or with
javascript:hrefs as candidates for detection
- Elements with
- Upgrade upstream to v2.11.1 #1758
- Trace separation of XHR and Fetch from parent trace #1693
⚠️ Upcoming breaking changes in v3.0.0
Action required before upgrading to v3.0.0:
- Domain migration: All domains are changing from
signalfx.comtoobservability.splunkcloud.com. This includes both the CDN (cdn.signalfx.com→cdn.observability.splunkcloud.com) and the ingest endpoint (rum-ingest.{realm}.signalfx.com→rum-ingest.{realm}.observability.splunkcloud.com). If your application uses a Content Security Policy (CSP), update yourscript-srcandconnect-srcdirectives to allow the new domains before upgrading. latestCDN tag discontinued: ThelatestCDN tag will stop being updated after v2.5.0. Users relying on thelatesttag should migrate to a versioned URL:
- <script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js"></script>
+ <script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3/splunk-otel-web.js"></script>The following experimental config options will be removed in v3.0.0 and their behavior will be enabled by default. This may affect how sessions and data are counted:
_experimental_adjustSessionStartToTimeOrigin: Session start time will be automatically backdated toperformance.timeOrigin._experimental_discardDataAfterInactivity: Will be enabled by default. Data will be automatically discarded after 15 minutes of user inactivity. Set_experimental_discardDataAfterInactivity: falseto opt out.- OTLP exporter enabled by default: The OTLP exporter will replace Zipkin as the default export format. Set
exporter.otlp: falseto opt out. spaMetrics: Will be enabled by default. SetspaMetrics: falseto opt out.experimental_alignWebVitalsSpansWithDocumentLoad: All web vitals spans (LCP, CLS, INP) will be automatically anchored to the document load span — start time will match the documentLoad span timestamp rather than the time the metric was reported, andlocation.hrefwill reflect the original page load URL rather than the current URL after SPA navigation.
CDN
Version v2.5.1
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5.1/background-service.html" integrity="sha384-0Plr22r4EPSZZYnvJBmBA9/uIjDusocispOGmWMnGxdiNRjuvgVHfOKsCCI90L1s" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5.1/splunk-otel-web-session-recorder.js" integrity="sha384-UWsDRzXj6PwL9CrVe513I+khoJMsgS1MSp08bj8q8Xv0pYEMWDF3y3VVZ163Tf7m" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5.1/splunk-otel-web.js" integrity="sha384-/IPW28xWyyOQ+DNW9SStfdmEJIhHAPyZyuWgG/6K7fkiLK0g+dg4R7DagbqzpRXv" crossorigin="anonymous"></script>Version v2.5
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v2.5.0
-
@splunk/otel-web- Frustration signals - dead clicks detection #1697
- Detects when a user clicks an interactive element (button, link, or submit input) that produces no meaningful response — no DOM mutation and no network activity within a configurable time window
- Enabled via
instrumentations.frustrationSignals.deadClick: trueor with custom options (timeWindowMs,ignoreUrls) - Default detection window is 1000ms
- Frustration signals - error clicks detection #1681
- Detects when a user clicks on a UI element and a JavaScript error occurs shortly afterward
- The frustration span captures the error message, error type, clicked element, and links to the original click and error spans
- Enabled via
instrumentations.frustrationSignals.errorClick: trueor with custom options (timeWindowMs,ignoreUrls)
SplunkRum.init({ instrumentations: { frustrationSignals: { deadClick: true, errorClick: true, }, }, })
- Add
_experimental_adjustSessionStartToTimeOriginconfig option #1705- Backdates session start time using
performance.timeOriginto reflect when the tab opened rather than when the SDK initialized - Drops spans whose start time predates the session start time by not assigning a session ID
- Anchors
session.startspan to the precise session start moment
- Backdates session start time using
- Use nanoid for IDs to prevent collisions #1701, #1752
- Cryptographically secure ID generation using nanoid is now used by default for all IDs, preventing duplicate session IDs from Googlebot's seeded Math.random()
- Add retry strategy for anonymous user ID persistence #1703
- Adds write-back verification with retry capability (up to 3 attempts) when persisting the anonymous user ID cookie
- Fix init session missing from sessionHistory and notifications #1747
- Session initialization now follows the same processing path as subsequent updates, ensuring the initial session is added to
sessionHistory, persisted to storage, and triggers subscriber notifications
- Session initialization now follows the same processing path as subsequent updates, ensuring the initial session is added to
- Fix timestamp of webvitals spans #1700
- Fixed incorrect start times on web vitals spans when
experimental_alignWebVitalsSpansWithDocumentLoadis enabled
- Fixed incorrect start times on web vitals spans when
- Frustration signals - dead clicks detection #1697
-
@splunk/otel-web-session-recorder -
Updated dependencies #1750, #1744, #1745, #1742, #1746, #1738, #1739, #1737, #1740, #1741, #1726, #1730, #1727, #1731, #1729, #1728, #1734, #1732, #1720, #1718, #1721, #1723, #1722, #1719, #1724, #1717, #1708, #1706, #1711, #1712, #1715, #1714, #1713, #1709, #1699
⚠️ Upcoming breaking changes in v3.0.0
Action required before upgrading to v3.0.0:
- Domain migration: All domains are changing from
signalfx.comtoobservability.splunkcloud.com. This includes both the CDN (cdn.signalfx.com→cdn.observability.splunkcloud.com) and the ingest endpoint (rum-ingest.{realm}.signalfx.com→rum-ingest.{realm}.observability.splunkcloud.com). If your application uses a Content Security Policy (CSP), update yourscript-srcandconnect-srcdirectives to allow the new domains before upgrading. latestCDN tag discontinued: ThelatestCDN tag will stop being updated after v2.5.0. Users relying on thelatesttag should migrate to a versioned URL:
- <script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js"></script>
+ <script src="https://cdn.observability.splunkcloud.com/o11y-gdi-rum/v3/splunk-otel-web.js"></script>The following experimental config options will be removed in v3.0.0 and their behavior will be enabled by default. This may affect how sessions and data are counted:
_experimental_adjustSessionStartToTimeOrigin: Session start time will be automatically backdated toperformance.timeOrigin._experimental_discardDataAfterInactivity: Will be enabled by default. Data will be automatically discarded after 15 minutes of user inactivity. Set_experimental_discardDataAfterInactivity: falseto opt out.- OTLP exporter enabled by default: The OTLP exporter will replace Zipkin as the default export format. Set
exporter.otlp: falseto opt out. spaMetrics: Will be enabled by default. SetspaMetrics: falseto opt out.experimental_alignWebVitalsSpansWithDocumentLoad: All web vitals spans (LCP, CLS, INP) will be automatically anchored to the document load span — start time will match the documentLoad span timestamp rather than the time the metric was reported, andlocation.hrefwill reflect the original page load URL rather than the current URL after SPA navigation.
CDN
Version v2.5.0
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5.0/background-service.html" integrity="sha384-0Plr22r4EPSZZYnvJBmBA9/uIjDusocispOGmWMnGxdiNRjuvgVHfOKsCCI90L1s" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5.0/splunk-otel-web-session-recorder.js" integrity="sha384-1+DSuWpRN2BUC5/8kb1j7KQWn33hezDM5/fwfW91Fvz3eBWsfFeqtrFPL81/Mfa2" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5.0/splunk-otel-web.js" integrity="sha384-Godz4Z/vwShSkBKV8KKryrIzvlp+TtSa6inBze2LzKosmtE4+KavzHV4dGmjOUcn" crossorigin="anonymous"></script>Version v2.5
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.5/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest...
v2.4.0
-
@splunk/otel-web- Align webvitals spans with document load span #1673
- All webvitals spans (LCP, CLS, INP) can now be anchored to the document load span
- Start time is set to the same timestamp as the documentLoad span, rather than the time the metric was reported
location.hrefis copied from the documentLoad span onto the webvitals span, reflecting where the page originally loaded rather than the current URL after SPA navigation- This feature must be explicitly enabled via the
experimental_alignWebVitalsSpansWithDocumentLoadoption:SplunkRum.init({ // ... instrumentations: { webvitals: { experimental_alignWebVitalsSpansWithDocumentLoad: true, }, }, })
- Debug mode #1678
- Adds the ability to enable debug logging at runtime via localStorage, without requiring a config change
- Add polyfills to npm target #1688
- Polyfills are now applied to the npm build target as well, not just CDN artifacts
- Improve anonymous user persistence between tabs #1687
- Fixes a race condition where another tab could persist a different anonymous user ID simultaneously
- Align webvitals spans with document load span #1673
-
@splunk/otel-web-session-recorder
CDN
Version v2.4.0
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.4.0/background-service.html" integrity="sha384-AggP7sVqXrY0GDAvuN48/FFQQXi88Scvi8I5Xz8RpHHR90ioC4IisE/qJMZhXk2h" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.4.0/splunk-otel-web-session-recorder.js" integrity="sha384-08TZUK3LE2oXW/1HgfB0gNS5uQcYii5otmPFldyVLCAB0fE4U4jQKXBLuk+sQ4cJ" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.4.0/splunk-otel-web.js" integrity="sha384-y1roVG1ZqRtK6YPe8dR4qIBWg3m2JCwESyToHsOm8c9GEjbJA8ZTFfMYEIqoxmpp" crossorigin="anonymous"></script>Version v2.4
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.4/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.4/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.4/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v2.3.0
-
@splunk/otel-web- External session support #1648
- Enables sharing a single RUM session between mobile and browser agents by transferring session metadata across application boundaries
- New
sessionMetadataconfiguration parameter to initialize with externally provided session data - New
SplunkRum.getSessionMetadata()method to expose current session metadata for transfer - Prevents fragmented sessions when users navigate from native app contexts to browser environments
- Introduce
_experimental_discardDataAfterInactivity#1670- Experimental flag to discard all data once user activity expires after 15 minutes of inactivity
- Also fixes a bug involving missing previous session state
- Initialize anonymous ID on load #1674
- Fixed a race condition where the anonymous user ID was persisted lazily, causing a second tab to generate its own ID if opened before the first span fired
- External session support #1648
-
Updated dependencies #1649, #1650, #1651, #1652, #1654, #1655, #1656, #1657, #1658, #1659, #1660, #1661, #1663, #1664, #1665, #1666, #1667, #1668, #1669, #1672
CDN
Version v2.3.0
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.3.0/background-service.html" integrity="sha384-AggP7sVqXrY0GDAvuN48/FFQQXi88Scvi8I5Xz8RpHHR90ioC4IisE/qJMZhXk2h" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.3.0/splunk-otel-web-session-recorder.js" integrity="sha384-4bUO29+sSf4UUPZUUHLAJ4GaF1G9MtAMXZU6eKrMij6UvmmjAnev58FwcZWlRqdP" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.3.0/splunk-otel-web.js" integrity="sha384-IvIWluE2BNZr5w9/0lb0L+QLc9ko2NktAE8h0bJKqan6i0X9XlXGBFFJnozMjtWy" crossorigin="anonymous"></script>Version v2.3
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.3/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.3/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.3/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v2.2.0
-
@splunk/otel-web- Enable rage clicks by default #1641
- Rage clicks frustration signal is now enabled by default
- Remove
_experimentalprefix fromspaMetrics#1640- The spaMetrics feature is now stable and no longer marked as experimental
- Prevent
session.startspans and session replay for native sessions #1638- Prevents duplicate
session.startspans and session replay when receiving a session ID from the mobile agent (MRUM)
- Prevents duplicate
- Enable rage clicks by default #1641
-
@splunk/otel-web-session-recorder- Update session-replay CDN module to v2.6.7 #1643
-
@splunk/otel-web-build-plugins- Fix build of
@splunk/rum-build-plugins#1644- Fixed broken source map upload functionality for both CommonJS and ES Module consumers
- Added webpack example for end-to-end validation of upload behavior
- Fix build of
-
Updated dependencies
CDN
Version v2.2.0
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.2.0/splunk-otel-web-session-recorder.js" integrity="sha384-TDkvh5GR3vQmDyq1uPBAjIE7fmrsk6M2V9pZe51Ok4XxcPaF+qE2LsRZs65M3+dw" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.2.0/splunk-otel-web.js" integrity="sha384-wFnO8STkWhh4K8Hm/poge42BCGS7y10oSmY+4kBp4vLcbmnVMBbbJQwgE5MTO4pV" crossorigin="anonymous"></script>Version v2.2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.2/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v2.1.0
-
@splunk/otel-web- Change Rage Click Type to Frustration #1593
- Renamed rage click feature to "frustration" to enable future expansion to additional frustration categories
- Added new
frustration_typeandinteraction_typeattributes - This allows future support for error clicks and dead clicks
- Increase Default Rage Click Limit from 3 to 4 #1590
- Raised the threshold for detecting rage clicks from 3 to 4 occurrences within a one-second timeframe
- Emit Session Start Span #1584
- Added automatic emission of a
session.startspan when a new session begins - Each session generates exactly one span for tracking session lifecycles
- Added automatic emission of a
- Fix Secret Scanning False Positives in Bundle #1594
- Fixed an issue where GitHub's secret scanning triggered false alerts when including the library's bundle in repositories
- Replaced occurrences of unused "OTEL_EXPORTER_JAEGER_PASSWORD" environment variable name
- Internal: Ensure Fresh Session State is Returned #1589
- Internal: Fix Optimised Parameter in getElementXPath #1588
- Change Rage Click Type to Frustration #1593
-
@splunk/otel-web-session-recorder- Updated Session Replay CDN Module #1630
- Bumped session-replay to latest upstream version
- Updated Session Replay CDN Module #1630
-
Updated dependencies #1592, #1595, #1596, #1597, #1599, #1601, #1602, #1603, #1604, #1605, #1608, #1609, #1610, #1611, #1616, #1620, #1621, #1622, #1623, #1624, #1625, #1627, #1628, #1632, #1633, #1634, #1635, #1636
CDN
Version v2.1.0
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.1.0/background-service.html" integrity="sha384-XJGfg0ZTiemi+P19rBpkgMvQfSv4KUMjyDYesQr+Sb2DufnHtpV1ZNDdtCQqAXkw" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.1.0/splunk-otel-web-session-recorder.js" integrity="sha384-0mVnL5yVkIGmvif7SGWJHQJ43fg/WP5b23I93XYDguBGTJSax/9Teuoncc1BovHR" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.1.0/splunk-otel-web.js" integrity="sha384-OL3JYH6lxvFNUBrB+mo6kk0P8fBZNMulljO8jKzw6UNpRMwPb98qCEY36lZUL9mE" crossorigin="anonymous"></script>Version v2.1
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.1/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.1/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.1/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v2.0.0
⚠️ Breaking Changes
@splunk/otel-web- Anonymous User Tracking Enabled by Default #1579
- Changed the default value of
user.trackingModefromnoTrackingtoanonymousTracking - The agent now generates a persistent anonymous user ID (
_splunk_rum_user_anonymousId) stored via the configured persistence method (default: cookie) - This enables:
- User journey correlation across sessions
- Issue diagnosis by tracking user behavior patterns
- Digital experience analytics without identifying individual users
- Migration: Users who do not want this behavior can explicitly set
user.trackingMode: 'noTracking'in their configuration - Example:
SplunkRum.init({ realm: 'us0', rumAccessToken: '....', user: { trackingMode: 'noTracking', // Opt out of anonymous tracking }, })
- Changed the default value of
- Anonymous User Tracking Enabled by Default #1579
New Features and Improvements
-
@splunk/otel-web-session-recorder- Added Session Replay Sampling #1577
-
Introduced
SessionBasedSamplerto control the percentage of sessions that get recorded by session recorder -
SplunkRum takes a
ratioof all possible sessions, e.g.0.8means 80% of all possible sessions will be sent to the backend -
SplunkSessionRecorder also takes a
ratioof all possible sessions, e.g.0.02means that replay will be recorded for the 2% of all possible sessions -
Note that if you record 20% of the sessions, and you want the replay for 10% of recorded sessions then you need to multiply:
0.2 * 0.1 = 0.02, so the ratio forSplunkRumis0.2and the ratio forSplunkSessionRecorderis0.02 -
We ensure that if the replay is recorded then the session itself is recorded and that the ratios are preserved
-
Example usage:
// Example 1: Record 30% of all sessions (independent of agent sampling) SplunkSessionRecorder.init({ realm: 'us0', rumAccessToken: '....', sampler: new SplunkRum.SessionBasedSampler({ ratio: 0.3 }), // records 30% of sessions }) // Example 2: If agent samples 80% and you want session recorder to record 20% of ALL sessions // (not 20% of the agent-sampled sessions), use: SplunkRum.init({ realm: 'us0', rumAccessToken: '....', sampler: new SplunkRum.SessionBasedSampler({ ratio: 0.8 }), // agent samples 80% }) SplunkSessionRecorder.init({ realm: 'us0', rumAccessToken: '....', sampler: new SplunkRum.SessionBasedSampler({ ratio: 0.2 }), // records 20% of all sessions }) // Result: 20% of all sessions will have session replay // Example 3: If agent samples 80% and you want session recorder to record 20% of of the agent-sampled sessions, use: SplunkRum.init({ realm: 'us0', rumAccessToken: '....', sampler: new SplunkRum.SessionBasedSampler({ ratio: 0.8 }), // agent samples 80% }) SplunkSessionRecorder.init({ realm: 'us0', rumAccessToken: '....', sampler: new SplunkRum.SessionBasedSampler({ ratio: 0.16 }), // 0.8 * 0.2 = 0.16 })
- Bug fixes included:
- Replay export is now scoped to the current session. This fixes a case where the last chunk from the previous session could be attached to a new session
- Recording now re-checks sampling when a new session starts, not just on the first page load. This prevents sessions from being skipped when sampling changes across sessions
- Bug fixes included:
-
- Added Session Replay Sampling #1577
-
@splunk/otel-web- Added Experimental Data Attributes Capture #1537
- Added
__experimental_dataAttributesToCaptureconfig option to capture customdata-*attributes from clicked elements - Captured attributes are attached to click and rage click spans
- Supports both hyphenated and camelCase format for attribute names
- Example:
SplunkRum.init({ realm: 'us0', rumAccessToken: 'YOUR_TOKEN', applicationName: 'my-app', __experimental_dataAttributesToCapture: [ 'data-testid', // hyphenated format 'track', // camelCase format (looks up data-track) 'userName', // camelCase format (looks up data-user-name) ], })
- When a button with these attributes is clicked, the span will include:
element.dataset.testid: "submit-btn"element.dataset.track: "purchase"element.dataset.userName: "john-doe"
- Added
- Added Page Completion Time (PCT) Metric for SPAs #1536
-
Introduced a new
SpaMetricsManagerfor measuring page load times in Single Page Applications (SPAs) -
Unlike traditional page load metrics that rely on browser navigation events, this monitors actual resource loading activity to determine when a page has finished loading
-
When enabled, PCT is automatically recorded as the duration of every
routeChangespan in your application -
How PCT is calculated:
- When a user navigates within your SPA (clicking links, tabs, or menu items), the timer starts
- Monitors all resource loading activity (API calls, images, stylesheets, etc.)
- Uses a quiet period detection algorithm - waits for a configurable period (default: 5 seconds) with no new resource activity
- The total time is recorded as the duration of the
routeChangespan
-
Disabled by default - must be explicitly enabled in configuration
-
How to enable:
// Option 1: Enable with defaults SplunkOtelWeb.init({ realm: 'us0', rumAccessToken: 'your-token', applicationName: 'my-spa-app', _experimental_spaMetrics: true, }) // Option 2: Enable with custom configuration SplunkOtelWeb.init({ realm: 'us0', rumAccessToken: 'your-token', applicationName: 'my-spa-app', _experimental_spaMetrics: { quietTime: 3000, // 3 seconds quiet period (default: 5000ms) maxResourcesToWatch: 50, // Limit tracked resources (default: 100) ignoreUrls: [/analytics/], // Additional URLs to ignore }, })
-
- Added Experimental Data Attributes Capture #1537
CDN
Version v2.0.0
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.0.0/background-service.html" integrity="sha384-AggP7sVqXrY0GDAvuN48/FFQQXi88Scvi8I5Xz8RpHHR90ioC4IisE/qJMZhXk2h" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.0.0/splunk-otel-web-session-recorder.js" integrity="sha384-tYHVKx02d+Ft+HjVMw07H6R8rT+azHH47m7IR//Tg25B2FHTU4uHe64SDhDodAF2" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.0.0/splunk-otel-web.js" integrity="sha384-e2igRFzjYOqVycVNCStQz8ca4wF5qXSPg6kf/wt3HmzrOyl5O4St/UX8VNjZT4j2" crossorigin="anonymous"></script>Version v2.0
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.0/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.0/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2.0/splunk-otel-web.js" crossorigin="anonymous"></script>Version v2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v2/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v1.2.0
1.2.0
-
@splunk/otel-web- Added Rage Click Detection #1484
- Automatically detects and reports rage click events (multiple rapid clicks on the same element)
- Helps identify user frustration signals and usability issues
- Disabled by default - must be explicitly enabled in configuration
- Example of how to enable rage click detection:
SplunkRum.init({ // ... other config options instrumentations: { frustrationSignals: { rageClick: { count: 3, // Number of clicks to trigger rage click (default: 3) timeframeSeconds: 1, // Timeframe in seconds (default: 1) ignoreSelectors: ['#no-rage'], // CSS selectors to ignore (optional) }, }, }, })
- Set
rageClick: trueorrageClick: {}to use default settings (3 clicks within 1 second)
- Added Platform Attributes Including OS Version #1482
- Spans now include detailed platform information such as operating system name and version
- Uses the User Agent Client Hints API to obtain enhanced platform data
- Automatically falls back to basic platform information if the API is not available
- Removed FID (First Input Delay) Metric #1448
- Removed FID metric collection as it has been deprecated by Chrome
- FID was previously replaced by INP (Interaction to Next Paint) metric which provides better insights into page responsiveness
- Updated web-vitals dependency to latest version
- Added Rage Click Detection #1484
-
@splunk/otel-web-session-recorder- Fixed Session Replay Sampling #1486
- Session replay now properly respects the configured sampling rate
- Fixed Session Recording on Session Expiration #1488
- Recording now stops correctly when a session expires
- Change span names for session replay lifecycle events #1485
- Updated Session Replay CDN Module #1525
- Updated to the latest version of the session replay CDN script
- Fixed Session Replay Sampling #1486
CDN
Version v1.2.0
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.2.0/background-service.html" integrity="sha384-AggP7sVqXrY0GDAvuN48/FFQQXi88Scvi8I5Xz8RpHHR90ioC4IisE/qJMZhXk2h" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.2.0/splunk-otel-web-session-recorder.js" integrity="sha384-qspEOIMr5BdYlE8DyYwcFxEvWD0QvdELYMtklj8yrW1ss6S/cKA8HprUCQ26bpIp" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.2.0/splunk-otel-web.js" integrity="sha384-5cshQi6oHZ9aKdBpG7xwKig+I8DhfhCOZh1wLc4Rxnp/hvE0jc8mAkuuKTXW1uZT" crossorigin="anonymous"></script>Version v1.2
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.2/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.2/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.2/splunk-otel-web.js" crossorigin="anonymous"></script>Version v1
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>v1.1.1
-
@splunk/otel-web- Fixed service.name attribute handling #1451
- Prevents the default
unknown_servicevalue from being included in exported spans when no explicit service name is configured
- Prevents the default
- Reduced click text capture length #1455
- Decreased maximum captured click text length from 128 to 50 characters
- Updated dependencies
- Updated various dependencies
- Fixed service.name attribute handling #1451
-
@splunk/otel-web-session-recorder- Updated session replay CDN package #1468
- Updated session replay module from v2.5.2 to v2.5.4
- Fixes potential website crashes in Safari in certain scenarios related to WebKit bug (WebKit Bug 301688)
- Updated session replay CDN package #1468
CDN
Version v1.1.1
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.1.1/background-service.html" integrity="sha384-ZVMm1obDFBzKDsJItSw+FB1TZ03kQNR5xWLZDQamYs0gC67EzXizC+idj/pxPlQf" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.1.1/splunk-otel-web-session-recorder.js" integrity="sha384-LtdUmAqXXNFos/8pnOC7rYChz1GH7r3A0j/sONa+k3stxSGewbiSNxKz+UR01a4U" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.1.1/splunk-otel-web.js" integrity="sha384-bNb4toipOKBsL5yJJDhfzMw3oP/nF16ITIljsKDEDkeAQsXkeET9qRTLUHU/l5bV" crossorigin="anonymous"></script>Version v1.1
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.1/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.1/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1.1/splunk-otel-web.js" crossorigin="anonymous"></script>Version v1
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/v1/splunk-otel-web.js" crossorigin="anonymous"></script>Version latest
WARNING: Content behind this URL might be updated when we release a new version.
For this reason we do not provide integrity attribute.
background-service.html:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/background-service.html" crossorigin="anonymous"></script>
splunk-otel-web-session-recorder.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web-session-recorder.js" crossorigin="anonymous"></script>
splunk-otel-web.js:
<script src="https://cdn.signalfx.com/o11y-gdi-rum/latest/splunk-otel-web.js" crossorigin="anonymous"></script>