---
title: How the SDK works - iOS (classic)
description: Understand how the iOS SDK is initialized, configured, tracks, and sends data
lastUpdated: 14 April 2026
source_url:
  html: https://docs.contentsquare.com/en/ios/how-the-sdk-works/
  md: https://docs.contentsquare.com/en/ios/how-the-sdk-works/index.md
---

> Documentation index: https://docs.contentsquare.com/llms.txt
> Use this file to discover all available pages before exploring further.

The latest CSQ SDK is here! Learn how to [upgrade your app](https://docs.contentsquare.com/en/csq-sdk-ios/experience-analytics/upgrade-from-cs-sdk/).

The SDK auto-starts at application launch, attaches to the current process, and intercepts the events and gestures needed to capture analytics data.

## Configuration

Once started, our SDK fetches its configuration from our servers. Then, depending on the segmentation size (defined by our team when you sign a contract) and the user consent status, it will start collecting analytics data from system and user events it detects from the runtime.

## Data collection

### Analytics data collection

The SDK monitors the application lifecycle events, the view hierarchy, and generates data from the behavior of the app, the content of the screen and the user interactions. These events are then locally stored, and eventually sent to our servers in batches. We then aggregate that data to create usable visual information into our Web Application, which you use to gather insights.

### Session Replay data collection

See [Session Replay Initialization](https://docs.contentsquare.com/en/ios/session-replay/#data-collection) to learn how Session Replay data collection works.

## Sending data

### Sending analytics data

Analytics data are sent in batches of maximum 50 events. Requests are triggered when network conditions allow for the server to be reached and:

* The current batch of events has reached 50
* Or the app is put in background

Our requests use [`lowPriority` ↗](https://developer.apple.com/documentation/foundation/urlsessiontask/1411509-lowpriority).

### Sending Session Replay Data

See [Session Replay Requests](https://docs.contentsquare.com/en/ios/session-replay/#requests) to learn more about how Session Replay data is sent.

### Sending crash Data

See [Send Crash data](https://docs.contentsquare.com/en/ios/error-analysis/#sending-crash-data) to learn more about how crash data is sent.

## Session definition

A session represents a single period of user interaction in the app. In Contentsquare, the SDK marks the start of a session when an `app start` or `app show` event is first detected.

A session ends when the time spent outside the app reaches **30 minutes**. This is the default value which can be changed upon request.

If the app is put in the background or killed (intentionally by the user or by the OS) and the user comes back within the next 30 minutes, subsequent events are considered part of the same session.
