For teams that ship to the App Store and Google Play

Know why your app crashed, froze or felt slow.

Apsio is an SDK for your iOS, Android or React Native app and a console that shows every crash, freeze and slow screen with the steps that led to it. Your coding agent can read the same issues.

14 days, no card. One call to install.

Not ready to install? Explore the sandbox

More than a crash reporter. Runs next to Crashlytics or Sentry.

Sessions / 7f3c…e19aiPhone16,2 · iOS 26.0.1 · 5.2 (812)Example
Example: one user's session, from launch to the crash. Choose an event to find it on the orbit.

The problem

A stack trace is the last line of the story.

It says where the app died. The questions your team asks start earlier.

The crash has no before.

You get a symbol and a line, then rebuild the user's path from guesses.

With Apsio: the whole session, with the screen, the failed request and the hang that came first.

The freeze leaves no report.

Watchdog and out-of-memory kills end the process before anything is written.

With Apsio: kills are found from the system's own records and on the next launch.

The numbers do not agree.

When sessions are sampled, a crash-free rate is an estimate.

With Apsio: every session sends a summary, so release health is exact.

Product

From the crash back to the cause.

Five questions a mobile team asks every week, answered from the same sessions.

Symbolicated to the line.

Crashes arrive grouped by cause, with the file and line, the steps that led there and how many people they hit.

  • Crashes on iOS, Android and native code, grouped by cause.
  • Handled errors and failing endpoints appear next to crashes.
  • Symbols upload from your build: the CLI, Xcode, fastlane, Gradle or a GitHub Action.
crashiss_8kq2new in 5.2 (812)Example
EXC_BAD_ACCESS in CheckoutViewModel.swift:214
KERN_INVALID_ADDRESS · thread 0 (main) · dSYM 4C1A…9B07
Sessions
31
Users
29
Of 5.2 crashes
64 %

Stack · thread 0

  1. objc_msgSendlibobjc.A.dylib
  2. CheckoutViewModel.total.getterCheckoutViewModel.swift:214
  3. CheckoutViewModel.submit()CheckoutViewModel.swift:188
  4. CheckoutView.body.getterCheckoutView.swift:61

Before the crash

  1. −2.21 sCheckout opened
  2. −2.00 sPOST /v1/orders 500
  3. −1.26 shang 1.24 s
  4. 0app.crash
Everything Apsio coversStability · Performance · Sessions · Releases · Data · Workflow

Stability

Crashes, hangs and ANRs, out-of-memory and watchdog kills, handled errors, failing endpoints as issues, and breadcrumbs before every failure.

Performance

App start, time to first and full display, slow and frozen frames, network spans, and MetricKit as histograms. Call-stack profiles come later.

Sessions

The timeline of every session, wireframe replay, journeys and funnels, users by a hash you provide, feature flags, and consent controls.

Releases

Exact crash-free rates, adoption by build, release comparison, regressions that reopen resolved issues, and missing symbols per release.

Data

Logs, metrics and custom events, SQL and dashboards, OTLP export, retention per project, and erasure on request.

Workflow

Alerts to Slack, PagerDuty, Linear or GitHub, session sampling and a kill switch, a public API, a remote MCP server and a CLI.

iOS and iPadOS 15+ · Android 7+ · React Native · Flutter later

See it on your own app14-day trial. No card.

How it works

One call to start. The rest is on by default.

  1. Add the SDK and call start

    Add the SDK with Swift Package Manager, Gradle or npm. Crashes, launches, screens, network and lifecycle are on by default.

  2. Upload symbols from your build

    The apsio CLI finds dSYMs, R8 mappings and NDK symbols and uploads them. Xcode, fastlane, Gradle and a GitHub Action call the same binary.

  3. The phone does the careful work

    The SDK redacts on the device, samples by session and queues on disk. Data waits out a flight, and a crash is sent on the next launch, still tied to its session.

  4. Read it anywhere

    The console, the API, the MCP server and the CLI read the same store, and your data can leave as OTLP to any backend you run.

// AppDelegate.swift
import Apsio

Apsio.start(key: "a-k3f9q2x7")

Apache-2.0 · iOS 15+ · Android 7+ · React Native · API preview, names may change before 1.0

Already on OpenTelemetry? Point your OTLP/HTTP exporter at your app's ingest URL with the Apsio-App-Key header. JSON or protobuf, on the standard paths.

Agents

Your agent reads the same issue you do.

Ask your coding agent what broke in the last release. It gets the file and line, the release and the steps before the crash, and answers from your real sessions.

  • Works with the agent you already use. Claude, ChatGPT, Cursor and Codex, through MCP, a CLI or skills.
  • Same permissions as a person on your team. Read-only by default, and every call is in the audit log.
  • Never metered. Agent, CLI and API calls do not count toward your bill.
Claude Codeapsio CLIExample

Developer

Is 5.2 (812) worse than 5.1 on iOS? If the top crash is new, propose a fix.

Agent

Comparing the two releases first.

