> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apsio.io/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK performance

> What the iOS, Android and React Native SDKs cost an app, measured with a method you can run yourself.

These are measurements, not limits. Each SDK repository has the script that produced them and
the method in full; run it on your own device to see your numbers.

## What is measured

* **Start**: the cold start of a one-screen app with and without the SDK, to its first frame,
  and the time of the SDK's own start call.
* **Per record**: the time a log, a span or a screen view takes on the thread that records it,
  and the CPU the SDK's own threads spend on 1,000 records until they are on disk. `released`
  means the policy sends the records; `held` means they stay in the on-device store
  ([on-device capture](/concepts/on-device)).
* **Memory and disk**: the app's memory with the SDK minus without it, and the store's disk for
  1,000 logs.
* **Bytes on the wire**: gzip OTLP/JSON per record (the bytes of 200 records minus those of
  100, over 100), and for a reference session: a cold start, 5 screen views, 20 logs, 10
  network requests and the move to the background.
* **Size**: the release app's size with the SDK minus without it, and the libraries as
  published. On Android the app is a one-screen app built with R8 twice, once with no SDK
  dependency at all; an APK is compressed, so its difference is close to what a user
  downloads. The difference includes the SDK's own dependencies (OpenTelemetry for Android
  and its instrumentations, AndroidX WorkManager); an app that already uses them pays less. For
  React Native, the package size is the JS layer and its native bridge; the native SDK under it
  is counted on its own platform.

Every number is a median with its number of runs, unless it is a single measurement such as a
size. Where it was measured is part of the number: `emulator` (Android emulator), `simulator`
(iOS simulator), `host` (the SDK's core on a Mac, for per-record costs), or `physical` (a
phone). Emulator, simulator and host numbers are not a phone's.

## Results

### iOS

Not measured yet.

### Android

SDK 0.1.0 (`0a04d5a`), measured 2026-10-15 on sdk\_gphone64\_arm64, Android 15 (API 35) (emulator), release, R8 (the sample and the benchmark app); debug for disk and wire; emulator API 35 with a software GPU (swiftshader); the SDK at 591a818 (screen views measured after its fix to the per-read memory percentile; the other numbers measured on f498ad0, whose code for them 591a818 does not change). [How it was measured](https://github.com/Apsio/apsio-android-sdk/blob/0a04d5a/docs/performance.md).

| Start | Value | Statistic |
| - | - | - |
| Cold start, with the SDK | 2403.8 ms | median of 15 |
| Cold start, without the SDK | 1345.5 ms | median of 15 |
| Difference | 1058.3 ms | median of 15 |
| The SDK’s start call | 132.9 ms | median of 15 |

| Record | Mode | Caller’s thread, per record | Process CPU, per 1,000 | Statistic |
| - | - | - | - | - |
| Log | released | 22.6 µs | 144.0 ms | median of 5 |
| Log | held | 14.9 µs | 112.0 ms | median of 5 |
| Span | released | 102.6 µs | 205.0 ms | median of 5 |
| Span | held | 83.0 µs | 189.0 ms | median of 5 |
| Screen view | released | 230.6 µs | 475.0 ms | median of 5 |
| Screen view | held | 212.2 µs | 492.0 ms | median of 5 |

| Memory and disk | Value | Statistic |
| - | - | - |
| Memory after start, with minus without the SDK | 4.2 MiB | median of 5 |
| Memory after 1,000 logs, with minus without | 15.4 MiB | median of 5 |
| Disk per 1,000 logs, held | 92.0 KiB | |
| Disk per 1,000 logs, queued | 100.0 KiB | |
| Disk cap (default; the policy changes it) | 20.0 MiB | |

| Bytes on the wire (gzip) | Value | Statistic |
| - | - | - |
| Per log | 40 B | |
| Per span | 38 B | |
| Per screen view | 119 B | |
| Reference session | 4.6 KiB | |

| Size | Value |
| - | - |
| App size, with minus without the SDK | 573.0 KiB |
| io.apsio:apsio-android (AAR) | 623.9 KiB |
| io.apsio:apsio-compose (AAR) | 10.1 KiB |

### React Native

SDK 0.1.0 (`111c4ed`), measured 2026-10-15 on sdk\_gphone64\_arm64, Android 15 (API 35) (emulator), release example app, Hermes; the JS layer only (the native SDK's own costs are on its page); emulator API 35 with a software GPU (swiftshader). [How it was measured](https://github.com/Apsio/apsio-react-native-sdk/blob/111c4ed/scripts/overhead.sh).

| Record | Mode | Caller’s thread, per record | Process CPU, per 1,000 | Statistic |
| - | - | - | - | - |
| Log | released | 31.4 µs | — | median of 5 |
| Span | released | 246.2 µs | — | median of 5 |
| Screen view | released | 5.5 µs | — | median of 5 |

| Size | Value |
| - | - |
| @apsio/react-native (npm tarball) | 71.5 KiB |
| @apsio/react-native (unpacked) | 244.2 KiB |

## Run it yourself

* iOS: `scripts/overhead.sh` and `docs/performance.md` in
  [apsio-apple-sdk](https://github.com/Apsio/apsio-apple-sdk).
* Android: `scripts/overhead.sh` and `docs/performance.md` in
  [apsio-android-sdk](https://github.com/Apsio/apsio-android-sdk).
* React Native: `scripts/overhead.sh` in
  [apsio-react-native-sdk](https://github.com/Apsio/apsio-react-native-sdk).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.