Skip to content

PHO-91/#184: Build against Compose Multiplatform 1.10.1 and lifecycle 2.9.6 - #185

Merged
wow-miley merged 1 commit into
mainfrom
miley/pho-91-build-against-compose-multiplatform-1101-phosphor-lumos
Oct 20, 2026
Merged

wow-miley merged 1 commit into
mainfrom
miley/pho-91-build-against-compose-multiplatform-1101-phosphor-lumos

Conversation

@wow-miley

ghost commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Closes #184

What was wrong

Phosphor built against Compose Multiplatform 1.7.0. In the Native klib of phosphor-lumos-surface 0.9.0, the compose compiler read androidx_compose_runtime_ProvidedValue$stableprop directly, for CompositionLocalProvider(LocalLumosSurfaceState provides state). Compose 1.10 makes that property private and exposes $stableprop_getter in its place. So Socket's iOS app, which links Compose 1.10.1, threw IrLinkageError the first time a LumosSurface composed.

Change

  • settings.gradle.kts: org.jetbrains.compose goes from 1.7.0 to 1.10.1, the version Socket and ampere-core build against.
  • phosphor-lumos-compose and phosphor-lumos-surface: lifecycle-runtime-compose goes from 2.8.3 to 2.9.6, which org.jetbrains.compose.ui:ui:1.10.1's .module requires. The comments beside it are updated to match.
  • No source changes. The 1.7 → 1.10 bump surfaced no errors or deprecation warnings on JVM or iOS.
  • kotlin-js-store/: I ran kotlinUpgradeYarnLock and kotlinWasmUpgradeYarnLock, and both lockfiles came out unchanged.

Deviations from the ticket

  • Releasing (0.10.0, or a 0.9.1 from v0.9.0) is left to Miley, as the ticket says.

Verification

Local:

  • :phosphor-lumos-compose:jvmTest, :phosphor-lumos-surface:jvmTest (including the ImageComposeScene tests), :phosphor-lumos-compose:compileKotlinIosSimulatorArm64 and :phosphor-lumos-surface:compileKotlinIosSimulatorArm64 all passed with no warnings.
  • Klib check on the iosSimulatorArm64 output. The ticket's grep for direct $stableprop reads prints nothing for either module. The surface klib now carries androidx_compose_runtime_ProvidedValue$stableprop_getter instead.
  • Lockfiles regenerated with no diff.

Left to CI:

  • js and wasmJs compiles and tests, the Android compile, Dokka and the iOS tests.
  • I didn't inspect the published .module locally, because the machine's build slot was busy. compose.runtime, compose.ui and compose.foundation resolve to the plugin version, so they should now require 1.10.1.

Still owed by a person: the release, then Socket's SCKT-912 bump and an on-device check of the iOS flights.

Authored by Claude (Opus 5.5), not by the committer.

🤖 Generated with Claude Code

… 2.9.6

phosphor-lumos-surface 0.9.0, built on Compose 1.7.0, reads
ProvidedValue$stableprop directly in its Native klib. Compose 1.10 made that
property private behind a _getter, so Socket's iOS app (Compose 1.10.1) threw
IrLinkageError the first time LumosSurface composed. Building on 1.10.1 makes
the compose compiler go through the getter.

lifecycle-runtime-compose moves to 2.9.6, the version Compose 1.10.1's ui
module requires. No source changes were needed; the yarn lockfiles regenerate
unchanged.

Authored by Claude (Opus 5.5), not by the committer.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@wow-miley
wow-miley merged commit 8804a67 into main Oct 20, 2026
4 checks passed
@wow-miley
wow-miley deleted the miley/pho-91-build-against-compose-multiplatform-1101-phosphor-lumos branch October 20, 2026 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant