Reaching 93% Kotlin: replacing 4 languages with Compose Multiplatform at Sony
scarrilhoTechLead | Sony- Satoshi FujitaSony
In 2023, the Auto Play codebase was 53% Kotlin, 17% TypeScript, 15% ObjC, and 13% Swift. 4 languages, 3 IDEs. Today: 93.7% Kotlin. Auto Play processes high-frequency sensor data over BLE to estimate user behavior in real time. The UI was React Native—reasonable initially, but turned into tech debt. When integrating with Sony | Sound Connect, we bet on CMP. iOS was still in the Alpha stage. Three keys to the successful migration: 1. "Experiments, not adoption"—Time-boxed spikes with fallbacks, presenting working software every two weeks instead of slides. A pattern that led two Alpha bets to approval. 2. Asymmetric bets—Designed so the worst-case scenario would be the industry standard (JC + SwiftUI). A deadline was set after an iOS accessibility failure in March 2024. CMP 1.6.10 Beta fixed it before the deadline. The bet succeeded. 3. SharedKernel boundary—0.2% of the code serves as the boundary connecting CMP to 7 years of J2ObjC. No rewrite needed. The Auto Play team stayed with CMP while the SCA team remained native. Takeaways include Alpha bet approval patterns, migration sequences, and the SharedKernel model for legacy integration. Result: 93.7% Kotlin. 6 engineers. iF Design Award 2026 winner. (Translated by the DroidKaigi Committee)
Intended audience
For those who fit the following: • Engineers considering Compose Multiplatform or KMP migration in Android apps • Teams holding a multi-language stack like React Native or J2ObjC • Those who need to explain and justify adopting experimental tech to stakeholders • Those looking for patterns to incrementally migrate legacy code Targeted at intermediate to advanced Android engineers and tech leads. CMP experience not required.