Skip VS KMP for Swift developers
Introduction
Multiplatform tools are not a new thing. There are well-established players out there, like React Native or Flutter, and even some old deprecated ones, like Xamarin / MAUI. But recently, two new players have entered the game: Skip and KMP. Both of them are multiplatform tools, but they have different approaches. In this article, we will compare them and see which one is better for you.
Overview
KMP (Kotlin Multiplatform)
A framework developed by JetBrains, the people behind Kotlin, and incredible IDEs like IDEA, WebStorm, and PyCharm. KMP allows you to write code once and run it on multiple platforms, like iOS, Android, and the web. It is based on Kotlin, a modern language that is very nice to work with, and is very similar to Swift in many ways.
KMP takes the approach of “share the logic, divide the UI”. This means that you write the business logic once, and then you write the UI for each platform separately. This is a good approach if you want to have a native look and feel on each platform, but it can be a bit more work. Your UI will be SwiftUI on iOS, Jetpack Compose on Android (There is also a web side, but I’m not a web dev so I can’t talk about it). This means that you will have to write your UI twice, which might sound like a hassle to some or a great feature to others. For me, this was a great feature, as I believe that the only way to get native performance and feel from UI is to write it natively.
If you wanted to go a bit deeper, you could also use Compose Multiplatform, to have your UI written once, in Kotlin. However, that is still in alpha, so I can’t recommend it for production.
The biggest drawback for us iOS developers here will be the fact that this is heavily relying on Kotlin, a new language to some. However, the language is very easy to pick up, and with AI tools, this really isn’t the hurdle it once was.
Skip
Skip is the other end of the spectrum - you write Swift and SwiftUI code, and that in turn gets compiled into Kotlin and Compose code for you. Obviously, as Swift developers, this sounds like an incredible premise - you don’t need to learn a new language, you don’t need to learn a new framework, you just write Swift and SwiftUI, and you get Android for free. This is a bit of a double-edged sword though - you are relying on a tool to do the conversion for you, and that might not always be perfect. You might run into issues where the conversion isn’t perfect, or where the performance suffers, and of course because you’re writing shared UI, it might be a bit harder to get that native feel.
Dev experience
KMP
As a JetBrains tool, and a Kotlin-first tool, the main IDE that you will be working in will either be IDEA (paid or community version), or my recommendation, Android Studio. This is a great IDE, and it has a lot of features that make working with KMP a breeze. JetBrains IDEs are a bit marmite, you either love them or hate them. I personally love them, but I know a lot of people who don’t. However, any iOS-related work that you’ll be doing, whether that be any project configuration work, code signing, and indeed any SwiftUI work, will be done in Xcode. This means that you will have to switch between IDEs, which can be a bit of a hassle. JetBrains have said that they’re working on a standalone IDE for KMP, but that is still in the works.
Skip
Skip setup is done in the terminal, using their CLI, which is well documented on their website. It feels very similar to setting up a new Swift package, and it’s very easy to get started. The main IDE that you will be working in will be Xcode, which is great for us iOS developers. You will be able to do all of your work in one place, and you won’t have to switch between IDEs. This is a big plus for me, as I like to have everything in one place, even if that one place is Xcode.
Summary
While Kotlin and JetBrains IDEs are great, the comfort and familiarity of writing Swift code in Xcode is just unmatched, at least until JetBrains comes out with their standalone IDE. This one goes to Skip, for me.
Support and documentation
KMP
KMP has tremendous support from the community and from JetBrains themselves, and they are very responsive to tickets opened and issues raised. The documentation is also very good, and there are a lot of tutorials and guides out there to help you get started. Obviously, being a bigger and more established company gives them the ability to have a bigger team, and more resources to put into support and documentation.
Skip
The docs for Skip are great. Getting up and running with a basic project is fully covered, and won’t take you long at all. Even a more complex project is well documented, and you should be able to get up and running in no time. The support is also great, and when I had a question I asked it in the Slack, and was responded to by the creator on the same day, which is very impressive. However, and this is by no fault of the Skip team, they are a younger product and a much smaller team, so the support and documentation might not be as good as KMP.
Summary
This one is weirdly hard to call. They’re both well documented on their own website, and have good support, but KMP being just that much bigger and having a larger community, I think I have to give this one to KMP.
Price
KMP
KMP is free, regardless of the size of the team or project using it. This is a big plus, as it means that you can try it out without any risk, and you can use it for any project, regardless of the size.
Skip
Skip has a free tier, for indie developers, which in my opinion is very generous and should be more than enough for you to have a look, play around, and even deploy a full app to both stores without ever paying. However, for teams and more than one closed source project, there is a cost associated with it. This is a bit of a downside, but it’s understandable, as they need to make money somehow, and they’re not a big company like JetBrains.
Summary
This one goes to KMP, for being free for everyone, but I would like to give a special mention to Skip for having a very generous free tier.
Conclusion
While I think Skip is an incredible tool with an endless amount of potential, for a lot of you, KMP might be the better choice. It’s more established, has a bigger community, and is free for everyone. However, if you’re a Swift developer, and you want to write Swift code, and you don’t mind a bit of a learning curve, Skip is a great choice, and I don’t think you’ll be disappointed. For 99.9% of indie devs, you’ll be happy with both, so I would recommend building a small app (I built a Pokemon app), spend the day with the frameworks, and see which one you like better.