Skip to content

v3.0.0-alpha01

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Jul 21:50

First 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

  • SignInState API. New rememberXxxSignInState(...) composables (rememberGoogleSignInState, rememberFacebookSignInState, rememberFirebaseGoogleSignInState, rememberFirebaseAppleSignInState, rememberFirebaseGithubSignInState, rememberFirebaseOAuthSignInState, rememberFirebaseFacebookSignInState) return a SignInState with launch() and observable isInProgress. Wire launch() to any button; parameters are read at launch time; double-taps can't start two flows. The 2.x *UiContainer composables still work as deprecated wrappers.
  • Granular Firebase artifacts. kmpauth-firebase is split into kmpauth-firebase-core (backend + Apple/GitHub/OAuth) and kmpauth-firebase-google (Google). kmpauth-firebase remains 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.auth API (AuthProviderBackend, KMPAuthBackend, AuthCredential, KMPAuthUser). Firebase is the default (self-registering); a custom/Supabase backend can plug in via KMPAuthBackend.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-port redirect_uri_mismatch / blank-callback failures.
  • Configurable Facebook login tracking. New loginTracking parameter (default Limited) 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 = Limited returns an OIDC JWT instead of a Graph-API access token — pass FacebookLoginTracking.Enabled if your backend needs a Graph-API access token.
  • Removed internal DI types (KMPKoinComponent, LibDependencyInitializer).
  • GoogleAuthCredentials gained a redirectUri parameter (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