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-NSExceptionhandler that flushes a fatal event before the process dies. Frames come fromcallStackSymbols. - lookout-kotlin (Gradle) —
Lookout.start(dsn:),capture(throwable), and aThread.UncaughtExceptionHandlerthat chains the previous one. Rich frames from theThrowable— 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.