Skip to content

build(deps): bump kotlin to 2.4.10 and coil to 3.5.0#1107

Merged
bmc08gt merged 2 commits into
code/cashfrom
build/bump-kotlin-2.4.10-coil-3.5.0
Jul 20, 2026
Merged

build(deps): bump kotlin to 2.4.10 and coil to 3.5.0#1107
bmc08gt merged 2 commits into
code/cashfrom
build/bump-kotlin-2.4.10-coil-3.5.0

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Combines the two Dependabot bumps that were held back for review — #1087 (kotlin 2.3.212.4.10) and #947 (compose-coil 3.4.03.5.0) — into a single coordinated change, verified end-to-end.

Why combined

Both were flagged during dependency review: Coil #947 as merge-safe but stale, and Kotlin #1087 as blocked on the theory that no KSP 2.4.x release exists. Empirical testing in an isolated worktree disproved that — see below.

Changes

File Change
gradle/libs.versions.toml kotlin 2.3.21 → 2.4.10
gradle/libs.versions.toml compose-coil 3.4.0 → 3.5.0
build-logic/.../AndroidLibraryComposeConventionPlugin.kt stabilityConfigurationFile.set(…)stabilityConfigurationFiles.add(…)
apps/flipcash/app/build.gradle.kts same Compose-compiler API migration

The only real migration: Kotlin 2.4.0 promotes the Compose compiler plugin's singular stabilityConfigurationFile (a RegularFileProperty) to an ERROR-level deprecation in favor of the plural stabilityConfigurationFiles (ListProperty). Coil 3.5.0 needs no source changes.

KSP note

ksp is intentionally left at 2.3.10. Contrary to the pre-merge concern, it compiles cleanly under Kotlin 2.4.10 across every kspDebugKotlin task (Hilt, Room, the custom FeatureFlagProcessor) with no compatibility warning.

Verification

  • ./gradlew :apps:flipcash:app:assembleDebugBUILD SUCCESSFUL, debug APK produced.
  • ✅ APK installs, launches, and renders on-device (emulator). No FATAL / NoClassDefFound / NoSuchMethodError / Coil errors in logcat.
  • ✅ Maestro: launchApp → tap Log in → navigate to the key-entry screen all pass; the screen renders and is interactive.

Follow-ups (not blocking)

  • Run a Compose stability-metrics pass (b/522127447): Compose Compiler 2.4 can reclassify some previously-stable types as Uncertain, silently disabling skipping. Functionally fine; a perf-hygiene check. Update compose_compiler_config.conf if needed.
  • The Maestro flows are independently stale (selector seed_input_screen no longer exists; appId still references the .dev suffix) — unrelated to this PR.

Closes #1087
Closes #947

Combines Dependabot PRs #1087 (kotlin 2.3.21 -> 2.4.10) and #947
(compose-coil 3.4.0 -> 3.5.0), which were held back individually.

Kotlin 2.4.0 promotes the Compose compiler plugin's singular
`stabilityConfigurationFile` (RegularFileProperty) to an ERROR-level
deprecation in favor of the plural `stabilityConfigurationFiles`
(ListProperty). Migrate both usages accordingly.

KSP is left at 2.3.10: it compiles cleanly under Kotlin 2.4.10 across
all kspDebugKotlin tasks (Hilt, Room, FeatureFlagProcessor) with no
compatibility warning. Coil 3.5.0 needs no source changes.

Verified: :apps:flipcash:app:assembleDebug succeeds and the debug APK
launches and renders on-device (Maestro launch + login navigation).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgP1XtH7buYQ5bFPN9uU3v
@github-actions github-actions Bot added type: build Build system, Gradle, dependencies area: build-system Gradle, convention plugins, build-logic labels Jul 20, 2026
Kotlin 2.4's control-flow analysis promotes "Check for instance is
always 'false'" from a warning to a compile error. Two tests assert
that specific sealed-error leaf types are NOT NotifiableError, using an
`is` check the compiler can now prove is statically false (the leaf
types don't implement the interface).

Widen the reference to the sealed parent (which does have a notifiable
variant) so the check is legal while still verifying the runtime
contract. No behavior change.

- SwapErrorTest: Timeout / Terminal are not NotifiableError
- CoinbaseOnRampEventHandlerTest: RegionMismatch / PaymentSheetTimeout
  are not NotifiableError

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgP1XtH7buYQ5bFPN9uU3v
@github-actions github-actions Bot added area: network gRPC, connectivity, API, exchange rates area: onramp Deposit, purchase, Coinbase, fiat on-ramp labels Jul 20, 2026
@bmc08gt
bmc08gt merged commit 7e84f37 into code/cash Jul 20, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the build/bump-kotlin-2.4.10-coil-3.5.0 branch July 20, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: build-system Gradle, convention plugins, build-logic area: network gRPC, connectivity, API, exchange rates area: onramp Deposit, purchase, Coinbase, fiat on-ramp type: build Build system, Gradle, dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant