
I Know a Handyman
Compile errors resolved
Migration timeline
Fully migrated to shared UI
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
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.


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.
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.

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.

What Keeps
the Project Running


Other Projects We’ve
Worked On
Tell us about your project
You’re one step away from getting the right developers.
.png)



