🎉 Native Google & Apple sign-in is here → read the guide
Introduction
Kotlin Multiplatform · 16 targets

Supabase KMP

A fully typed Kotlin Multiplatform client for Supabase — Auth, Database, Storage, Realtime & Edge Functions from one shared codebase.

What is this?

Supabase is a hosted backend — a database, user accounts, file storage and live updates — that your app talks to over the internet. Supabase KMP is the Kotlin library that does that talking for you.

Instead of hand-writing HTTP requests, parsing JSON and worrying about expired logins, you call normal Kotlin functions:

val client = Supabase.create(
    projectUrl = "https://your-project.supabase.co",
    apiKey = "your-anon-key",
)
 
val auth = createAuthClient(client)
val session = auth.signInWithEmail("user@example.com", "secure-password")

Because it’s Kotlin Multiplatform, you write that code once and run it on Android, iPhone, desktop, the web, and more — the same logic, every platform.

New to Supabase itself? Create a free project at supabase.com, then copy your Project URL and anon key from Project Settings → API. That’s everything you need to start.

Why Supabase KMP

  • Typed end to end — a SupabaseResult monad, value-class IDs and a PostgREST filter DSL. No stringly-typed surprises.
  • One codebase, every platform — share auth, data and realtime logic across mobile, desktop and web.
  • Local JWT verificationgetClaims() verifies asymmetric tokens on-device against the JWKS, no server round-trip.
  • Native sign-in, your way — optional Google & Apple modules built on a pluggable NativeAuthProvider; bring your own for anything else.
  • Built for production — configurable retry with exponential backoff, a NETWORK error category for offline UI, and suspend observability hooks for tracing and metrics.
  • Bring-your-own everything — pluggable session storage, HTTP engine and crypto. Nothing heavy is bundled behind your back.

Start here

Explore the features