요즘 개발자들 사이에서 "크로스플랫폼 개발"은 너무 익숙한 단어죠. 한 번의 코드 작성으로 Android와 iOS 모두를 타겟팅할 수 있다니…
누구나 한 번쯤은 Flutter나 React Native를 고려해 봤을 거예요.
크로스플랫폼 앱 개발은 오랜 시간 동안 "Write once, run anywhere"라는 이상을 실현하고자 해왔죠.
그런데, 최근에는 Kotlin Multiplatform(KMP)이라는 신흥 대안이 조용히, 그러나 강하게 떠오르고 있습니다.
오늘은 Flutter, React Native와 함께 KMP를 비교하면서, 실제로 어떤 대안이 어떤 상황에 맞는지 고민해보려 합니다.
https://trends.google.com/trends/explore?date=now%201-d&q=react%20native,flutter,kotlin&hl=ko
코틀린과 리액트 네이티브의 검색량을 1:1로 비교하기는 키워드로 검색하긴 힘들긴 합니다.ㅠ
다만 리액트네이티브랑, 플러터의 관심도가 떨어진것 만큼은 확실합니다.
Kotlin Multiplatform(이하 KMP)은
JetBrains가 개발한 기술로, 말 그대로 Kotlin으로 여러 플랫폼(Android, iOS, Web, Desktop)을 동시에 지원할 수 있게 해줍니다.
하지만 여기서 중요한 것은
Flutter나 React Native처럼 UI까지 완전히 공유하는 방식은 아니에요.
- 공통 코드(Kotlin): 데이터 모델, API 호출, 비즈니스 로직 등
- 개별 플랫폼 코드: UI는 각각 Android는 Jetpack Compose, iOS는 SwiftUI 등으로 직접 작성
즉, 로직은 공유하되 플랫폼의 고유한 UI/UX 경험은 그대로 살리는 방식입니다. 이게 바로 KMP의 매력이죠.
속도나, 재사용에서의 장단점은 있겠지만, 안드로이드개발자가 IOS 개발을 할때 쉽게 접근 가능한 것이 가장 큰 장점이라고 하겠네요.
아래 보시면, 코드 재사용 부분이 비즈니스 로직으로 되어있는데요.
그말인즉슨 UI는 별도로 구현하고, 공통 로직만 구현할 수 있다라고 보시면 될것 같습니다.
내가 Java 개발자였다면?
“너무 쉽다!”
Kotlin은 Java 기반에서 발전한 언어라 문법도 비슷하고, 더 간결해요.
예를 들어 null safety, 확장 함수, coroutines 같은 기능이 직관적으로 적용됩니다. 안드로이드 개발 경험이 있다면, KMP 도입 난이도는 낮습니다.
내가 JavaScript 개발자였다면?
처음엔 약간 헷갈릴 수 있어요.
코루틴, 정적 타입, null 체크 등 JavaScript와는 결이 달라서 문법 적응 시간이 필요합니다.
하지만 한번 적응하면, Kotlin의 안정성과 가독성에 감탄하게 될 거예요. 특히 TypeScript 경험이 있다면 더욱 부드럽게 넘어갈 수 있습니다.
Flutter나 RN을 해봤다면?
KMP는 “내가 UI까지 다 만들 수는 없겠네?” 라고 느껴질 수 있어요. 맞아요, UI는 따로 개발해야 하니까요.
하지만 반대로 말하면, 각 플랫폼의 디자인 시스템을 100% 활용 가능하다는 의미입니다.
이 말인 즉슨 뭔가, 네이티브한 UI(안드로이드/IOS)에 대한 경험이 필수라는 의미입니다.
Flutter
여전히 MVP 제작과 빠른 개발에는 최고.
스타트업, 프로토타입 제작에 강하고, 웹과 데스크탑도 동시에 커버할 수 있어요. 다만 앱 크기 증가, 복잡한 UI 퍼포먼스 문제는 여전히 고민거리입니다.
React Native
풀스택 웹 개발자에게는 익숙한 선택.
하지만 복잡한 네이티브 연동에서 브리지 한계가 드러나고 있고, 최신 기술(Hermes, Fabric 등) 도입으로 인해 러닝 커브가 다시 올라가고 있어요.
Kotlin Multiplatform
조용히, 그러나 빠르게 성장 중.
핀터레스트, 캐시앱, 넷플릭스 같은 회사들이 KMP를 도입하고 있고, JetBrains의 적극적인 지원 덕에 생태계도 빠르게 확장 중이에요.
특히 Android 기반 앱을 iOS로 확장하려는 기업에게는 거의 완벽한 대안입니다.
Flutter가 좋을 때
디자인 일관성이 가장 중요할 때
빠른 MVP 제작이 목표일 때
하나의 코드로 웹/모바일/데스크탑까지 다 하고 싶을 때
React Native가 좋을 때
JS/TS 기반 풀스택 개발 환경을 유지하고 싶을 때
웹과 앱 간 코드 공유를 극대화하고 싶을 때
이미 JS 생태계를 잘 활용하고 있을 때
Kotlin Multiplatform이 좋을 때
이미 Kotlin이나 Android 앱 개발 경험이 있을 때
네이티브 UI를 그대로 사용하고 싶은데, 로직은 공유하고 싶을 때
장기적으로 유지보수가 쉬운 구조를 원할 때
크로스플랫폼 기술에는 완벽한 정답이 없습니다.
팀의 기술 스택, 개발자들의 익숙함, 유지보수 전략 등 다양한 요인을 종합적으로 고려해야 해요.
하지만 만약,
- Android 앱을 운영 중이고
i- OS 확장을 고려하고 있으며
- Kotlin에 친숙한 팀이라면?
Kotlin Multiplatform은 정말 강력한 대안이 될 수 있습니다.
UI는 각자 만들어야 하지만, 로직을 공유하면서 생산성과 유지보수성을 모두 챙길 수 있으니까요.
앞으로의 크로스플랫폼 개발, Flutter와 React Native가 이끌었던 흐름에 KMP가 진짜 대안으로 등장할 수 있을지, 기대해봐도 좋을 것 같습니다.