Compatibility
Name Version Implementation Compile SDK 36 compileSdk = q2libs.versions.compileSdk.get() Target SDK 36 targetSdk = q2libs.versions.targetSdk.get() Min SDK 29 minSdk = q2libs.versions.minSdk.get() Java / JVM 21 javaVersion = q2libs.versions.javaVersion Gradle 9.4.1 gradle-wrapper.properties Android Gradle Plugin 9.1.0 id(q2libs.plugins.android.application) Kotlin Gradle Plugin 2.3.20 (built into AGP 9; no explicit plugin alias) KSP 2.3.6 id(q2libs.plugins.ksp) Google Services Plugin 4.4.2 id(q2libs.plugins.google.services) Kotlin Serialization 2.3.20 id(q2libs.plugins.kotlin.serialization)
Migration from 26.6.0 to 26.7.0
Doing a multi-version migration?
If you're jumping more than 2–3 versions at once, walking each version's
migration notes individually can be tedious and error-prone. Consider the
Large Version Migrations guide
instead — it walks you through replacing your local DevApp with a fresh
copy at the target tag and dropping your module back in, which atomically
picks up every scaffolding change at once.
No toolchain bumps in this release. Do the following in every module's
build.gradle (not the app or root build.gradle).
1. Q2MobileSDK is deprecated — depend on sdk_interfaces directly
com.q2:Q2MobileSDK is no longer maintained and no longer publishes. The
Q2Utils helper shipped inside it, so Q2Utils is also gone. Swap the
dependency in every module's build.gradle:
dependencies { - implementation "com.q2:Q2MobileSDK:$q2Version" + implementation "com.q2.msdk:sdk_interfaces:$q2Version" }
2. Update the security channel id import
The nested PushReceiverModule.NotificationChannelId constant moved to a
top-level NotificationChannelIds object.
- import com . q2 . sdk_interfaces . PushReceiverModule + import com . q2 . sdk_interfaces . NotificationChannelIds val channelId = - PushReceiverModule . NotificationChannelId . SECURITY_ALERTS + NotificationChannelIds . SECURITY_ALERTS
The old constant still compiles but emits a deprecation warning pointing at
the new object.
3. Replace Q2Utils call sites
Q2Utils.openUIModule → run the JavaScript yourself through sdkUtils:
sdkUtils . runJavascriptInUUX ( "(function() { return __MOB.modules.open(\" $ moduleId \", \" $ moduleData \", console.log); })();" , callback )
Q2Utils.requestPermission → use AndroidX ActivityResultContracts directly:
private val permissionLauncher = registerForActivityResult ( ActivityResultContracts . RequestPermission ( ) ) { granted -> } fun askForCamera ( ) { permissionLauncher . launch ( Manifest . permission . CAMERA ) }
Version Updates
Library Version Changes
Library 26.6.0 Version 26.7.0 Version Impact Q2 SDK Interfaces com.q2.app:sdk_interfaces @ 0.3.13com.q2.msdk:sdk_interfaces @ q2VersionCoord rename — Publishing group changed; version now tracks q2Versioncom.q2:Q2MobileSDKpublished @ $q2Version (removed) Breaking — Depend on sdk_interfaces directlyAndroidX WebKit 1.8.0 1.14.0 Updated — Required for WebSettingsCompat.setWebAuthenticationSupportAndroidX Credentials (not present) 1.6.0 New catalog entry — Version pinned for upcoming passkey work
PushReceiverModule is now deprecated
PushReceiverModule is marked @Deprecated as of this release and will be
fully removed by end of year . Existing implementations continue to work
and continue to be dispatched during the deprecation window — no immediate
action is required — but no new work should be built on it.
Two new interfaces replace it and cover the same surface with a cleaner
split between push notifications and URI-based deep links:
NotificationModule —
FCM data messages, notification taps, channel creation, push enrollment
events. Result-typed dispatch and optional owner-scoped delivery via a new
q2_module_id FCM data key.
DeepLinkModule —
URI-based deep links (app://… and verified https:// app links) with
path-prefix pattern matching and auth-deferred re-dispatch.
Both pages include a call-for-call migration table for
PushReceiverModule implementations.
Version Catalog
AndroidX Libraries
Library Version Implementation AndroidX Core KTX 1.12.0 implementation(q2libs.androidx.core.ktx) AndroidX AppCompat 1.6.1 implementation(q2libs.androidx.appcompat) AndroidX Activity KTX 1.8.1 implementation(q2libs.androidx.activity.ktx) AndroidX Legacy Support 1.0.0 implementation(q2libs.androidx.legacy.support) AndroidX Constraint Layout 2.1.4 implementation(q2libs.androidx.constraintlayout) AndroidX CardView 1.0.0 implementation(q2libs.androidx.cardview) AndroidX Local Broadcast Manager 1.1.0 implementation(q2libs.androidx.localbroadcastmanager) AndroidX Percent Layout 1.0.0 implementation(q2libs.androidx.percentlayout) AndroidX Biometric 1.1.0 implementation(q2libs.androidx.biometric) AndroidX RecyclerView 1.3.2 implementation(q2libs.androidx.recyclerview) AndroidX WebKit 1.14.0 implementation(q2libs.androidx.webkit) AndroidX Media 1.6.0 implementation(q2libs.androidx.media) AndroidX Browser 1.8.0 implementation(q2libs.androidx.browser) AndroidX Grid Layout 1.0.0 implementation(q2libs.androidx.gridlayout) AndroidX Preference 1.2.1 implementation(q2libs.androidx.preference) AndroidX Security Crypto 1.1.0-beta01 implementation(q2libs.androidx.security.crypto) AndroidX ExifInterface 1.4.2 implementation(q2libs.androidx.exifinterface) AndroidX Credentials (ref only) 1.6.0 (catalog version pin; no library alias yet)
AndroidX Fragment
Library Version Implementation AndroidX Fragment 1.7.0 implementation(q2libs.androidx.fragment) AndroidX Fragment KTX 1.7.0 implementation(q2libs.androidx.fragment.ktx)
AndroidX Navigation
Library Version Implementation AndroidX Navigation Fragment KTX 2.7.4 implementation(q2libs.androidx.navigation.fragment.ktx) AndroidX Navigation UI KTX 2.7.4 implementation(q2libs.androidx.navigation.ui.ktx) AndroidX Navigation Compose 2.8.9 implementation(q2libs.androidx.navigation.compose)
AndroidX Lifecycle
Library Version Implementation AndroidX Lifecycle Runtime KTX 2.7.0 implementation(q2libs.androidx.lifecycle.runtime.ktx) AndroidX Lifecycle ViewModel KTX 2.7.0 implementation(q2libs.androidx.lifecycle.viewmodel.ktx) AndroidX Lifecycle Process 2.7.0 implementation(q2libs.androidx.lifecycle.process) AndroidX Lifecycle Compiler 2.7.0 ksp(q2libs.androidx.lifecycle.compiler) AndroidX Lifecycle Extensions 2.2.0 (Deprecated) implementation(q2libs.androidx.lifecycle.extensions) AndroidX Lifecycle ViewModel Compose 2.7.0 implementation(q2libs.androidx.lifecycle.viewmodel.compose)
AndroidX Room
Library Version Implementation Room Runtime 2.8.4 implementation(q2libs.androidx.room.runtime) Room Compiler 2.8.4 ksp(q2libs.androidx.room.compiler) Room KTX 2.8.4 implementation(q2libs.androidx.room.ktx)
AndroidX CameraX
Library Version Implementation CameraX Camera2 1.5.0 implementation(q2libs.androidx.camera.camera2) CameraX Lifecycle 1.5.0 implementation(q2libs.androidx.camera.lifecycle) Camera View 1.5.0 implementation(q2libs.androidx.camera.view)
AndroidX Compose
Library Version Implementation Compose BOM 2025.12.01 implementation(platform(q2libs.androidx.compose.bom)) Compose Foundation - implementation(q2libs.androidx.compose.foundation) Compose UI - implementation(q2libs.androidx.compose.ui) Compose UI Graphics - implementation(q2libs.androix.compose.ui.graphics) Compose UI Tooling - implementation(q2libs.androix.compose.ui.tooling) Compose UI Tooling Preview - implementation(q2libs.androix.compose.ui.tooling.preview) Compose UI Test Manifest - implementation(q2libs.androix.compose.ui.test.manifest) Compose UI Test JUnit4 - implementation(q2libs.androix.compose.ui.test.junit4) Compose Runtime LiveData - implementation(q2libs.androidx.compose.runtime.livedata) Material Icons Core - implementation(q2libs.material.icons.core) Material3 - implementation(q2libs.material3) Material3 Adaptive - implementation(q2libs.androidx.compose.material3.adpative) Activity Compose 1.8.2 implementation(q2libs.activity.compose)
Google Libraries
Library Version Implementation Material 1.10.0 implementation(q2libs.google.material) GSON 2.10.1 implementation(q2libs.google.gson) Play Services Vision 20.1.3 (Deprecated) implementation(q2libs.google.play.services.vision) ZXing Core 3.5.1 implementation(q2libs.google.zxing.core) Age Signals 0.0.1-beta02 implementation(q2libs.google.age.signals)
Firebase
Library Version Implementation Firebase Messaging 23.3.0 implementation(q2libs.google.firebase.messaging) Firebase Messaging KTX 23.3.0 implementation(q2libs.google.firebase.messaging.ktx) Firebase Instance ID 21.1.0 implementation(q2libs.google.firebase.iid) Firebase Core 21.1.1 implementation(q2libs.google.firebase.core) Firebase Crashlytics Build Tools 2.9.9 implementation(q2libs.google.firebase.crashlytics.buildtools)
Kotlin & Jetbrains
Library Version Implementation Kotlinx Coroutines 1.7.3 implementation(q2libs.jetbrains.kotlinx.coroutines) Kotlinx Serialization JSON 1.11.0 implementation(q2libs.kotlinx.serialization) Jetbrains Annotations 20.1.0 implementation(q2libs.jetbrains.annotations)
Networking
Library Version Implementation Retrofit2 2.9.0 implementation(q2libs.retrofit2.retrofit) Retrofit2 Converter GSON 2.9.0 implementation(q2libs.retrofit2.converter.gson) Retrofit2 RxJava Adapter 2.1.0 implementation(q2libs.retrofit2.adapter.rxjava) OkHttp3 4.10.0 implementation(q2libs.okhttp3.okhttp) OkHttp3 Logging Interceptor 4.10.0 implementation(q2libs.okhttp3.logging.interceptor) RxAndroid 1.2.0 implementation(q2libs.reactivex.rxandroid) Volley 1.2.1 implementation(q2libs.volley)
Dependency Injection
Library Version Implementation Dagger 2.59.2 implementation(q2libs.dagger) Dagger Compiler 2.59.2 ksp(q2libs.dagger.compiler) Hilt 2.59.2 implementation(q2libs.hilt) Hilt Compiler 2.59.2 ksp(q2libs.hilt.compiler) Hilt Navigation Compose 1.2.0 implementation(q2libs.androidx.hilt.navigation.compose) Glassfish Annotation 10.0-b28 implementation(q2libs.glassfish.annotation)
Dependency Injection (Koin)
Library Version Implementation Koin Android 3.4.3 implementation(q2libs.koin.android) Koin Core 3.4.3 implementation(q2libs.koin.core) Koin AndroidX Compose 3.5.0 implementation(q2libs.koin.androidx.compose)
Third-Party Libraries
Library Version Implementation EventBus 3.3.1 implementation(q2libs.eventbus) EventBus Processor 3.3.1 ksp(q2libs.eventbus.processor) Commons IO 2.6 implementation(q2libs.commons.io) Picasso 2.8 implementation(q2libs.picasso) Coil 2.7.0 implementation(q2libs.coil) Timber 5.0.1 implementation(q2libs.timber) Apache Commons Imaging 1.0-alpha2 implementation(q2libs.apache.commons.imaging)
Q2 SDK Components
Library Coord Version Implementation Q2 SDK Interfaces com.q2.msdk:sdk_interfacesq2Version implementation project(':sdk_interfaces') Q2 UI Components com.q2:ui-components0.1.1 implementation(q2libs.q2.ui.components) Q2 Routing Service (local project, unpublished) q2Version implementation project(':modules:q2_routing_service')
Plugin Declarations
Plugin ID Implementation Android Application com.android.application id(q2libs.plugins.android.application) Android Library com.android.library id(q2libs.plugins.android.library) KSP com.google.devtools.ksp id(q2libs.plugins.ksp) Compose Compiler org.jetbrains.kotlin.plugin.compose id(q2libs.plugins.compose.compiler) Hilt com.google.dagger.hilt.android id(q2libs.plugins.hilt) Kotlin Parcelize org.jetbrains.kotlin.plugin.parcelize id(q2libs.plugins.kotlin.parcelize) Google Services com.google.gms.google-services id(q2libs.plugins.google.services) Artifactory com.jfrog.artifactory id(q2libs.plugins.artifactory) Kotlin Serialization org.jetbrains.kotlin.plugin.serialization id(q2libs.plugins.kotlin.serialization) Dokka org.jetbrains.dokka id(q2libs.plugins.dokka)
Library Bundles
Bundle Libraries Implementation Dagger dagger, glassfish-annotation implementation(q2libs.bundles.dagger) Retrofit2 retrofit2-retrofit, retrofit2-converter-gson implementation(q2libs.bundles.retrofit2) Koin koin-android, koin-core, koin-androidx-compose implementation(q2libs.bundles.koin)