Mobile RUM - iOS SDK

The Mobile RUM SDK provides a customizable suite of tools to analyze and optimize the performance of iOS applications. Isolate ANR and network changes, quickly detect application crashes, identify slow or frozen frames and more.

To see an example of how to deploy the Mobile RUM iOS SDK, navigate to our GitHub repository here.


iOS version 13, macOS version 10_15, and tvOS version 13 or above. Check your iOS SDK version with the following command:

Install & Instrument Your iOS Application

Step 1: Install Swift Package

Add the following line in Package.swift in dependencies

Step 2: Initialize Middleware iOS SDK

Custom Configurations


Create Custom logs using the Middleware API

Errors to Traces

Create Custom logs using the Middleware API


Create Custom exceptions using the Middleware API

Set Your Screen Name

Set Global Attributes

WebView Instrumentation

Use WebView to run native iOS apps

Session Recording

The maximum session recording duration is four hours. If users are inactive for more than 15 minutes at a time, session recordings will be stopped. If users exceed more than four hours in a single session or become active again after the 15-minute inactivity timeout, a new session will be automatically created.

Session recording is enabled by default. Disable this feature by passing .disableRecording() in the following function:


Blur sensitive information in session recordings by embedding the following method:

User passwords are automatically masked by default. Other sensitive information like credit card data and API keys must be masked manually.

Instrumentation Attributes

The following methods can be used for instrumenting & configuring your application.

.rumAccessToken(String)Sets RUM account access token to authorize client to send telemetry to Middleware
.target(String)Sets target URL to the location you will send telemetry data to(e.g. Middleware)
.serviceName(String)Sets service name for your application
.deploymentEnvironment(String)Sets environment attribute on spans generated by instrumentation(e.g. PROD & DEV)
.disableCrashReportingInstrumentation()Disable crash reporting (which is enabled by default)
.disableNetworkMonitoring()Disable HTTP Instrumentation (which is enabled by default)
.disableSlowRenderingDetection()Disable slow/frozen frame renders (which is enabled by default)
.slowFrameDetectionThresholdMs(Double)Sets default polling for slow render detection. Default value is 16.7 milliseconds
.frozenFrameDetectionThresholdMs(Double)Sets default polling for frozen render detection. Default value is 700 milliseconds

Need assistance or want to learn more about Middleware? Contact our support team in Slack.