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.
releasedmeans the policy sends the records;heldmeans they stay in the on-device store (on-device capture). - 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.
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.
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.
Run it yourself
- iOS:
scripts/overhead.shanddocs/performance.mdin apsio-apple-sdk. - Android:
scripts/overhead.shanddocs/performance.mdin apsio-android-sdk. - React Native:
scripts/overhead.shin apsio-react-native-sdk.