Skip to content

fix: revert androidx-lifecycle 2.10.0 — it broke the iOS demo build - #89

Merged
vietnguyentuan2019 merged 1 commit into
mainfrom
fix/revert-lifecycle-bump-broke-ios
Sep 2, 2026
Merged

fix: revert androidx-lifecycle 2.10.0 — it broke the iOS demo build#89
vietnguyentuan2019 merged 1 commit into
mainfrom
fix/revert-lifecycle-bump-broke-ios

Conversation

@vietnguyentuan2019

Copy link
Copy Markdown
Contributor

What happened

I merged #55 (androidx-lifecycle 2.8.4 → 2.10.0) on the basis that its only red checks matched two known-benign patterns. That was wrong: the bump breaks :composeApp:compileKotlinIosSimulatorArm64 on main right now.

w: KLIB resolver: Skipping '…/lifecycle-viewmodel-compose-uikitSimArm64Main-2.10.0.klib'
   having incompatible ABI version '2.2.0'. The library was produced by '2.2.20' compiler.
e: KLIB resolver: Could not find '…lifecycle-viewmodel-compose-uikitSimArm64Main-2.10.0.klib'
> Task :composeApp:compileKotlinIosSimulatorArm64 FAILED

This is the same klib-ABI failure that got kotlinx-coroutines 1.11.0 (#53) and Koin 4.2.1 (#54) closed unmerged. androidx-lifecycle 2.10.0 ships Kotlin/Native klibs built with Kotlin 2.2.20; this project is pinned to 2.1.21.

Verified by checking out main at fcc6faa with no other changes and compiling — it fails there too, so this is not an artifact of any in-flight work.

Why CI didn't catch it

Nothing in CI compiles the demo app for a Kotlin/Native target:

  • :composeApp:assembleDebug — Android only.
  • :kmpworker:linkReleaseFrameworkIosSimulatorArm64 — the library, not composeApp.
  • The iOS tests jobs run :kmpworker:iosSimulatorArm64Test / :kmpworker-http:….

So every job on #55 was legitimately green while the iOS demo build was broken. Same shape as #88 (nothing ran testReleaseUnitTest): a target that exists but is never exercised.

Fix

  1. Revert androidx-lifecycle to 2.8.4. Verified :composeApp:compileKotlinIosSimulatorArm64 passes again.
  2. Add :composeApp:compileKotlinIosSimulatorArm64 to the demo-builds job so this class of breakage can't pass CI again.
  3. Extend the dependabot ignore list to every dependency that publishes klibs (coroutines, jetbrains-androidx lifecycle, compose, koin) — a minor bump of any of them carries the building compiler's ABI stamp, so they must move with the Kotlin toolchain rather than on their own schedule. This is what would have stopped build(deps): bump the coroutines group across 1 directory with 3 updates #53/chore(deps): bump koin from 4.0.0 to 4.2.1 #54/chore(deps): bump androidx-lifecycle from 2.8.4 to 2.10.0 #55 from ever being opened.

androidx-lifecycle 2.10.0 publishes Kotlin/Native klibs built with Kotlin 2.2.20;
this project is pinned to 2.1.21, so :composeApp:compileKotlinIosSimulatorArm64 fails
with 'KLIB resolver: … incompatible ABI version 2.2.0'. Exactly the failure that got
kotlinx-coroutines 1.11.0 (#53) and Koin 4.2.1 (#54) closed unmerged — #55 was merged
because its CI was green, which it should not have been.

Why CI missed it: no job compiles the demo app for a Kotlin/Native target.
':composeApp:assembleDebug' is Android-only and
':kmpworker:linkReleaseFrameworkIosSimulatorArm64' covers the library, not composeApp.
Adds ':composeApp:compileKotlinIosSimulatorArm64' to the demo-builds job so the gap
cannot swallow this class of breakage again.

Also extends the dependabot ignore list to every dependency that ships klibs
(coroutines, jetbrains-androidx lifecycle, compose, koin): a minor bump of any of them
carries the compiler's ABI stamp and so must move with the Kotlin toolchain, manually.
@vietnguyentuan2019
vietnguyentuan2019 merged commit 714a683 into main Sep 2, 2026
12 of 14 checks passed
@vietnguyentuan2019
vietnguyentuan2019 deleted the fix/revert-lifecycle-bump-broke-ios branch September 2, 2026 01:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant