Square Apr 22, 2019

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

Critical Insight

Square is betting on incremental code sharing through Kotlin Multiplatform to give mobile developers the superpower of shipping on two platforms simultaneously.

The article reveals why Square chose Kotlin/Native over other cross-platform frameworks and which specific module they're replacing first.

About This Article

Problem

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.

Solution

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.

Impact

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.

Recent from Square

Related Articles