What Happened
Booking.com, a global travel platform with over 80% of travelers using mobile during trip planning, has published a detailed account of deploying Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) in production. The company tackled two distinct engineering challenges: unifying its A/B experimentation library across Android and iOS, and using Compose Multiplatform to render its Android design system in a web browser.
Technical Details
Shared Experimentation Library
Booking.com runs over 1,000 simultaneous experiments across its product suite, with hundreds active on mobile. Historically, the internal experimentation library was maintained as two separate codebases: Java/Kotlin for Android and Objective-C for iOS. This led to "logic drift" — subtle inconsistencies in experiment assignment and event tracking that compromised data integrity.
To solve this, Booking.com adopted KMP to centralise the core logic—assignment engine, evaluation rules, and experiment state machine—into a single Kotlin module compiled for both Android and iOS. Platform-specific integration layers (analytics, storage, networking) remain native. The iOS team evaluated KMP rigorously, including a predefined "exit ramp" if performance or developer experience fell short. After validation, the migration succeeded: iOS startup times actually improved post-migration, likely due to Kotlin coroutines outperforming the original Objective-C threading model.
Design System in a Browser
Booking.com also used Compose Multiplatform to host its Android design system in a web browser. This allows designers and developers to preview UI components without needing an Android emulator or device, bridging the gap between design concepts and implementation.
Retail & Luxury Implications
While Booking.com operates in travel, the technical challenges and solutions translate directly to retail and luxury e-commerce. Retailers run hundreds of A/B experiments on product pages, checkout flows, and personalisation algorithms. Inconsistent experiment logic across iOS and Android can lead to flawed product decisions—exactly the problem Booking.com solved.
For luxury brands with mobile-first strategies (e.g., 80% of traffic from mobile), KMP offers a pragmatic path to code sharing without sacrificing native performance. The "exit ramp" strategy—validating KMP against native benchmarks before committing—is a best practice for any risk-averse organisation.
The design system preview use case is especially relevant for luxury retailers with complex UI components (e.g., product configurators, 3D viewers). Compose Multiplatform can enable faster design-to-development cycles without requiring native build environments.
Business Impact
Booking.com reported no meaningful performance impact on Android. On iOS, during the parallel migration phase, startup time increased by ~140ms at the 90th percentile and app size grew by ~2.5MB—both deemed negligible. Post-migration, iOS startup times improved. The primary business benefit is data integrity: consistent experiment assignment across platforms, reducing the risk of incorrect product decisions.
Implementation Approach
- Architecture: Shared Kotlin module for core logic; platform-specific integration layers for analytics, storage, networking.
- Build & Distribution: Unified CI pipeline compiles for JVM and Native targets. Android consumes via Gradle; iOS via precompiled XCFramework distributed through Cocoapods.
- Validation: Ran new KMP version alongside legacy system with kill switches. Used a meta-experiment to compare outputs before cutover.
- Cultural Integration: iOS team led evaluation with predefined exit ramp. Android team maintained library as pre-compiled binary, so iOS engineers acted as integrators, not Kotlin experts.
Governance & Risk Assessment
- Privacy: No direct privacy concerns; the shared library handles experiment logic, not user data.
- Bias: Experiment consistency reduces bias from platform-specific logic drift.
- Maturity: KMP is production-ready for this use case, but organisations should validate against their own performance benchmarks. Booking.com’s approach of parallel validation and exit ramp is recommended.
- Dependency Risk: iOS team must trust a Kotlin-generated binary. Booking.com mitigated this with rigorous evaluation and cultural buy-in.
Source: medium.com








