How trading 19,000 lines of code for 4,000 improved Type Safety, explicit error handling, and dependency injection.
When I first started building Kotlin Multiplatform apps with Supabase, I reached for the official SDK. It worked — it had every feature I needed: Auth, PostgREST, Storage, Realtime, Edge Functions. But every time I used it, something felt off.
The exceptions. The string IDs. The framework-heavy dependency model. The documentation felt like a minefield; every method signature was a gamble of six possible exceptions.
So I asked myself: What would a Supabase SDK look like if we built it the way Kotlin was meant to be used?