Skip to main content

Core Features

An overview of what the Pulse iOS SDK captures automatically and what requires opt-in.

Automatic Telemetry

The following is captured from the moment Pulse.shared.initialize(...) is called — no additional code required:

SignalDescription
URLSession requestsEvery HTTP request made via URLSession: method, URL, status code, duration, error
CrashesMach exceptions, signals, Objective-C/C++ crashes — full symbolicated report on next launch
Screen transitionsUIViewController viewDidLoad, viewWillAppear, viewDidDisappear lifecycle
App lifecycleForeground and background events
App startupCold launch duration from SDK init to first screen appearing
Session trackingUnique session ID stamped on every span and log

Opt-In Instrumentation

These require explicit configuration in the instrumentations closure:

InstrumentationWhat it capturesHow to enable
UIKit TapTouch events, tap targets, rage clicksconfig.uiKitTap { $0.enabled(true) }
LocationGeo attributes on all spans (lat, lon, country, city)config.location { $0.enabled(true) }
Session ReplayScreenshot-based session recording with privacy maskingconfig.sessionReplay { $0.enabled(true) }
Interaction TrackingMulti-step user flow timing from server configconfig.interaction { $0.enabled(true) }

Remote-Managed Behavior

Beyond local initialize() settings, Pulse fetches a server-side config from your backend on every launch. This lets you change the following without shipping a new app version:

WhatExamples
Sampling ratesCollect 10% of sessions globally, or 100% for a specific OS version
Feature flagsDisable session replay for a specific app version; enable interaction tracking for a subset of users
Attribute mutationsDrop a PII field across all signals, or inject a computed attribute into every span
Signal routingRoute custom events to a separate collector endpoint
Interaction configUpdate the URL where user-flow definitions are fetched without changing app code

The config is fetched in the background on launch and applied on the next launch. All of this is managed from the Pulse dashboard — no SDK update required.

See SDK Initialization → Remote Config for the full breakdown.


Automatic Instrumentations (detailed guides)