Blog
Kotlin Mobile Multiplatform Android iOS

Kotlin Multiplatform: comparte código entre Android, iOS y más

Kotlin Multiplatform permite compartir lógica de negocio entre plataformas sin renunciar a las UIs nativas. Una alternativa pragmática a los frameworks cross-platform clásicos.

dcuestaprieto dcuestaprieto · 8 de junio de 2026
Kotlin Multiplatform: comparte código entre Android, iOS y más

Introducción

Durante años, los equipos de desarrollo móvil han tenido que elegir entre dos mundos: mantener dos bases de código separadas (una para Android, otra para iOS) o apostar por un framework cross-platform que sacrifica rendimiento o experiencia nativa. Kotlin Multiplatform (KMP) propone un camino intermedio: compartir la lógica de negocio entre plataformas mientras cada una conserva su UI nativa.

Desde que JetBrains declaró KMP estable en producción a finales de 2023, la adopción ha crecido notablemente. En este artículo veremos qué es, cómo funciona y cuándo tiene sentido usarlo.

¿Qué es Kotlin Multiplatform?

Kotlin Multiplatform es una tecnología del ecosistema Kotlin que permite escribir código compartido que se compila para múltiples plataformas destino:

  • Android (JVM)
  • iOS (mediante Kotlin/Native, genera un framework de Objective-C)
  • JVM (servidor, desktop)
  • JavaScript / WebAssembly

La clave está en el concepto de expect / actual: defines una interfaz común en el módulo compartido (expect) y cada plataforma proporciona su implementación concreta (actual).

Estructura de un proyecto KMP

Un proyecto típico de Kotlin Multiplatform tiene esta estructura de módulos:

myProject/
├── shared/
│   └── src/
│       ├── commonMain/     ← código compartido
│       ├── androidMain/    ← implementaciones Android
│       └── iosMain/        ← implementaciones iOS
├── androidApp/             ← app Android nativa
└── iosApp/                 ← app iOS nativa (Xcode)

El módulo shared contiene todo lo que tiene sentido reutilizar: repositorios, casos de uso, modelos de dominio, llamadas a red, parseo de datos...

Código de ejemplo

El mecanismo expect / actual es la pieza central de KMP. Aquí un ejemplo con el acceso a la hora actual:

// commonMain: declaramos qué queremos
expect fun currentTimeMillis(): Long

// androidMain: implementación Android
actual fun currentTimeMillis(): Long = System.currentTimeMillis()

// iosMain: implementación iOS
actual fun currentTimeMillis(): Long =
    NSDate().timeIntervalSince1970.toLong() * 1000

Para las llamadas a red, la librería Ktor es el estándar de facto en KMP y funciona en todas las plataformas sin cambios:

// commonMain — funciona en Android, iOS, JVM y JS
val client = HttpClient {
    install(ContentNegotiation) {
        json()
    }
}

suspend fun fetchUser(id: String): User {
    return client.get("https://api.example.com/users/$id").body()
}

¿Cuándo usar KMP y cuándo no?

KMP brilla especialmente cuando:

  • Tienes lógica de negocio compleja que no quieres duplicar
  • Tu equipo ya usa Kotlin para Android
  • Necesitas UIs verdaderamente nativas (no un canvas renderizado)
  • Quieres integración con el ecosistema de Android existente

Puede no ser la mejor opción si:

  • Tu app es principalmente UI con poca lógica compartible
  • Tu equipo iOS no tiene experiencia con Kotlin/Swift interop
  • Necesitas soporte de plataformas más exóticas fuera del foco principal de JetBrains

El ecosistema: librerías clave

El ecosistema KMP ha madurado mucho. Estas son las librerías más consolidadas:

  • Ktor — cliente HTTP multiplataforma
  • SQLDelight — base de datos local con queries tipadas en SQL
  • Kotlinx.serialization — serialización JSON y otros formatos
  • Kotlinx.coroutines — concurrencia con corrutinas
  • Koin — inyección de dependencias

Conclusión

Kotlin Multiplatform no intenta reemplazar las UIs nativas ni competir directamente con Flutter o React Native. Su apuesta es más quirúrgica: compartir exactamente lo que tiene sentido compartir y dejar que cada plataforma haga lo que mejor sabe hacer. Para equipos con una base en Kotlin y necesidad de mantener consistencia entre plataformas en la capa de datos y dominio, KMP es hoy una opción sólida y lista para producción.

Si quieres empezar, el punto de entrada oficial es kmp.jetbrains.com, donde puedes generar un proyecto base con un asistente interactivo.