Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from DataDog:master #110

Open
wants to merge 6,180 commits into
base: master
Choose a base branch
from
Open
Changes from 10 commits
Commits
Show all changes
6180 commits
Select commit Hold shift + click to select a range
c5205ce
RUM-6584: Make the publish of `podspecs` rely on "Build Artifacts"
simaoseica-dd Dec 11, 2024
26beae9
Merge pull request #2144 from DataDog/simaoseica/RUM-6584/propagate-a…
simaoseica-dd Dec 12, 2024
c92cc3b
RUM-7316 Expose SR feature flags to objc
maxep Dec 12, 2024
41aa68a
Merge pull request #2145 from DataDog/maxep/RUM-7316/swiftui-ff
dd-mergequeue[bot] Dec 13, 2024
a52fc99
Add backgroundTasksEnabled ObjC API
0xnm Dec 16, 2024
108a87c
Merge pull request #2148 from DataDog/nogorodnikov/add-background-tas…
0xnm Dec 16, 2024
a45c76d
chore: Fix linter configuration for TestUtilities
ncreated Dec 17, 2024
0e7b8fd
chore: Fix linter configuration for SRSnapshotTests
ncreated Dec 17, 2024
171fd68
chore: Fix linter configuration for IntegrationUnitTests
ncreated Dec 17, 2024
97b254a
chore: Fix linter configuration for E2ETests
ncreated Dec 17, 2024
838dda4
Merge branch 'develop' into mariedm/rum-7475-sr-swiftui-update-snapsh…
mariedm Dec 17, 2024
1aef32a
chore: Fix linter configuration for BenchmarkTests
ncreated Dec 17, 2024
832f47d
Merge pull request #2131 from DataDog/mariedm/rum-7475-sr-swiftui-upd…
mariedm Dec 17, 2024
a9282e1
Merge branch 'develop' into ncreated/chore/fix-linter-config
ncreated Dec 17, 2024
a97be1d
Merge pull request #2151 from DataDog/ncreated/chore/fix-linter-config
ncreated Dec 17, 2024
b456899
chore: Upgrade `dd-sdk-swift-testing` to `2.5.3-beta1`
ncreated Dec 17, 2024
1ceb249
RUM-7309 Create Reflector container
maxep Dec 4, 2024
fc699ef
RUM-7309 Create async telemetry
maxep Dec 9, 2024
cd606ef
Fix lint
maxep Dec 9, 2024
2c9168a
Update SnapshotTestCase.swift
maxep Dec 9, 2024
8fa53d0
Apply suggestions from code review
maxep Dec 11, 2024
0923604
Fix SwiftUI recording in iOS 18.0
maxep Dec 17, 2024
92f0709
Merge pull request #2137 from DataDog/maxep/RUM-7309/swift-ui-error-e…
dd-mergequeue[bot] Dec 17, 2024
07f9067
Merge branch 'develop' into ncreated/chore/upgrade-swift-testing
ncreated Dec 17, 2024
73b5f5c
Merge pull request #2152 from DataDog/ncreated/chore/upgrade-swift-te…
ncreated Dec 17, 2024
6c9ac6a
RUM-6850: Add more precision to Effective Sample Rate
simaoseica-dd Dec 14, 2024
573a3f2
Merge pull request #2149 from DataDog/simaoseica/RUM-6850/add-more-pr…
simaoseica-dd Dec 17, 2024
c0994fe
RUM-7723 Remove duplicate objc interface
maxep Dec 16, 2024
9322bfb
Update SessionReplay+objc.swift
maxep Dec 17, 2024
799e154
Remove defaults from objc doc
maxep Dec 17, 2024
3ab5794
Test objc deprecated apis
maxep Dec 17, 2024
c61c67c
Merge pull request #2150 from DataDog/maxep/RUM-7723/fix-sr-objc
dd-mergequeue[bot] Dec 17, 2024
7088539
Merge branch 'develop' into feature/view-loading-times
ncreated Dec 18, 2024
8b2a25a
RUM-7102 Implement ITNV metric for RUM
ncreated Dec 16, 2024
9272e4e
fix: Don't send log spam for PerformanceMetric updates
fuzzybinary Dec 13, 2024
fbb5fd3
Merge pull request #2147 from DataDog/jward/RUM-6138-silence-performa…
fuzzybinary Dec 18, 2024
8c4d06c
RUM-7473 [SR][SwiftUI] Add unit tests
mariedm Dec 10, 2024
3482d52
Remove XCTFail from mocks + rebase
mariedm Dec 11, 2024
48c5456
RUM-7473 - Rename xcassets + add to testTarget
mariedm Dec 17, 2024
924e1d1
RUM-7473 Rebase + improve & refactor tests + create more mocks
mariedm Dec 18, 2024
d57950f
RUM-7107 Update CHANGELOG
ncreated Dec 18, 2024
2d785bf
Merge pull request #2140 from DataDog/mariedm/rum-7473-sr-swiftui-uni…
mariedm Dec 18, 2024
84f168b
RUM-7205 Remove full snapshot fallback
maciejburda Dec 18, 2024
cd187b6
RUM-7205 Update tests
maciejburda Dec 18, 2024
fd28491
RUM-7205 Update CHANGELOG
maciejburda Dec 18, 2024
5a49e0f
Merge pull request #2154 from DataDog/maciey/RUM-7205/double-full-sna…
dd-mergequeue[bot] Dec 18, 2024
3780aec
RUM-7484 Add placeholder for unknown SwiftUI content
maxep Dec 18, 2024
92ef71f
Merge pull request #2155 from DataDog/maxep/RUM-7484/swiftui-placeholder
dd-mergequeue[bot] Dec 18, 2024
ae7e789
Bumped version to 2.22.0
maxep Dec 18, 2024
c1759cf
RUM-7180 SwiftUI Benchmark Scenario
maxep Dec 10, 2024
873aed5
Resize images
maxep Dec 16, 2024
689407c
Update SessionReplaySwiftUIScenario.swift
maxep Dec 17, 2024
08a24fa
Update LICENSE-3rdparty.csv
maxep Dec 18, 2024
81fc212
Update project.pbxproj
maxep Dec 18, 2024
0facefa
Fix lint
maxep Dec 18, 2024
d868115
Update check-license.sh
maxep Dec 18, 2024
790e154
RUM-7107 Cleanup
ncreated Dec 19, 2024
a0bebd8
Merge pull request #2146 from DataDog/maxep/RUM-7180/swiftui-benchmar…
dd-mergequeue[bot] Dec 19, 2024
deb6892
Fix benchmark build
maxep Dec 26, 2024
900f282
Merge pull request #2161 from DataDog/maxep/fix-benchmark-build
dd-mergequeue[bot] Dec 26, 2024
d26e770
RUM-7107 CR feedback
ncreated Dec 30, 2024
bf43041
Merge pull request #2153 from DataDog/feature/RUM-7107/vl-itnv-basics
ncreated Dec 30, 2024
6172e70
RUM-7103 Implement strategy for classifying resources in TTNS
ncreated Dec 20, 2024
8cc7658
RUM-7105 Add public API for customizing TTNS resource predicate
ncreated Dec 20, 2024
f5c6c8e
RUM-7103 Add integration test for custom TTNS predicate
ncreated Dec 20, 2024
2f13c4c
Merge pull request #2160 from DataDog/ncreated/RUM-7103/ttns-time-str…
ncreated Dec 31, 2024
84cea2e
RUM-3029: Stopped view shouldn't send values added to the global attr…
simaoseica-dd Dec 20, 2024
4363cfa
RUM-7823 Implement strategy for classifying actions in ITNV
ncreated Dec 27, 2024
1d57406
RUM-7823 Add public API for customizing ITNV action predicate
ncreated Dec 31, 2024
e49a8df
Merge pull request #2157 from DataDog/release/2.22.0
maciejburda Jan 2, 2025
e268fbe
Merge branch 'develop' into release/2.22.0
maciejburda Jan 2, 2025
239bd8b
Merge pull request #2143 from DataDog/simaoseica/RUM-3029/stopped-vie…
simaoseica-dd Jan 2, 2025
d714eb2
Merge branch 'develop' into release/2.22.0
maciejburda Jan 2, 2025
3654b3d
Merge pull request #2166 from DataDog/release/2.22.0
dd-mergequeue[bot] Jan 2, 2025
f015c86
RUM-7823 CR feedback
ncreated Jan 2, 2025
01612cf
Update DogfoodingConfig path
gonzalezreal Dec 18, 2024
a78383d
Merge pull request #2156 from DataDog/update-dogfood-script
ncreated Jan 3, 2025
545ffd5
Fix CHANGELOG after 2.22.0 release
ncreated Jan 3, 2025
e00dd2c
Move the agent_psr from the root of the span to the metrics map
Reallnas Dec 30, 2024
71a6959
Remove non allowed `_dd` handling at the root of spans in SpanMatcher
Reallnas Dec 30, 2024
91d826e
Merge pull request #2168 from DataDog/ncreated/chore/update-2.22.0-ch…
ncreated Jan 3, 2025
95648a4
Merge pull request #2165 from DataDog/ncreated/RUM-7823/itnv-custom-s…
ncreated Jan 3, 2025
634f364
Merge branch 'develop' into ncreated/fix/move-agent-psr
ncreated Jan 3, 2025
aaaf1b2
Merge pull request #2164 from DataDog/ncreated/fix/move-agent-psr
simaoseica-dd Jan 3, 2025
1815c75
RUM-3029: Fix flaky test while handling a stopped session
simaoseica-dd Jan 2, 2025
d92e5d0
Merge pull request #2167 from DataDog/simaoseica/RUM-3029/stopped-vie…
simaoseica-dd Jan 3, 2025
a90a1c4
RUM-768: Improve telemetry over dropped events due to size limits
simaoseica-dd Dec 30, 2024
eb0c1aa
RUM-768: Rename `MAX_DATA_LENGTH` to `maxTLVDataLength`
simaoseica-dd Jan 2, 2025
4519c78
Merge pull request #2163 from DataDog/simaoseica/RUM-768/improve-tele…
simaoseica-dd Jan 7, 2025
f763e63
RUM-7937 Use deterministic random ids
maxep Jan 8, 2025
a13a516
Merge pull request #2169 from DataDog/maxep/RUM-7937/fix-duplicated-s…
dd-mergequeue[bot] Jan 9, 2025
a0e9caa
Update EffectsModifiersView.swift
maxep Jan 9, 2025
e4a5401
Merge pull request #2171 from DataDog/maxep/fix-swiftui-benchmarks
dd-mergequeue[bot] Jan 10, 2025
3d55742
RUM-7936 [SR] Fix SwiftUI Placeholder with Feature Flag
mariedm Jan 9, 2025
afdb2b4
RUM-7795 Add anonymous user id tracking configuration
maciejburda Jan 10, 2025
931336a
RUM-7936 Replace switch with if else statement + update changelog
mariedm Jan 10, 2025
0f6baa5
RUM-7936 Delete FrameworkUtils
mariedm Jan 10, 2025
90cff07
RUM-7795 Initial implementation
maciejburda Jan 10, 2025
1b0ac46
Merge pull request #2170 from DataDog/mariedm/sr/fix-swiftui-placehol…
dd-mergequeue[bot] Jan 10, 2025
3419e29
RUM-7795 Set anonymous id
maciejburda Jan 10, 2025
9e6c08d
RUM-7795 Add tests
maciejburda Jan 10, 2025
28f1c00
RUM-7795 PR Fixes
maciejburda Jan 10, 2025
d048bfc
Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Jan 10, 2025
b8a6eb0
RUM-7795 Correct test names
maciejburda Jan 10, 2025
d79dcfa
Merge branch 'develop' into feature/view-loading-times
ncreated Jan 14, 2025
074bc4b
RUM-6501 Update api-surface
ncreated Jan 14, 2025
d41d5dd
Merge pull request #2139 from DataDog/feature/view-loading-times
ncreated Jan 14, 2025
62883cc
Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Jan 14, 2025
7ca3267
Update DatadogRUM/Sources/RUMConfiguration.swift
maciejburda Jan 14, 2025
5fc115b
RUM-7795 PR Fixes
maciejburda Jan 14, 2025
62a6214
RUM-7795 PR Fixes
maciejburda Jan 14, 2025
b98ae98
Create session_replay_performance.md
maxep Jan 14, 2025
91c0fea
Update session_replay_performance.md
maxep Jan 14, 2025
3474b3f
Update docs/session_replay_performance.md
maxep Jan 14, 2025
a77bcde
Apply suggestions from code review
maxep Jan 15, 2025
8dee753
RUM-7795 PR Fixes
maciejburda Jan 15, 2025
357e9ae
Merge pull request #2173 from DataDog/maxep/RUM-7808/session-replay-perf
dd-mergequeue[bot] Jan 15, 2025
1e85cce
RUM-7106 rename: ITNV -> INV
ncreated Jan 16, 2025
a14adeb
RUM-7106 rename: TTNS -> TNS
ncreated Jan 16, 2025
7beaf27
RUM-7106 lowercase "to" in TNS and INV
ncreated Jan 16, 2025
ced8b82
RUM-7795 Add integration tests
maciejburda Jan 16, 2025
d79e5cb
Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Jan 16, 2025
dc364ee
RUM-7795 Align docs
maciejburda Jan 16, 2025
c90c2e4
Merge pull request #2174 from DataDog/ncreated/RUM-7106/rename-ttns-a…
ncreated Jan 16, 2025
777da2e
RUM-7795 Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Jan 17, 2025
de5bf59
RUM-7795 PR fixes
maciejburda Jan 24, 2025
3321657
Fix echo box on iTerm
maciejburda Jan 24, 2025
0822e7d
Merge pull request #2181 from DataDog/maciey/chore/fix-echo-box
maciejburda Jan 24, 2025
9395d1b
RUM-7691: Add `addAttributes` and `removeAttributes` APIs
simaoseica-dd Jan 22, 2025
d1fa8ca
RUM-7691: Update CHANGELOG with feature notes
simaoseica-dd Jan 27, 2025
97ba631
RUM-7112 Implement `NoValueReason` in TNS metric
ncreated Jan 21, 2025
0482cbf
RUM-7112 Implement `NoValueReason` in INV metric
ncreated Jan 22, 2025
cc2cad3
RUM-7112 Implement "RUM View Ended"
ncreated Jan 23, 2025
981f663
RUM-7112 Add integration tests for View Ended metric
ncreated Jan 24, 2025
45a8734
RUM-7112 Cleanup
ncreated Jan 24, 2025
0de9e01
RUM-7112 CR feedback
ncreated Jan 28, 2025
7e551bb
Merge pull request #2179 from DataDog/ncreated/RUM-7112/add-view-ende…
ncreated Jan 28, 2025
23d2fcf
Merge pull request #2177 from DataDog/simaoseica/RUM-7691/add-addattr…
simaoseica-dd Jan 28, 2025
d1dc209
RUM-8219 [SR] Fix overrides memory leak
mariedm Jan 29, 2025
f52e2bd
Bumped version to 2.22.1
mariedm Jan 29, 2025
d0175e0
RUM-8219 - Apply CR changes by removing view instance from overrides
mariedm Jan 30, 2025
0e33fbf
Merge pull request #2182 from DataDog/hotfix/2.22.1
dd-mergequeue[bot] Jan 30, 2025
339f619
Merge branch 'develop' into hotfix/2.22.1
mariedm Jan 30, 2025
36ea870
RUM-8219 - Fix flaky test
mariedm Jan 30, 2025
9356e3d
RUM-8219 Fix changelog
mariedm Jan 31, 2025
1608b58
RUM-7795 Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Jan 31, 2025
b9701a2
Merge pull request #2183 from DataDog/hotfix/2.22.1
mariedm Jan 31, 2025
3787a11
Bumped version to 2.23.0
maxep Feb 5, 2025
2f97fe6
Update CHANGELOG.md
maxep Feb 5, 2025
9311393
Merge pull request #2184 from DataDog/release/2.23.0
dd-mergequeue[bot] Feb 5, 2025
983527e
Merge pull request #2185 from DataDog/release/2.23.0
dd-mergequeue[bot] Feb 6, 2025
9b42bfb
RUM-8371 chore: Make `LaunchTime` a non-optional member in `DatadogCo…
ncreated Feb 6, 2025
a10fe04
RUM-5579 Delete legacy E2ETests project
ncreated Feb 7, 2025
0dca1ad
RUM-5579 Remove legacy E2E monitors generator
ncreated Feb 7, 2025
a9bef24
RUM-5579 Remove legacy bitrise.yml
ncreated Feb 7, 2025
4ffc3c2
RUM-5579 Remove legacy E2E tests Make command
ncreated Feb 7, 2025
d43e510
RUM-5579 Remove obsolete Make items
ncreated Feb 7, 2025
64bb40e
RUM-5579 Delete obsolete E2E schemes
ncreated Feb 7, 2025
facf7d4
Merge pull request #2187 from DataDog/ncreated/RUM-5579/cleanup-after…
ncreated Feb 7, 2025
5c7e75f
RUM-7795 Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Feb 7, 2025
b6df357
RUM-7795 Improve assertion
maciejburda Feb 7, 2025
91aff61
Fix OpenTracing doc
maxep Feb 7, 2025
daab2f4
Merge pull request #2188 from DataDog/maxep/fix-opentracing-doc
dd-mergequeue[bot] Feb 10, 2025
c68095c
RUM-7795 PR fixes
maciejburda Feb 10, 2025
f7da48f
RUM-7795 Merge branch 'develop' into maciey/RUM-7795/anonymous-id
maciejburda Feb 10, 2025
2f63329
Merge pull request #2172 from DataDog/maciey/RUM-7795/anonymous-id
dd-mergequeue[bot] Feb 10, 2025
876eb7d
RUM-8371 CR feedback
ncreated Feb 10, 2025
c57f02a
Merge pull request #2186 from DataDog/ncreated/RUM-8371/refine-launch…
ncreated Feb 11, 2025
c993c62
RUM-8504 chore: Warn about gesture conflicts when using `.trackRUMTap…
ncreated Feb 12, 2025
c58eb46
RUM-8042 Escalate all http and network errors to upload worker
maxep Feb 13, 2025
b774191
RUM-8042 Collect Upload Quality Telemetry
maxep Feb 12, 2025
e347024
RUM-8042 Aggregate Upload Quality Metric
maxep Feb 14, 2025
f835c6a
Merge pull request #2192 from DataDog/ncreated/RUM-8504/warn-on-track…
ncreated Feb 17, 2025
a83a457
Apply CR suggestions
maxep Feb 18, 2025
6a1a179
RUM-8637 Update README of Benchmark application
barboraplasovska Feb 18, 2025
438eb70
RUM-8637 Add troubleshooting tip to README
barboraplasovska Feb 18, 2025
936cf8a
Report upload blocker reasons seperatly
maxep Feb 18, 2025
3b8de5b
Apply CR suggestions
barboraplasovska Feb 19, 2025
7dba337
Merge pull request #2194 from DataDog/bplasovska/RUM-8637/update-readme
barboraplasovska Feb 20, 2025
dff6908
RUM-8042 Add pending batches to batch deleted metric
maxep Feb 12, 2025
343b4e8
Update FilesOrchestrator.swift
maxep Feb 13, 2025
737e7f4
Read files count when sending batch deleted telemetry
maxep Feb 18, 2025
8be1369
Merge #2191: RUM-8042 Add pending batches to batch deleted metric
dd-mergequeue[bot] Feb 20, 2025
19a84d1
RUM-8042 Count pending batches for telemetry
maxep Feb 20, 2025
974c9bd
Merge #2196: RUM-8042 Count pending batches for telemetry
dd-mergequeue[bot] Feb 21, 2025
33d1b8b
RUM-8042 Don't report blocker when no batch is present
maxep Feb 21, 2025
41715cc
Merge #2193: RUM-8042 Collect Upload Quality Metric
dd-mergequeue[bot] Feb 21, 2025
ce87c2e
RUM-8774 SessionReplay Image recording uses correct frame calculation…
Valpertui Feb 21, 2025
61a3fa3
Changelog update
Valpertui Feb 24, 2025
e529d2c
chore: Update RUMSchema to latest version
fuzzybinary Feb 24, 2025
3c2c93f
Fix RUMModelGenerator to avoid "description" as a property.
fuzzybinary Feb 25, 2025
82262f0
feat: Support custom internal attributes for Flutter
fuzzybinary Feb 24, 2025
3dc874a
Add image scaleAspectFill snapshots testing to avoid regression
Valpertui Feb 24, 2025
ee1ac88
Fix using non-Int64 integers as values for custom INV and FBC
fuzzybinary Feb 25, 2025
698e8fc
Merge pull request #2202 from DataDog/jward/rum-schema-update
fuzzybinary Feb 25, 2025
363861d
Merge pull request #2200 from DataDog/valpertui/RUM-8774/bug-session-…
Valpertui Feb 25, 2025
f412c39
RUM-7564 Fix Mock VC
maxep Feb 26, 2025
5d7efa9
Apply suggestions from code review
fuzzybinary Feb 26, 2025
2dcb6eb
RUM-1871 reduced view updates keep hasReplay flag
barboraplasovska Feb 26, 2025
4a57270
Switch `withNoOverflow` with `exactly` failable initializer
fuzzybinary Feb 26, 2025
487b211
RUM-1871 Merged two units tests
barboraplasovska Feb 26, 2025
b787f69
RUM-1871 Apply CR suggestions
barboraplasovska Feb 26, 2025
df58f2d
Update DatadogRUM/Sources/RUMMonitor/Scopes/RUMViewScope.swift
fuzzybinary Feb 26, 2025
6e77e89
Merge pull request #2206 from DataDog/maxep/RUM-7564/fix-xcode16-tests
dd-mergequeue[bot] Feb 26, 2025
0153a68
Merge pull request #2205 from DataDog/bplasovska/RUM-1871/hasReplay-u…
barboraplasovska Feb 26, 2025
eb30bba
RUM-7419: Failed to generate App Hang backtrace
simaoseica-dd Feb 26, 2025
f323b5d
Merge pull request #2207 from DataDog/simaoseica/RUM-7419/app-hangs-b…
simaoseica-dd Feb 27, 2025
6b9c3b7
Merge branch 'develop' into jward/RUM-8546-first-build-complete
fuzzybinary Feb 27, 2025
be550d9
Move internal RUM attributes to `CrossPlatformAttributes`
fuzzybinary Feb 27, 2025
b089a3b
RUM-8039 Reset delay after backoff recovery
maxep Feb 24, 2025
cec3857
RUM-8672 Update UserInfo API to make id mandatory.
maciejburda Feb 20, 2025
e3a3d6f
RUM-8672 Update CHANGELOG
maciejburda Feb 20, 2025
60b18f9
RUM-8672 Update obj-c API
maciejburda Feb 20, 2025
a4da69a
Merge pull request #2195 from DataDog/maciey/RUM-8672/mandatory-user-id
dd-mergequeue[bot] Feb 28, 2025
51e8bb5
RUM-8413 Move relfection code to internal module
mariedm Feb 27, 2025
ca37835
RUM-8413 Make other ReflectionMirror properties public
mariedm Feb 28, 2025
9c5c961
RUM-8834 Custom logs scenario and UI
barboraplasovska Feb 28, 2025
c3952b3
RUM-8834 Heavy traffic logs scenario and UI
barboraplasovska Feb 28, 2025
dc62ba5
Merge pull request #2198 from DataDog/maxep/RUM-8039/reset-delay-afte…
dd-mergequeue[bot] Feb 28, 2025
3df99d1
Use nil INVMetricTracking object for disabling instead of a null pred…
fuzzybinary Feb 28, 2025
5cc5fcd
Merge pull request #2211 from DataDog/mariedm/rum-8413-move-reflectio…
dd-mergequeue[bot] Feb 28, 2025
e82973c
RUM-8855 Increase batch processing levels
maxep Mar 3, 2025
27d1024
Merge pull request #2215 from DataDog/maxep/RUM-8855/increase-batch-p…
dd-mergequeue[bot] Mar 4, 2025
2a9401f
RUM-8834 Apply CR suggestions
barboraplasovska Mar 4, 2025
85ccf3c
RUM-8042 Split upload quality per track
maxep Mar 4, 2025
35c57d2
Merge pull request #2197 from DataDog/bplasovska/RUM-8452/enhance-ben…
barboraplasovska Mar 4, 2025
f0d6c4b
Update DatadogRUM/Sources/SDKMetrics/SessionEndedMetric.swift
maxep Mar 4, 2025
b26c8e8
Merge pull request #2216 from DataDog/maxep/RUM-8042/upload-quality-m…
dd-mergequeue[bot] Mar 4, 2025
24dea5e
RUM-8558 Make `DatadogTrace` compile against OTel API 1.13.0
ncreated Feb 13, 2025
1824ac1
RUM-8558 Implement `withActiveSpan()` API
ncreated Feb 13, 2025
70f6e60
RUM-8558 Re-enable OTel active span tests
ncreated Feb 13, 2025
2072421
RUM-8558 Update DatadogTrace to OTel Api 1.13.0
ncreated Mar 4, 2025
da8ab79
RUM-8558 Fix OTel Api deprecation warnings in tests
ncreated Mar 4, 2025
ea7ca33
RUM-8558 Fix lint
ncreated Mar 4, 2025
93486ac
Revert back to using internal attributes over a CustomINVValueMetric.
fuzzybinary Mar 4, 2025
9afad4f
RUM-8558 Upadte OTel Api in BenchmarkTests
ncreated Mar 5, 2025
df35ee3
RUM-8558 Update CHANGELOG.md
ncreated Mar 5, 2025
a4b9f7c
RUM-8558 Patch Package.swift to conditionally adjust `platforms`
ncreated Mar 5, 2025
e4b8428
RUM-8558 Update OTel Api in CP smoke tests
ncreated Mar 5, 2025
03efbbd
Merge pull request #2217 from DataDog/ncreated/RUM-8558/update-otel-t…
ncreated Mar 5, 2025
0185f3b
Merge pull request #2212 from DataDog/jward/RUM-8546-first-build-comp…
fuzzybinary Mar 5, 2025
5371880
Update CHANGELOG.md for 2.24.0
ncreated Mar 6, 2025
65100b0
Bumped version to 2.24.0
ncreated Mar 6, 2025
c94f13f
Merge pull request #2220 from DataDog/release/2.24.0
ncreated Mar 6, 2025
a719c56
RUM-9224 Upgrade to OTelApi 1.13.1
ncreated Mar 31, 2025
4d9dd4a
RUM-9224 Update CHANGELOG.md
ncreated Mar 31, 2025
cfcea97
RUM-9224 Differentiate OTelApi version depending on source
ncreated Mar 31, 2025
a2e635c
Merge pull request #2244 from DataDog/ncreated/RUM-9224/upgrade-to-ot…
ncreated Mar 31, 2025
f44f4d3
Bumped version to 2.24.1
ncreated Mar 31, 2025
fa14428
Merge pull request #2245 from DataDog/hotfix/2.24.1
ncreated Apr 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions Datadog/IntegrationUnitTests/RUM/ViewLoadingMetricsTests.swift
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@

