Skip to content
RECDiagnosticSDK
02 / SCREEN MAP

Traffic, in context.

Every UIViewController visit that starts requests becomes its own chapter. Navigation chronology stays intact, even when a screen is visited twice.
  1. 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.
  2. 2A request takes the current screenWhen resume() is called, the request is attached right away to the screen on display.
  3. 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.
  1. HomeViewControllerviewWillAppear→ current screen10:32:04
    GET/v1/accounts200124ms
    GET/v1/me20086ms
    GET/v1/notifications?unread=true200141ms
    HomeViewController3 requests · chapter opened at 10:32:04
  2. SettingsViewControllerviewWillAppear→ current screen10:32:06

    No request on this visit: it is not in the map.

  3. TransferViewControllerviewWillAppear→ current screen10:32:08
    GET/v1/beneficiaries20097ms
    POST/v1/transfers422302ms
    TransferViewController2 requests · chapter opened at 10:32:08
  4. HomeViewControllerviewWillAppear→ current screen10:32:15
    GET/v1/accounts200118ms
    HomeViewController · 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
  1. Screen visitscreens[0]

    HomeViewControllerenteredAt 10:32:04

    RequestsnetworkInteractions

    GET/v1/accounts200124ms
    GET/v1/me20086ms
    GET/v1/notifications?unread=true200141ms
  2. Screen visitscreens[1]

    TransferViewControllerenteredAt 10:32:08

    RequestsnetworkInteractions

    GET/v1/beneficiaries20097ms
    POST/v1/transfers422302ms
  3. Screen visitscreens[2]

    HomeViewControllerenteredAt 10:32:15

    RequestsnetworkInteractions

    GET/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.