Traffic, in context.
- 1The SDK keeps the current screenEach time a view controller runs viewDidLoad or viewWillAppear, the SDK notes its class name. It replaces the previous one.
- 2A request takes the current screenWhen resume() is called, the request is attached right away to the screen on display.
- 3A visit becomes a chapterThe first request of a visit opens its chapter, the next ones join it. Back on a screen? That is a new visit, so a new chapter.
- HomeViewControllerviewWillAppear→ current screen10:32:04GET/v1/accounts200124msGET/v1/me20086msGET/v1/notifications?unread=true200141msHomeViewController3 requests · chapter opened at 10:32:04
- SettingsViewControllerviewWillAppear→ current screen10:32:06
No request on this visit: it is not in the map.
- TransferViewControllerviewWillAppear→ current screen10:32:08GET/v1/beneficiaries20097msPOST/v1/transfers422302msTransferViewController2 requests · chapter opened at 10:32:08
- HomeViewControllerviewWillAppear→ current screen10:32:15GET/v1/accounts200118msHomeViewController · second visit1 request · chapter opened at 10:32:15
What is saved
A session, its visits, their requests.
The session file keeps these three levels. Session History, Replay and Session Studio read the map exactly as it was recorded.
Session
- sessionId
- 4f2a9c1e-…
- startedAt
- 10:32:04
- metadata.deviceModel
- iPhone16,1
- metadata.osVersion
- 18.2
- metadata.appVersion
- 3.4.0
Screen visit
screens[0]HomeViewControllerenteredAt 10:32:04
Requests
networkInteractionsGET/v1/accounts200124msGET/v1/me20086msGET/v1/notifications?unread=true200141msScreen visit
screens[1]TransferViewControllerenteredAt 10:32:08
Requests
networkInteractionsGET/v1/beneficiaries20097msPOST/v1/transfers422302msScreen visit
screens[2]HomeViewControllerenteredAt 10:32:15
Requests
networkInteractionsGET/v1/accounts200118ms
What it gives you
Every request, in its context.
Retrace the path
QA and developers see the screens the user went through before the bug, in order.
Replay in navigation order
When the same request was recorded on two visits, Replay serves the first one, in navigation order.
Edit the map in Session Studio
Rename, duplicate, reorder or remove screens, then export a session that Replay can read.
Precision
Where the map can be wrong.
Reliable in most UIKit flows: push, pop, tabs, and requests started by the screen itself. System screens and the SDK’s own screens are ignored.
- Background workA token refresh, analytics or polling request is filed under whatever screen is on display.
- Child view controllersAn embedded or preloaded view controller can become the current screen.
- Closing a sheetThe screen underneath may not run viewWillAppear, so requests stay under the closed sheet.
- SwiftUISwiftUI navigation is not detected. Requests stay under the last UIKit screen.
- Screens without requestsA visit that starts no request is not stored, so it does not appear in the map.
- TimesA chapter’s time is the start of its first request. When the user leaves a screen is not recorded.
- Before the first screenRequests started before any screen is known go to a chapter named Background.