Developing on iOS and Android
Article Summary
Jesse Wilson from Square tackles a problem every mobile team knows too well: building everything twice. His solution? Stop treating iOS and Android as separate worlds.
Square's mobile team was maintaining duplicate sync engines, navigation patterns, and reactive frameworks across platforms. Wilson shares their experiment with cross-platform code sharing using Kotlin Multiplatform—without abandoning native development.
Key Takeaways
- iOS and Android have converged in UI, devices, and languages (Swift/Kotlin)
- Square engineers now cross-review each other's platform code
- Testing Kotlin/Native with SQLDelight to share persistence logic incrementally
- Multiplatform Kotlin compiles to native—no VM or performance overhead
- Goal: ship features on both platforms without rebuilding everything
Square is betting on incremental code sharing through Kotlin Multiplatform to give mobile developers the superpower of shipping on two platforms simultaneously.
About This Article
Square's mobile teams had duplicate code spread across iOS and Android. They maintained two sync engines, two navigation patterns, and two reactive event frameworks. This made it harder to move quickly. Some features were tougher to build on iOS, others on Android.
Jesse Wilson's team started doing cross-platform code reviews that focused on business logic and view models. They also experimented with multiplatform Kotlin and SQLDelight. The goal was to gradually replace the old Objective-C persistence code with shared Android logic.
Kotlin/Native compiles with LLVM and has no VM overhead. Square wants to use this to let mobile developers ship code to both platforms at the same time without rewriting features. They're starting by consolidating the persistence layer.