import XCTest
import TestUtilities
import DatadogInternal
@testable import DatadogRUM

class ViewLoadingMetricsTests: XCTestCase {
@@ -479,4 +480,70 @@ class ViewLoadingMetricsTests: XCTestCase {
"The INV value should be computed from the last 'Sign Up' action that leads to 'WelcomeView'."
)
}

func testGivenDisabledINV_thenViewEventHasNoINVValue() throws {
// This duplicates the first INV test, but ensures that INV has no value when it is disabled
let rumTime = DateProviderMock()
rumConfig.dateProvider = rumTime
rumConfig.nextViewActionPredicate = nil
RUM.enable(with: rumConfig, in: core)

let monitor = RUMMonitor.shared(in: core)

monitor.startView(key: "previous", name: "PreviousView")
rumTime.now += 2.seconds
monitor.addAction(type: .tap, name: "Tap in Previous View")

// When (the next view is started within the INV threshold after the action)
let expectedINV: TimeInterval = .mockRandom(
min: 0, max: TimeBasedINVActionPredicate.defaultMaxTimeToNextView * 0.99
)
rumTime.now += expectedINV
monitor.startView(key: "next", name: "NextView")

// Then (INV is tracked for the next view)
let session = try RUMSessionMatcher
.groupMatchersBySessions(try core.waitAndReturnRUMEventMatchers())
.takeSingle()

let nextViewEvent = try XCTUnwrap(session.views.first(where: { $0.name == "NextView" })?.viewEvents.last)
let actualINV = nextViewEvent.view.interactionToNextViewTime
XCTAssertNil(actualINV)
}

