v3.0.0-alpha01
Pre-releaseFirst 3.0. pre-release. A major modernization: new SignInState API, module regrouping with granular Firebase artifacts, a pluggable auth-backend abstraction, wasmJs everywhere, and an updated toolchain (Kotlin 2.4, Compose Multiplatform 1.11, AGP 9, SPM instead of CocoaPods).
⚠️ Pre-release. APIs are stabilizing and some Facebook flows are not yet device-tested (see Testing note). Not recommended for production yet. Please try it and report issues.
📖 Full CHANGELOG · Migration guide (2.x → 3.0)
✨ Highlights
SignInStateAPI. NewrememberXxxSignInState(...)composables (rememberGoogleSignInState,rememberFacebookSignInState,rememberFirebaseGoogleSignInState,rememberFirebaseAppleSignInState,rememberFirebaseGithubSignInState,rememberFirebaseOAuthSignInState,rememberFirebaseFacebookSignInState) return aSignInStatewithlaunch()and observableisInProgress. Wirelaunch()to any button; parameters are read at launch time; double-taps can't start two flows. The 2.x*UiContainercomposables still work as deprecated wrappers.- Granular Firebase artifacts.
kmpauth-firebaseis split intokmpauth-firebase-core(backend + Apple/GitHub/OAuth) andkmpauth-firebase-google(Google).kmpauth-firebaseremains published as an aggregator, so existing dependencies keep working — depend on the granular artifacts to avoid pulling the Google stack into apps that don't use it. - Pluggable auth backends. New
com.mmk.kmpauth.core.authAPI (AuthProviderBackend,KMPAuthBackend,AuthCredential,KMPAuthUser). Firebase is the default (self-registering); a custom/Supabase backend can plug in viaKMPAuthBackend.register(...)with no UI changes. - wasmJs on every module. wasm-targeting apps can keep all modules in
commonMain(Firebase API resolves as an empty artifact on wasm — present on android/iOS/jvm/js). - Desktop Google Sign-In fixed. The loopback redirect now uses a fixed, configurable URI —
GoogleAuthCredentials(serverId, redirectUri = "http://localhost:8080/callback")— resolving the random-portredirect_uri_mismatch/ blank-callback failures. - Configurable Facebook login tracking. New
loginTrackingparameter (defaultLimited) gives a consistent token type across Android and iOS and drives the matching Firebase credential.
🧰 Toolchain
Kotlin 2.4.0 · Compose Multiplatform 1.11.1 · AGP 9.2 · Gradle 9.4.1 · JVM target 17 · iOS deps via Swift Package Manager (CocoaPods removed) · iosX64 dropped · single-variant Android artifacts · Koin removed (plain constructor injection).
⚠️ Breaking changes
See the migration guide for step-by-step upgrades.
- iOS: CocoaPods → SPM; deployment target 16.0, Xcode 16.4+.
- Desktop/JVM: requires Java 17+.
- Facebook (Android): the new default
loginTracking = Limitedreturns an OIDC JWT instead of a Graph-API access token — passFacebookLoginTracking.Enabledif your backend needs a Graph-API access token. - Removed internal DI types (
KMPKoinComponent,LibDependencyInitializer). GoogleAuthCredentialsgained aredirectUriparameter (source-compatible; JVM ABI change).
✅ Fixed
- Desktop Google Sign-In
redirect_uri_mismatch/ blank callback /id_token=null(#172, #177, #181). - iOS vs Android Facebook token inconsistency (#170).
🐘 Install
implementation("io.github.mirzemehdi:kmpauth-google:3.0.0-alpha01")
implementation("io.github.mirzemehdi:kmpauth-firebase-core:3.0.0-alpha01")
implementation("io.github.mirzemehdi:kmpauth-firebase-google:3.0.0-alpha01")
implementation("io.github.mirzemehdi:kmpauth-firebase-facebook:3.0.0-alpha01")
implementation("io.github.mirzemehdi:kmpauth-facebook:3.0.0-alpha01")
implementation("io.github.mirzemehdi:kmpauth-uihelper:3.0.0-alpha01")
// or the backward-compat aggregator:
implementation("io.github.mirzemehdi:kmpauth-firebase:3.0.0-alpha01")🧪 Testing note
Facebook Limited/Enabled runtime flows (notably Android Limited Login and iOS Enabled) are not yet device-tested — please verify on real devices and report back before a stable 3.0.0.
Full changelog: https://github.com/mirzemehdi/KMPAuth/blob/rel_3.0.0/CHANGELOG.md