$ apsio releases compare "5.1 (790)" "5.2 (812)" --app shop-ios --json --jq '.crash_free_sessions'
{ "5.1 (790)": 99.71, "5.2 (812)": 99.38 }

Down 0.33 points. Pulling the crash groups for the new build.

$ apsio issues --app shop-ios --release "5.2 (812)" --kind crash --json --jq '.[0:3] | map({id, title, sessions, first_seen})'
[
  { "id": "iss_8kq2", "title": "EXC_BAD_ACCESS in CheckoutViewModel.swift:214", "sessions": 31, "first_seen": "5.2 (812)" },
  { "id": "iss_2x9f", "title": "SIGABRT in ImageCache.swift:77", "sessions": 9, "first_seen": "4.8 (701)" },
  { "id": "iss_7hd1", "title": "EXC_BREAKPOINT in FeedStore.swift:142", "sessions": 5, "first_seen": "5.0 (744)" }
]

One is new in this build. Reading its stack and the steps before it.

$ apsio issue iss_8kq2 --json --jq '{stack: .frames[0:3], before: .breadcrumbs}'
{
  "stack": [ "objc_msgSend", "CheckoutViewModel.total.getter · CheckoutViewModel.swift:214", "CheckoutViewModel.submit() · CheckoutViewModel.swift:188" ],
  "before": [ "-2.21 s Checkout opened", "-2.00 s POST /v1/orders 500", "-1.26 s hang 1.24 s", "0 app.crash" ]
}

It crashes after POST /v1/orders returns 500: the view model reads the order total after the request failed. Opening the evidence.

$ apsio issue open iss_8kq2 -r
https://app.apsio.io/acme/shop/issues/iss_8kq2

5.2 (812) is worse. Crash-free sessions fell from 99.71% to 99.38%, and the drop is one new issue, iss_8kq2: 31 sessions, every one after POST /v1/orders returned 500. Session 7f3c…e19a at the link above shows the whole path.

The fix is to return early from submit() when the order request fails, before the total is read. I have it ready as a pull request for your review.

MCP

For agents without a shell: the Claude and ChatGPT apps, and IDE agents behind a sandbox. OAuth sign-in, your team's permissions, and every call in the audit log.

$ claude mcp add --transport http apsio https://mcp.apsio.io

CLI

For agents with a shell, and for CI. Every read command has --json, a built-in --jq filter and -r for raw strings, so an agent reads only what it needs.

$ apsio login

Skills

Plain text that teaches any agent how to triage an Apsio issue with the CLI or the MCP tools: which command first, how to read a stack, when to stop.

$ npx skills add apsio/apsio-skills

The handoff, when you turn it on later

A rule fires, Apsio opens an issue in GitHub or Linear, your agent opens a pull request, and a person reviews it. Off by default. Apsio never pushes code, never merges and never assigns a person.

Your data

Never locked in.

What Apsio collects is yours. It leaves in a standard format, the format itself is public, and the code that collects it is open for you to read.

It leaves as OpenTelemetry

Export everything as OTLP to Grafana, Datadog or your own collector, whenever you want. Your backend can send its spans in through the same door.

The format is public

Where OpenTelemetry does not cover a phone yet, the Apsio Mobile Profile does, published at spec.apsio.io under CC BY 4.0 with conformance vectors.

The SDKs are open source

Apache-2.0 and developed in public, so you can read what runs inside your app and open an issue when something looks wrong.

Privacy

What leaves the phone is decided on the phone.

Built for the App Store and the GDPR.

Redaction on the device

A field you exclude never leaves the phone.

Replay without pixels

A wireframe of the layout. Text is masked by default.

Bodies stay on the phone

Request bodies and query strings are off unless you turn them on.

No tracking identifiers

Never IDFV, IDFA or Android ID. Users are a hash you provide, and no IP is stored.

One region, stated plainly

Stored in US East during early access, with the EU next.

Retention you set

Per project, enforced per row. Erasure on request.

What you can check

  • Open-source SDKsApache-2.0. Read what runs inside your app.
  • Built on proven codeKSCrash on Apple platforms, opentelemetry-android on Android.
  • Overhead, measuredLaunch, CPU and memory measured in CI and published with every release.

The full profile, with what it adds to OpenTelemetry, is at spec.apsio.io.

Pricing

One unit, no surprises.

You pay for captured sessions: a session is one use of your app, from open to close, and a captured one keeps its full detail. Every session is still counted for crash-free rates.

Billing period

Start with a 14-day trial. No card. 25k captured sessions.

Start a trial

Pro

For teams
$79a month
$790a year

50k captured sessions included, then $0.50 per 1k.

50k captured sessions a month included, then $0.50 per 1k.

  • Unlimited members and projects
  • 30 days of session detail
  • 13 months of crashes and release health
  • A spend cap you set at checkout
Start a 14-day trial

No card. The whole product for 14 days.

Solo

One developer
$19a month
$190a year

For one person without a team, by application.

  • 10k captured sessions, hard cap, never an overage
  • 1 member and 1 project
  • 14 days of detail, 90 days of crashes