func testGivenDisabledINV_whenGivenCustomINVValue_thenViewEventHasCustomINVValue() throws {
// This duplicates the first INV test with a custom INV value added in.
let rumTime = DateProviderMock()
rumConfig.dateProvider = rumTime
rumConfig.nextViewActionPredicate = nil
RUM.enable(with: rumConfig, in: core)

let monitor = RUMMonitor.shared(in: core)

monitor.startView(key: "previous", name: "PreviousView")
rumTime.now += 2.seconds
monitor.addAction(type: .tap, name: "Tap in Previous View")

let nextTime: TimeInterval = .mockRandom(
min: 0, max: 2.5
)
rumTime.now += nextTime
monitor.startView(key: "next", name: "NextView")
monitor._internal?.setInternalViewAttribute(
at: .mockAny(),
key: CrossPlatformAttributes.customINVValue,
value: 180_000
)
// Force a view update
monitor.stopView(key: "next")

// Then (INV is tracked for the next view)
let session = try RUMSessionMatcher
.groupMatchersBySessions(try core.waitAndReturnRUMEventMatchers())
.takeSingle()

let nextViewEvent = try XCTUnwrap(session.views.first(where: { $0.name == "NextView" })?.viewEvents.last)
let actualINV = nextViewEvent.view.interactionToNextViewTime
XCTAssertEqual(180_000, actualINV)
}
}
8 changes: 8 additions & 0 deletions DatadogInternal/Sources/Attributes/Attributes.swift
Original file line number Diff line number Diff line change
@@ -156,6 +156,14 @@ public struct CrossPlatformAttributes {

/// Add "binary images" to the reportted error to assist with symbolication. Used by Unity for IL2CPP symbolicaiton
public static let includeBinaryImages = "_dd.error.include_binary_images"

/// Custom Flutter vital - First Build Complete. The amount of time between a route change (the start of a view) and when the first
/// `build` method is complete. In nanoseconds since view start
public static let flutterFirstBuildComplete: String = "_dd.performance.first_build_complete"

/// Custom value for Interaction To Next view.
/// For Flutter this is the amount of time between an action occurring and the First Build Complete ocurring on the next view.
public static let customINVValue: String = "_dd.view.custom_inv_value"
}

