Cómo usar Kotlin Multiplatform para compartir lógica entre Android, iOS y Web en 2026

Tiempo de lectura: 2 minutos

Kotlin Multiplatform (KMP) se ha convertido en una de las tecnologías más atractivas del desarrollo moderno. No es un framework nuevo, sino una extensión del propio lenguaje Kotlin que permite escribir código común y reutilizable para varias plataformas sin sacrificar rendimiento ni integraciones nativas.

Montaña - pexels

En este tutorial aprenderás qué es, cómo funciona y cómo empezar a crear tu primer módulo multiplataforma.

Qué es Kotlin Multiplatform y por qué está en auge

KMP permite escribir:
– Lógica de negocio
– Networking
– Gestión de datos
– Serialización
– Validaciones
– Lógica de autenticación

Y compartirlo entre:
– Android
– iOS
– Web (JavaScript)
– Desktop

La ventaja clave es que no reemplaza las interfaces nativas. Puedes seguir creando vistas en SwiftUI, Jetpack Compose o React, pero usando la misma base lógica.

Arquitectura básica de KMP

Un proyecto multiplataforma se organiza en tres bloques:

  1. commonMain
    Código compartido. Aquí viven casos de uso, modelos, serialización y lógica funcional.
  2. androidMain
    Implementaciones específicas de Android.
  3. iosMain
    Implementaciones específicas de iOS.

El sistema utiliza el patrón expect/actual para declarar funcionalidades comunes y luego implementarlas según plataforma.

Creando un proyecto sencillo con Kotlin Multiplatform

Paso 1: Crear el proyecto

En IntelliJ IDEA o Android Studio:

Selecciona New Project → Kotlin Multiplatform → KMP Shared Module.

Selecciona plataformas: Android + iOS.

Esto generará la estructura del módulo compartido.

Paso 2: Escribir lógica común

Ejemplo básico: un validador de email multiplataforma.

En commonMain:

class EmailValidator {
    fun isValid(email: String): Boolean {
        return email.matches(Regex("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$"))
    }
}

Este código será usado por Android, iOS y Web sin cambios.

Paso 3: Crear funciones más avanzadas

Vamos a implementar una función de hashing segura que se apoyará en implementaciones específicas según plataforma.

En commonMain:

expect class Hasher() {
    fun sha256(input: String): String
}

En androidMain:

actual class Hasher {
    actual fun sha256(input: String): String {
        val md = java.security.MessageDigest.getInstance("SHA-256")
        val digest = md.digest(input.toByteArray())
        return digest.joinToString("") { "%02x".format(it) }
    }
}

En iosMain (Swift compilado por Kotlin/Native):

actual class Hasher {
    actual fun sha256(input: String): String {
        return platform.Foundation.NSString
            .create(input)
            .dataUsingEncoding(4)
            ?.let { data ->
                // Llamada nativa a CommonCrypto
                val hash = ByteArray(32)
                CC_SHA256(data.bytes, data.length.convert(), hash.refTo(0))
                hash.joinToString("") { "%02x".format(it) }
            } ?: ""
    }
}

Aquí ya se percibe el poder de KMP: lógica común, personalización nativa donde es necesario.

Paso 4: Usarlo desde Android

En el módulo Android:

val validator = EmailValidator()
println(validator.isValid("[email protected]"))

Paso 5: Usarlo desde iOS

KMP exporta el módulo a un framework para Xcode:

En SwiftUI:

let validator = SharedEmailValidator()
print(validator.isValid(email: "[email protected]"))

Ventajas reales en proyectos de 2025

  1. Reducción del coste de mantenimiento.
  2. Evitas crear dos lógicas distintas para Android e iOS.
  3. Ajuste fino con código nativo cuando hace falta.
  4. Ideal para proyectos grandes, apps empresariales y startups.
  5. Encaja con arquitecturas modernas como Clean Architecture y MVVM.

Cuándo NO usar Kotlin Multiplatform

– Si buscas escribir pantallas compartidas (en ese caso mejor Flutter o React Native).
– Si tu app tiene dependencias muy específicas de cada plataforma.
– Si tu equipo no tiene experiencia con Kotlin.

Deja un comentario