From 2b8dbd6905dae83179efaabeabb5329eecac24e4 Mon Sep 17 00:00:00 2001 From: James Rich Date: Fri, 17 Apr 2026 15:45:05 -0500 Subject: [PATCH] fix(deps): pin androidx-compose runtime-tracing/ui-test to CMP version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The libs.versions.toml entry 'androidx-compose = 1.11.0-rc01' was used by two satellite AndroidX-coords artifacts: androidx-compose-runtime-tracing = androidx.compose.runtime:runtime-tracing androidx-compose-ui-test-manifest = androidx.compose.ui:ui-test-manifest runtime-tracing is wired into every Android target as 'runtimeOnly' from AndroidCompose.kt. At rc01 it transitively requests androidx.compose.runtime:runtime:1.11.0-rc01, which Gradle's 'highest wins' then upgrades the whole runtime artifact to — while AndroidCompose.kt's resolutionStrategy still pins it to compose-multiplatform's version (1.11.0-beta02). Net result in the shipped APK on main: runtime-tracing bytecode: compiled against 1.11.0-rc01 APIs runtime classes at runtime: 1.11.0-beta02 (force-pinned) ui / foundation / animation: 1.11.0-beta02 That ABI skew between runtime-tracing and the runtime it traces is a plausible contributor to the recomposition / animation regressions we've been chasing on internal builds. Fix: both satellite artifacts now use version.ref = 'compose-multiplatform' so they always match the AndroidX runtime that CMP itself ships. Drops the unused 'androidx-compose' version ref. Verified via :app:dependencies that runtime/ui/foundation/animation/runtime-tracing all resolve to 1.11.0-beta02 cleanly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- gradle/libs.versions.toml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 12ab9480c..fe96dc45e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -35,10 +35,11 @@ turbine = "1.2.1" # Compose Multiplatform compose-multiplatform = "1.11.0-beta02" compose-multiplatform-material3 = "1.11.0-alpha06" -# AndroidX Compose test/tracing artifacts share a version track with CMP but are resolved -# independently by Maven. Pinning them to their own ref prevents Renovate from bumping the -# CMP plugin version when a new AndroidX Compose pre-release appears. -androidx-compose = "1.11.0-rc01" +# `androidx-compose-material` (M2) is independent of CMP and pinned separately +# because some third-party libs (maps-compose-widgets, datadog) drag in +# unversioned material transitives. Test/tracing artifacts in the +# androidx.compose.{runtime,ui} groups MUST track CMP — use compose-multiplatform +# as their version ref, not a separate pin. androidx-compose-material = "1.7.8" jetbrains-adaptive = "1.3.0-alpha06" @@ -121,8 +122,8 @@ androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version androidx-work-testing = { module = "androidx.work:work-testing", version = "2.11.2" } # AndroidX Compose (explicit versions — BOM removed; CMP is the sole version authority) -androidx-compose-runtime-tracing = { module = "androidx.compose.runtime:runtime-tracing", version.ref = "androidx-compose" } -androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "androidx-compose" } # Required by Robolectric Compose tests (registers ComponentActivity) +androidx-compose-runtime-tracing = { module = "androidx.compose.runtime:runtime-tracing", version.ref = "compose-multiplatform" } +androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "compose-multiplatform" } # Required by Robolectric Compose tests (registers ComponentActivity) # Compose Multiplatform compose-multiplatform-animation = { module = "org.jetbrains.compose.animation:animation", version.ref = "compose-multiplatform" }