public struct LaunchArguments {
4 changes: 4 additions & 0 deletions DatadogInternal/Sources/Utils/SwiftExtensions.swift
Original file line number Diff line number Diff line change
@@ -44,6 +44,10 @@ extension TimeInterval {
self = Double(milliseconds) / 1_000
}

public init(fromNanoseconds nanoseconds: Int64) {
self = Double(nanoseconds) / 1_000_000_000
}

/// `TimeInterval` represented in milliseconds (capped to `.min` or `.max` respectively to its sign).
public var toMilliseconds: UInt64 {
let milliseconds = self * 1_000
7 changes: 5 additions & 2 deletions DatadogRUM/Sources/Feature/RUMFeature.swift
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ internal final class RUMFeature: DatadogRemoteFeature {
sampleRate: configuration.sessionEndedSampleRate
)
let tnsPredicateType = configuration.networkSettledResourcePredicate.metricPredicateType
let invPredicateType = configuration.nextViewActionPredicate.metricPredicateType
let invPredicateType = configuration.nextViewActionPredicate?.metricPredicateType ?? .disabled

var watchdogTermination: WatchdogTerminationMonitor?
if configuration.trackWatchdogTerminations {
@@ -124,8 +124,11 @@ internal final class RUMFeature: DatadogRemoteFeature {
)
},
interactionToNextViewMetricFactory: {
guard let nextViewActionPredicate = configuration.nextViewActionPredicate else {
return nil
}
return INVMetric(
predicate: configuration.nextViewActionPredicate
predicate: nextViewActionPredicate
)
}
)
6 changes: 4 additions & 2 deletions DatadogRUM/Sources/RUMConfiguration.swift
Original file line number Diff line number Diff line change
@@ -166,9 +166,11 @@ extension RUM {
/// The `NextViewActionPredicate` determines which action in the previous view should be considered the "last interaction" for INV,
/// based on properties such as action type, name, or timing relative to the next view’s start.
///
/// Setting this property to `nil` will disable measuring Interaction to Next View.
///
/// Default: The default predicate, `TimeBasedINVActionPredicate`, classifies actions as the last interaction if they occur within a
/// 3-second threshold before the next view starts. You can customize this time threshold or provide your own predicate.
public var nextViewActionPredicate: NextViewActionPredicate
public var nextViewActionPredicate: NextViewActionPredicate?

/// Custom mapper for RUM view events.
///
@@ -406,7 +408,7 @@ extension RUM.Configuration {
trackWatchdogTerminations: Bool = false,
vitalsUpdateFrequency: VitalsFrequency? = .average,
networkSettledResourcePredicate: NetworkSettledResourcePredicate = TimeBasedTNSResourcePredicate(),
nextViewActionPredicate: NextViewActionPredicate = TimeBasedINVActionPredicate(),
nextViewActionPredicate: NextViewActionPredicate? = TimeBasedINVActionPredicate(),
viewEventMapper: RUM.ViewEventMapper? = nil,
resourceEventMapper: RUM.ResourceEventMapper? = nil,
actionEventMapper: RUM.ActionEventMapper? = nil,
2 changes: 2 additions & 0 deletions DatadogRUM/Sources/RUMMetrics/INVMetric.swift
Original file line number Diff line number Diff line change
@@ -61,6 +61,8 @@ internal enum INVNoValueReason: String, Error {
case previousViewRemoved = "previous_view_removed"
/// Actions were tracked in the previous view, but all were invalid (e.g., started before the view started).
case invalidTrackedActions = "invalid_actions"
/// INV Is Disabled
case disabled = "disabled"
}

internal final class INVMetric: INVMetricTracking {
14 changes: 13 additions & 1 deletion DatadogRUM/Sources/RUMMonitor/RUMCommand.swift
Original file line number Diff line number Diff line change
@@ -529,7 +529,7 @@ internal struct RUMKeepSessionAliveCommand: RUMCommand {
let missedEventType: SessionEndedMetric.MissedEventType? = nil
}

// MARK: - Cross-platform perf metrics
// MARK: - Cross-platform attributes

internal struct RUMUpdatePerformanceMetric: RUMCommand {
let canStartBackgroundView = false
@@ -541,3 +541,15 @@ internal struct RUMUpdatePerformanceMetric: RUMCommand {
var attributes: [AttributeKey: AttributeValue]
let missedEventType: SessionEndedMetric.MissedEventType? = nil
}

internal struct RUMSetInternalViewAttributeCommand: RUMCommand {
let canStartBackgroundView = false
let isUserInteraction = false
var time: Date
var globalAttributes: [AttributeKey: AttributeValue] = [:]
var attributes: [AttributeKey: AttributeValue] = [:]
let missedEventType: SessionEndedMetric.MissedEventType? = nil

let key: AttributeKey
let value: AttributeValue
}
Original file line number Diff line number Diff line change
@@ -61,7 +61,7 @@ internal struct RUMScopeDependencies {
let networkSettledMetricFactory: (Date, String) -> TNSMetricTracking

/// A factory function that creates a `INVMetric` when session starts.
let interactionToNextViewMetricFactory: () -> INVMetricTracking
let interactionToNextViewMetricFactory: () -> INVMetricTracking?

init(
featureScope: FeatureScope,
@@ -83,7 +83,7 @@ internal struct RUMScopeDependencies {
viewEndedMetricFactory: @escaping () -> ViewEndedMetricController,
watchdogTermination: WatchdogTerminationMonitor?,
networkSettledMetricFactory: @escaping (Date, String) -> TNSMetricTracking,
interactionToNextViewMetricFactory: @escaping () -> INVMetricTracking
interactionToNextViewMetricFactory: @escaping () -> INVMetricTracking?
) {
self.featureScope = featureScope
self.rumApplicationID = rumApplicationID
2 changes: 1 addition & 1 deletion DatadogRUM/Sources/RUMMonitor/Scopes/RUMSessionScope.swift
Original file line number Diff line number Diff line change
@@ -78,7 +78,7 @@ internal class RUMSessionScope: RUMScope, RUMContextProvider {
/// The reason why this session has ended or `nil` if it is still active.
private(set) var endReason: EndReason?

private let interactionToNextViewMetric: INVMetricTracking
private let interactionToNextViewMetric: INVMetricTracking?

init(
isInitialSession: Bool,
6 changes: 3 additions & 3 deletions DatadogRUM/Sources/RUMMonitor/Scopes/RUMUserActionScope.swift
Original file line number Diff line number Diff line change
@@ -61,7 +61,7 @@ internal class RUMUserActionScope: RUMScope, RUMContextProvider {
private var activeResourcesCount: Int = 0

/// Interaction-to-Next-View metric for this view.
private let interactionToNextViewMetric: INVMetricTracking
private let interactionToNextViewMetric: INVMetricTracking?

/// Callback called when a `RUMActionEvent` is submitted for storage.
private let onActionEventSent: (RUMActionEvent) -> Void
@@ -76,7 +76,7 @@ internal class RUMUserActionScope: RUMScope, RUMContextProvider {
serverTimeOffset: TimeInterval,
isContinuous: Bool,
instrumentation: InstrumentationType,
interactionToNextViewMetric: INVMetricTracking,
interactionToNextViewMetric: INVMetricTracking?,
onActionEventSent: @escaping (RUMActionEvent) -> Void
) {
self.parent = parent
@@ -205,7 +205,7 @@ internal class RUMUserActionScope: RUMScope, RUMContextProvider {
onActionEventSent(event)

if let activeViewID = self.context.activeViewID {
interactionToNextViewMetric.trackAction(
interactionToNextViewMetric?.trackAction(
startTime: actionStartTime,
endTime: completionTime,
name: name,
40 changes: 35 additions & 5 deletions DatadogRUM/Sources/RUMMonitor/Scopes/RUMViewScope.swift
Original file line number Diff line number Diff line change
@@ -39,6 +39,8 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
let identity: ViewIdentifier
/// View attributes.
private(set) var attributes: [AttributeKey: AttributeValue] = [:]
/// Internal view attributes - used by cross platform frameworks and should not be propagated to events
private(set) var internalAttributes: [AttributeKey: AttributeValue] = [:]
/// View custom timings, keyed by name. The value of timing is given in nanoseconds.
private(set) var customTimings: [String: Int64] = [:]

@@ -109,7 +111,7 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
/// Time-to-Network-Settled metric for this view.
private let networkSettledMetric: TNSMetricTracking
/// Interaction-to-Next-View metric for this view.
private let interactionToNextViewMetric: INVMetricTracking
private var interactionToNextViewMetric: INVMetricTracking?
/// Tracks "RUM View Ended" metric for this view.
private let viewEndedMetric: ViewEndedMetricController

@@ -123,7 +125,7 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
customTimings: [String: Int64],
startTime: Date,
serverTimeOffset: TimeInterval,
interactionToNextViewMetric: INVMetricTracking
interactionToNextViewMetric: INVMetricTracking?
) {
self.parent = parent
self.dependencies = dependencies
@@ -147,7 +149,7 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
)
}
self.networkSettledMetric = dependencies.networkSettledMetricFactory(viewStartTime, viewName)
interactionToNextViewMetric.trackViewStart(at: startTime, name: name, viewID: viewUUID)
interactionToNextViewMetric?.trackViewStart(at: startTime, name: name, viewID: viewUUID)

self.viewEndedMetric = dependencies.viewEndedMetricFactory()

@@ -218,6 +220,12 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
// deactivated. This is achieved by setting `isActiveView` to `false` and sending one more view update.
isActiveView = false
needsViewUpdate = true
case let command as RUMSetInternalViewAttributeCommand where isActiveView:
internalAttributes[command.key] = command.value
// Purposefully don't perform a view update. Most (all?) internal view attributes
// aren't important enough to expect them to be uploaded automatically. They can
// get sent with the next view update.

case let command as RUMStopViewCommand where identity == command.identity:
isActiveView = false
needsViewUpdate = true
@@ -288,7 +296,7 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
let shouldComplete = !isActiveView && hasNoPendingResources

if shouldComplete {
interactionToNextViewMetric.trackViewComplete(viewID: viewUUID)
interactionToNextViewMetric?.trackViewComplete(viewID: viewUUID)
viewEndedMetric.send()
}

@@ -531,7 +539,28 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
let refreshRateInfo = vitalInfoSampler?.refreshRate
let isSlowRendered = refreshRateInfo?.meanValue.map { $0 < Constants.slowRenderingThresholdFPS }
let networkSettledTime = networkSettledMetric.value(with: context.applicationStateHistory)
let interactionToNextViewTime = interactionToNextViewMetric.value(for: viewUUID)
var interactionToNextViewTime = interactionToNextViewMetric?.value(for: viewUUID) ?? .failure(.disabled)
// Only overwrite with a custom value if INV was disabled
if interactionToNextViewTime == .failure(.disabled),
let customInvValue = internalAttributes[CrossPlatformAttributes.customINVValue] as? (any BinaryInteger),
let customInvValue = Int64(exactly: customInvValue) {
interactionToNextViewTime = .success(TimeInterval(fromNanoseconds: customInvValue))
}

// Only add the performance member if we have a value for it
let performance: RUMViewEvent.View.Performance?
if let fbcMetric = internalAttributes[CrossPlatformAttributes.flutterFirstBuildComplete] as? (any BinaryInteger),
let fbcMetric = Int64(exactly: fbcMetric) {
performance = .init(
cls: nil,
fbc: .init(timestamp: fbcMetric),
fcp: nil,
fid: nil,
inp: nil
)
} else {
performance = nil
}

let viewEvent = RUMViewEvent(
dd: .init(
@@ -621,6 +650,7 @@ internal class RUMViewScope: RUMScope, RUMContextProvider {
memoryMax: memoryInfo?.maxValue,
name: viewName,
networkSettledTime: networkSettledTime.value?.toInt64Nanoseconds,
performance: performance,
referrer: nil,
refreshRateAverage: refreshRateInfo?.meanValue,
refreshRateMin: refreshRateInfo?.minValue,
19 changes: 19 additions & 0 deletions DatadogRUM/Sources/RUMMonitorProtocol+Internal.swift
Original file line number Diff line number Diff line change
@@ -93,6 +93,25 @@ public struct DatadogInternalInterface {
monitor.process(command: performanceMetric)
}

/// Add an internal view attribute. Internal view attributes are used by cross platform frameworks to determine the values
/// of certain internal metrics, including Flutter's First Build Complete metric. They are not propagated to other events
/// - Parameters:
/// - time: the time of this command
/// - key: the key for this attribute
/// - value: the value of the attribute
public func setInternalViewAttribute(
at time: Date,
key: AttributeKey,
value: AttributeValue
) {
let attributeCommand = RUMSetInternalViewAttributeCommand(
time: time,
key: key,
value: value
)
monitor.process(command: attributeCommand)
}

/// Adds temporal metrics to given RUM resource.
///
/// It must be called before the resource is stopped.
1 change: 1 addition & 0 deletions DatadogRUM/Sources/SDKMetrics/ViewEndedMetric.swift
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@ internal final class ViewEndedMetric {
internal enum MetricPredicateType: String {
case timeBasedDefault = "time_based_default"
case timeBasedCustom = "time_based_custom"
case disabled = "disabled"
case custom = "custom"
}

Loading
Oops, something went wrong.