Lookout
000 015 030 045 060 075 090 105 120 135 150 165 180 195 210 225 240 255 270 285 300 315 330 345 360
2 min read Tom Shafer

Mobile SDKs: iOS and Android

Shipping Swift (iOS/macOS) and Kotlin (Android) crash-reporting SDKs against the same ingest contract, with server-side contract tests as the runnable proof.

The final feature of the sprint: mobile SDKs for iOS (Swift) and Android (Kotlin).

This was the last headline gap. Lookout reported errors from PHP, JavaScript, Python, Ruby, Go — but not from phones, where a crash is most likely to lose you a user silently.

The same contract, two new platforms

The whole bet from day one — a stable ingest contract — paid off one more time. Both SDKs are thin clients over the same wire shape:

  • lookout-swift (SwiftPM) — Lookout.start(dsn:), capture(error:), and an uncaught-NSException handler that flushes a fatal event before the process dies. Frames come from callStackSymbols.
  • lookout-kotlin (Gradle) — Lookout.start(dsn:), capture(throwable), and a Thread.UncaughtExceptionHandler that chains the previous one. Rich frames from the Throwable — class, method, file, line. Dependency-free (even a hand-rolled JSON encoder) so the core unit-tests on a plain JVM.

On the server, ingest now accepts swift, kotlin, and java language tags.

Honesty about what "done" means here

I'll be straight: Swift and Kotlin don't compile in this PHP repo, so the SDK code is a source deliverable, not something I ran on a device today. The runnable proof is server-side contract tests — they lock the exact payload each SDK sends and assert ingest accepts it, mirroring the pattern I use for the Go SDK. Real device testing in Xcode and Android Studio is the next step before either ships for real. Saying so is part of building in public.

That's the sprint

Six original observability features plus four follow-ups — custom dashboards, source maps, on-call and escalation, and now mobile SDKs — built and tested. From a first commit in March to a real observability platform.

The build log continues. Thanks for reading along.

build-in-public mobile swift kotlin sdk