I Know a Handyman

Industry:
Home & Services
Migrating a Production App from Kotlin Multiplatform to Compose Multiplatform
10,000+

Compile errors resolved

2 weeks

Migration timeline

12 screens

Fully migrated to shared UI

1 codebase

Replacing separate Android & iOS UIs

What is {Project Name}?

I Know Handyman is a mobile app that helps you find a handyman with ease. Handymen publish their services, and users publish their needs for repairs. This app will make sure you find the right professionals for any kind of home service you need. After the work is done, you can rate the handyman in the app and make it easier for others to choose the best one.

App average conversion rate is 68.61%, which is around 18% higher than our competitors.

Challenges and Solutions

Compile Error Spiral

Copying the entire existing Android UI into commonMain in a single pass seemed like the fastest path forward. Instead, it immediately produced more than 10,000 compile errors spanning missing imports, deprecated libraries, and Android-only APIs. Progress became hard to measure, since every fixed error tended to surface several new ones elsewhere.

Errors were triaged into three tiers: easy (imports, package names), medium (deprecated or unsupported libraries), and hard (Android-specific code requiring platform separation). Platform-bound logic like permissions, lifecycle handling, and context usage was isolated into expect/actual implementations with dedicated iOS counterparts, restoring a clear sense of forward progress.

Kotlin Multiplatform Developer Image
Aetherius Mobile Development Company Team Image
Native iOS Dependency Integration

With shared business logic and UI stable, integrating native iOS dependencies became the next major blocker. Firebase setup alone took over four hours, and Swift Package Manager, the seemingly modern, natural choice, resolved dependencies cleanly but silently failed to build, with no clear error pointing to a root cause.

The team switched to CocoaPods, using Claude Code to compare configuration approaches and troubleshoot the build. Because Firebase had been mocked earlier in the migration, this integration work could be tackled in isolation, fully focused, rather than debugged alongside everything else.

iOS Knowledge Gap

The team's strength was Android, and the migration surfaced constant iOS-specific questions, platform API equivalents, lifecycle differences, and whether logic belonged in commonMain or an expect/actual split. Answering these historically meant hours in documentation, Stack Overflow, and GitHub issues.

Claude Code was brought in as an on-demand iOS pairing partner. The workflow was to build and validate each feature on Android first, then use that implementation as context to produce and understand the iOS equivalent, asking follow-up questions until the reasoning, not just the code, made sense.

Hire Mobile App Developer

What Partner Said About Our Work

The change users never see but that matters most: our old MOKO ViewModels got replaced with real Jetpack Compose ViewModels. The Aetherius team caught this early, and we had fewer state-related bugs, faster builds, and way easier maintenance going forward.

Katarina Ristić
Founder & COO, Znam Majstora

Project Features List

Feature 1
Feature 1
Feature 1
Feature 1
Feature 1

What Keeps
the Project Running

Icon of three stacked layers resembling documents or sheets, in bright yellow on a black background.
Tech Stack
Kotlin Multiplatform
JetPack Compose
CocoaPods
Swift Package Manager
Simple yellow outline of a cloud on a white background.
APIs
REST
Google AdMob
Yellow shield icon with a checkmark inside on a white background.
Testing
Compose Test
Espresso
Icon of a command line prompt with a right arrow and underscore symbol.
CI/CD & Tooling
GitHub
Productivity
Claude Code
Aleksa Simic CTO at Aetherius Mobile App Development Company ImageAetherius Mobile App Development Company LogoAleksandra Miljkovic Business Developer at Aetherius Image

Tell us about your project

You’re one step away from getting the right developers.

"Aetherius' work achieved the correct functionality, satisfying the client's expectations, and planning to collaborate on a larger project in the future."

Mike Ralph
Mike Ralph
Managing Director, Band of Coders
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Want to discuss it right away?
Let’s jump on a quick call and discuss your idea.
Book a Call