Apply for Solo

Reviewed by hand. Until approval you stay on the trial.

Enterprise

Large teams
Annual contract

Volume pricing, SSO and SCIM, and detail retention up to 13 months.

Talk to us

A person replies, with a quote.

Every plan includes the console, the API, the MCP server, the CLI and the agent handoff. Annual plans are 12 months for the price of 10, paid up front.

Compare plans
FeatureTrialSoloProEnterprise
Price$0 for 14 days$19 a month$79 a monthAnnual contract
MembersUnlimited1, plus tokens for the CLI, MCP and CIUnlimitedUnlimited, SSO and SCIM
ProjectsUnlimited1, with its iOS and Android appsUnlimitedUnlimited
Captured sessions25k, capped10k, hard cap50k included, then $0.50 per 1k ($0.40 from 5M, $0.30 from 25M)Volume price
DataCrashes, hangs, launches, screens, network, logs and replay, and OTLP export at any time, on every plan
Detail retention14 days14 days30 daysUp to 13 months
Crashes and release health14 days90 days13 monthsCustom
Agent handoffYesYesYesYes
SupportEmailEmailEmailIn the contract

Never metered

Crashes, session summaries, members on team plans, MCP, CLI and API calls, symbol uploads and alerts.

No surprise bills

On Pro, a monthly spend cap is set at checkout, with alerts at 50, 80 and 100 percent. Solo has a hard cap and never an overage.

When the trial ends

Capture stops, so you owe nothing. Your data stays readable for 14 days, and choosing a plan resumes it within a minute.

Price lock

Subscribe before general availability and keep your price for 24 months.

Prices in USD. Customers in Brazil are billed in BRL.

Questions

Before you install.

Can I run it next to Crashlytics or Sentry?

Yes, with one caveat. Two crash reporters in one process both install handlers, and neither can promise to run first, so crash counts will not agree while both are on.

For a fair trial, turn crash capture off in the start options and compare sessions, performance, network and release health, or run the two crash reporters on separate builds.

How big is the SDK, and what does it cost at runtime?

We publish measurements, not promises. Each SDK repository measures launch, CPU and memory overhead in CI, with XCTest metrics on iOS and Macrobenchmark on Android, and the numbers ship with every release.

Crash capture on Apple platforms is KSCrash, and the Android SDK builds on the OpenTelemetry Android agent, so both rest on code with years of production use.

What is a captured session?

A session whose detail Apsio keeps: spans, logs and replay. Whether a session is captured is decided once, at its start, by a deterministic hash of its id, and crashes and errors always pass.

Every session, captured or not, sends a small summary with its outcome, release and device class. Crash-free rates, adoption and session counts come from those summaries, so they are exact, and they are never metered.

What does it cost?

Apsio starts with a trial. It lasts 14 days, with no card, capped at 25k captured sessions. Solo is $19 a month, or $190 a year, for one developer: 10k captured sessions with a hard cap and never an overage, by application. Pro is $79 a month, or $790 a year, for teams: 50k captured sessions included, then $0.50 per 1k, with volume tiers at 5M and 25M.

Crashes, summaries, members on team plans, and MCP, CLI and API calls are never metered. On Pro, a spend cap is set at checkout. Subscribe before general availability and keep your price for 24 months. Sampling and the kill switch are always yours to set.

I already use an OpenTelemetry SDK. Do I need yours?

No. Point any OTLP/HTTP exporter at your app's ingest URL with the Apsio-App-Key header, and your logs, spans and metrics appear in the console and the API.

The Apsio SDKs add what a generic SDK does not do on a phone: crash and exit capture, hangs and ANRs, MetricKit as histograms, a disk queue with batch ids, session sampling and wireframe replay.

Where does my data live, and who can see it?

It is stored in US East during early access, and the EU comes next. Your app talks only to *.apsio.cloud.

Agents see only what your team can see, under the same permissions, and every agent call is in the audit log. Text written by apps and their users is marked as untrusted in tool output.

React Native and Flutter?

React Native ships with the first release, as a thin layer over the two native SDKs. It adds JavaScript errors, fetch and XHR spans, screen names from React Navigation or Expo Router, and Hermes source maps.

Flutter comes after launch. Apsio is for mobile apps only: iOS and iPadOS, Android, React Native and Flutter.

Is it open source?

The SDKs, the CLI, the skills and the conformance vectors are Apache-2.0, developed in public from the start. The profile is CC BY 4.0. The service itself is proprietary.

Can I look around before I install anything?

Yes. The sandbox is a read-only organization with example data from the sample apps on iOS, Android and React Native. It needs no account, and your agent can use it too.

Start

Your first session, this afternoon.

One call to start, 14 days to look around, and a person who replies. Subscribe before general availability and keep your price for 24 months.

  • No card
  • 25k captured sessions
  • Crashes keep flowing past the cap
  • Your data leaves as OTLP whenever you want

Not ready? Explore the sandbox, no sign-up.