Wat we ermee bouwen

Kotlin Multiplatform maakt de omgekeerde weddenschap van Flutter. In plaats van de hele app inclusief de UI te delen, deel je alleen de delen die niets te zoeken hebben in twee versies — netwerkverkeer, modellen, validatie, opslag, bedrijfsregels — en bouwt elk platform zijn eigen interface in SwiftUI of Jetpack Compose.

De gedeelde code is Kotlin, gecompileerd naar een native framework op iOS en naar gewone Kotlin op Android. Vanaf de iOS-kant is het simpelweg een bibliotheek.

Waar het past

Producten met bestaande native apps en bestaande native teams. Dat is het geval waar KMP werkelijk goed in is: je kunt één module — de API-client, de offlinecache — naar gedeelde code verplaatsen zonder een van beide apps te herschrijven of iemand te vragen zijn platform op te geven.

Het past ook bij producten waar de UI zo platform-eigen moet zijn dat een cross-platform renderer een risico wordt, terwijl de domeinlogica eronder identiek is.

Wanneer we het aanraden

Wanneer je al twee native codebases hebt en wilt stoppen met dezelfde logica dubbel onderhouden, of wanneer de interface sowieso op beide platforms native gebouwd moet worden.

Niet voor een product dat vanaf nul begint met één team. Daar betekent KMP dat je de UI twee keer schrijft — de dure helft — en heb je een cross-platform toolchain op je hals gehaald zonder de besparing die dat rechtvaardigt. Flutter is dan meestal de betere ruil, en dat zeggen we ook.

Wees ook eerlijk over de iOS-kant: gedeelde Kotlin debuggen vanuit Xcode is werkbaar maar niet prettig, en de tooling is merkbaar jonger dan die van Flutter.