🎉 Native Google & Apple sign-in is here → read the guide
Platforms

Platforms

A “target” is a specific platform Kotlin can compile to — Android, iPhone, desktop JVM, the browser, and so on. The promise of Kotlin Multiplatform is that you write your Supabase logic once and it runs on all of them.

Supabase KMP publishes for 16 Kotlin Multiplatform targets. The core, auth, database, storage, realtime, and functions modules are available on every target below. The native sign-in modules are the only ones with a narrower reach (see the table).

Supported targets

GroupTargets
AndroidandroidTarget (minSdk 21)
JVMjvm (desktop / server)
iOSiosX64, iosArm64, iosSimulatorArm64
macOSmacosX64, macosArm64
tvOStvosX64, tvosArm64, tvosSimulatorArm64
watchOSwatchosX64, watchosArm64, watchosSimulatorArm64
LinuxlinuxX64
WindowsmingwX64
WebwasmJs

HTTP engines per platform

Networking is Ktor. Each target ships with a sensible default engine via platformEngine(), so you usually pass nothing:

PlatformDefault engine
Android / JVMOkHttp
Apple (iOS/macOS/tvOS/watchOS)Darwin
Linux / WindowsCIO
wasmJsJs (Fetch)
// Override only if you need to:
val client = Supabase.create(url, key, engineFactory = myCustomEngine) { }

Module availability

ModuleTargets
supabase-core, -auth, -database, -storage, -realtime, -functionsall 16
supabase-auth-googleandroid, jvm, ios*, macos*, wasmJs
supabase-auth-appleapple targets (ios*, macos*, tvos*, watchos*)

Native Google sign-in uses Android Credential Manager on Android; on other targets the module exposes the seam for you to feed an ID token. Native Apple sign-in uses AuthenticationServices and runs on Apple targets only.

Crypto backends

Local JWT verification (getClaims) uses whyoleg/cryptography-kotlin, which delegates to each platform’s audited native backend — no rolled-from-scratch crypto:

PlatformBackend
JVM / AndroidJDK (java.security)
AppleCryptoKit / Security framework
Linux / WindowsOpenSSL 3 (prebuilt)
wasmJsWeb Crypto