Bump Compose deps and align the Android side with the Compose BOM - #5
Merged
Conversation
CMP 1.12.0-beta03 was built against AndroidX Compose 1.12.0-beta02, so `foundation`
and `animation` resolved to beta02 while `ui` and `runtime` came up to rc01 off the
catalog pin. AGENTS.md documented that split as accepted skew. Moving CMP to rc01
closes it: every androidx.compose.{ui,foundation,animation,runtime} artifact now
resolves to 1.12.0-rc01, verified with
./gradlew :ui:dependencies --configuration androidCompileClasspath
`androidx-compose-ui-tooling`, `androidx-compose-ui-tooling-preview` and
`androidx-compose-foundation` are removed because nothing declares them. The
Compose Multiplatform equivalents replaced all three during the KMP migration —
tooling-preview in particular is deliberately the `org.jetbrains.compose.ui`
build, since that is what renders commonMain previews.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Routine version bumps, all verified together on Kotlin 2.4.10: metro 1.4.1 -> 1.4.2 circuit 0.36.0 -> 0.36.1 composeUi 1.12.0-rc01 -> 1.12.0 (AndroidX Compose is stable now) material3 1.5.0-alpha25 -> 1.5.0-alpha26 appcompat 1.7.1 -> 1.8.0 dependency-sorter 0.20.0 -> 0.21.0 Metro is the one worth checking rather than assuming: it is a compiler plugin and so coupled to the Kotlin version, and this branch is on 2.4.10. 1.4.2 works there — `test assembleDebug` passes. **Also corrects a claim in the previous commit that was wrong.** That commit said there was "no version skew on Android — every artifact resolves to 1.12.0-rc01". That was measured on `:ui` alone and does not generalise: `:app` had `foundation` and `animation` at 1.12.0-beta01 at the time, and still does. The skew is not caused by these bumps; it was there and mis-described. The corrected note states the actual per-module, per-group resolution, why it differs (only `ui` and `runtime` are declared directly, so only they follow the catalog pin — and `:ui` declares no AndroidX Compose artifact at all, so Compose Multiplatform's constraints drive it wholesale), and gives both commands to check rather than one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The previous commit corrected a wrong claim about version skew but left the skew
itself in place: only `ui` and `runtime` were declared anywhere, so only they
followed the `composeUi` pin, while `foundation` and `animation` — declared
nowhere — drifted to 1.12.0-beta01 on `:app` behind CMP and material3.
`androidx.compose:compose-bom:2026.08.00` is the BOM whose core artifacts are
1.12.0. Applied to **Android configurations only**: `:app`, plus an
`androidMain.dependencies` block in `:ui` and `:presenter`, the only KMP modules
that pull Compose. Not commonMain — androidx.compose.runtime is genuinely
multiplatform and reaches jvm/native/web through CMP's alias, so a common-scoped
BOM would drag those onto the AndroidX line too, which is the opposite of what is
wanted. These are the repo's first androidMain dependency blocks; an AndroidX BOM
is exactly the "genuinely platform-specific" case AGENTS.md reserves them for.
Verified rather than assumed, on both configurations:
:app debugCompileClasspath ui/foundation/animation/runtime -> 1.12.0
:ui androidCompileClasspath ui/foundation/animation/runtime -> 1.12.0
material3 stays outside the BOM deliberately. The BOM manages it at 1.4.0, older
than the alpha line this project tracks, and that is harmless only because a
direct dependency with an explicit version beats a lower BOM constraint — `:app`
resolves 1.5.0-alpha26 and `:ui` resolves 1.5.0-alpha22 through CMP. Both resolve
*up* from 1.4.0. Worth re-checking after a BOM bump, since a BOM that ever pins
material3 above the alpha would silently win.
A BOM was rejected once before, per the catalog comment this replaces, on the
grounds that it would stop material3 being pinned independently. That turned out
to be avoidable rather than true: the BOM governs the core line and material3
remains the one explicit exception.
One trap recorded in AGENTS.md: `platform(...)` does not exist on a KMP source-set
dependency handler, so `androidMain.dependencies { }` needs
`project.dependencies.platform(...)`. A bare `platform(...)` fails to configure.
Also confirmed unaffected: `:desktop` still resolves Compose Multiplatform
1.12.0-rc01, so the Android alignment did not leak to other targets.
Verified with ktfmtCheck, test and assembleDebug.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack 1/4 — base
main. Three commits.1. Move Compose Multiplatform to 1.12.0-rc01, drop three unused aliases
androidx-compose-ui-tooling,androidx-compose-ui-tooling-previewandandroidx-compose-foundationare removed because nothing declared them — the Compose Multiplatform equivalents replaced all three
during the KMP migration.
2. Bump the rest
Metro is the one worth checking rather than assuming — it is a compiler plugin, so it is coupled
to the Kotlin version, and this branch is on Kotlin 2.4.10 (the Kotlin bump lives in #8, because SKIE
supports 2.4.10 at the latest). 1.4.2 works there.
This commit also corrected a claim the first one got wrong: it had asserted "no version skew on
Android", which was measured on
:uialone and did not generalise.3. Align Android with the Compose BOM
Rather than document the skew, remove it. Only
uiandruntimewere declared anywhere, so onlythey followed the
composeUipin;foundationandanimationwere declared nowhere and drifted to1.12.0-beta01 on
:appbehind CMP and material3. Nothing warns about that.androidx.compose:compose-bom:2026.08.00is the BOM whose core artifacts are 1.12.0. Applied toAndroid configurations only —
:app, plus anandroidMain.dependenciesblock in:uiand:presenter, the only KMP modules that pull Compose. NevercommonMain:androidx.compose.runtimeis genuinely multiplatform and reaches jvm/native/web through CMP's alias, so a common-scoped BOM
would drag those onto the AndroidX line too.
Verified on both configurations rather than one:
uifoundationanimationruntime:app:uimaterial3 stays outside the BOM deliberately. The BOM manages it at 1.4.0, older than the alpha
line this project tracks. That is harmless only because a direct dependency with an explicit version
beats a lower BOM constraint —
:appresolves 1.5.0-alpha26 and:uiresolves 1.5.0-alpha22 throughCMP's material3. Both resolve up from 1.4.0, never back. Worth re-checking after a BOM bump: a BOM
that ever pins material3 above the alpha would silently win.
A BOM had been rejected once before, per the catalog comment this replaces, on the grounds that it
would stop material3 being pinned independently. That turned out to be avoidable rather than true.
One trap now recorded in AGENTS.md:
platform(...)does not exist on a KMP source-set dependencyhandler, so
androidMain.dependencies { }needsproject.dependencies.platform(...). A bareplatform(...)fails to configure.Verification
ktfmtCheck,test,assembleDebugon this branch alone, plus both dependency reports above, plusa check that
:desktopstill resolves Compose Multiplatform 1.12.0-rc01 — the Android alignment didnot leak to other targets.
🤖 Generated with Claude Code