Skip to content

Modernize to Kotlin Multiplatform with Compose Multiplatform sample#1

Open
rubixhacker wants to merge 2 commits into
masterfrom
claude/modernize-kotlin-kmp-FA3by
Open

Modernize to Kotlin Multiplatform with Compose Multiplatform sample#1
rubixhacker wants to merge 2 commits into
masterfrom
claude/modernize-kotlin-kmp-FA3by

Conversation

@rubixhacker
Copy link
Copy Markdown
Owner

Rewrite the Android-only contacts library as a KMP library targeting
Android, iOS, JVM Desktop, and WasmJs. Replace AutoValue Java models
with Kotlin data classes, swap RxJava for coroutines/Flow, and migrate
from Groovy build scripts to Kotlin DSL with a version catalog.

Key changes:

  • Kotlin 2.1.10 + KMP project structure (commonMain/androidMain/iosMain/desktopMain/wasmJsMain)
  • Data classes replace AutoValue, KontactRepository interface with suspend + Flow API
  • Android: full ContentProvider implementation, iOS: CNContacts implementation
  • Desktop and WasmJs: stub repositories (no standard contacts API)
  • Compose Multiplatform sample app replacing the old Android-only sample
  • Removed: RxJava modules, column adapters, support libraries, Bintray publishing

https://claude.ai/code/session_01JnLE37sFhikvXkDVRVek7f

claude added 2 commits April 9, 2026 16:41
Rewrite the Android-only contacts library as a KMP library targeting
Android, iOS, JVM Desktop, and WasmJs. Replace AutoValue Java models
with Kotlin data classes, swap RxJava for coroutines/Flow, and migrate
from Groovy build scripts to Kotlin DSL with a version catalog.

Key changes:
- Kotlin 2.1.10 + KMP project structure (commonMain/androidMain/iosMain/desktopMain/wasmJsMain)
- Data classes replace AutoValue, KontactRepository interface with suspend + Flow API
- Android: full ContentProvider implementation, iOS: CNContacts implementation
- Desktop and WasmJs: stub repositories (no standard contacts API)
- Compose Multiplatform sample app replacing the old Android-only sample
- Removed: RxJava modules, column adapters, support libraries, Bintray publishing

https://claude.ai/code/session_01JnLE37sFhikvXkDVRVek7f
…ndling

- Add macosX64/macosArm64 targets to both library and sample modules
- Move CNContacts implementation from iosMain to appleMain (shared by iOS + macOS)
- Rename IosKontactRepository → AppleKontactRepository
- Integrate moko-permissions-compose for cross-platform contacts permission
- Shared permission request/grant flow in App.kt replaces platform-specific handling
- Add macOS sample entry point

https://claude.ai/code/session_01JnLE37sFhikvXkDVRVek7f
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.

2 participants