Помогаю командам перейти на Kotlin Multiplatform, когда надоело поддерживать две почти одинаковые кодовые базы. Смысл простой: всё, что не про экран, — обращения к серверу, модели, бизнес-правила, кеш, разбор ответов и обработку ошибок — я собираю в общий Kotlin-модуль. Его подключают и приложение на iOS, и приложение на Android, а написан он один раз. Логика перестаёт жить в двух местах: исправление или новое правило вносится единожды и сразу работает одинаково на обеих платформах.
При этом внешний вид приложения остаётся честно нативным. На iOS экраны собираются средствами Apple, на Android — на Jetpack Compose или привычных view, а мост к общему ядру строится через продуманные привязки и механизм expect/actual. Пользователь не замечает никакой прослойки: те же переходы, та же скорость, те же системные возможности. Разница видна только вам — одну и ту же работу больше не оплачиваете дважды.
В проект обычно входит разбор текущей архитектуры, вынос или написание общего кода, настройка сборки Gradle и модульной структуры, тесты вокруг ядра и передача понятного результата вашим разработчикам. Единое ядро для логики — и нативность там, где она действительно нужна пользователю.
При этом внешний вид приложения остаётся честно нативным. На iOS экраны собираются средствами Apple, на Android — на Jetpack Compose или привычных view, а мост к общему ядру строится через продуманные привязки и механизм expect/actual. Пользователь не замечает никакой прослойки: те же переходы, та же скорость, те же системные возможности. Разница видна только вам — одну и ту же работу больше не оплачиваете дважды.
В проект обычно входит разбор текущей архитектуры, вынос или написание общего кода, настройка сборки Gradle и модульной структуры, тесты вокруг ядра и передача понятного результата вашим разработчикам. Единое ядро для логики — и нативность там, где она действительно нужна пользователю.