Show HN: Skip – Build native iOS and Android apps from a single Swift codebase
Hello Hacker News. I'm Marc, one half of the team that created skip.tools. Skip is a tool that transpiles your SwiftUI iOS app into a Kotlin Jetpack Compose app, and enables you to use a single language to build a complete app that reaches the entire mobile marketplace.

What it is: Skip stands in contrast to other cross-platform development tools like Flutter, React Native, and Xamarin, in that it enables the creation of genuinely native applications for both of the dominant mobile platforms. It doesn't embed a separate engine or runtime into your app, but instead lets you use pure Swift and SwiftUI to create the iOS side of the app (as per Apple's recommended best practices for creating iOS apps), and transpiles it into a pure Kotlin and Jetpack Compose app for the Android side (which is Google's recommendation for building Android apps). So your application will use platform-native controls and will automatically have all the affordances provided by the platform vendor: animations, accessibility, and future-proof evolution alongside OS updates.

How it works: you build a Skip app using the same tools that you use to create a standard iOS app: Xcode, Swift, and SwiftUI. Skip augments this workflow with a Swift Package Manager plugin called "skipstone", which transpiles your Swift into Kotlin each time you build your app, and launches the Android app side-by-side with the iOS app each time you run the app. The transpilation works not just on your primary app module, but also transitively processes all your dependent SwiftPM modules, so you can break complex projects down into individually testable sub-modules containing business logic or UI code. In fact, this is how our own adaptor modules for the standard frameworks are structured: SkipFoundation adapts the Foundation framework and SkipUI adapts the SwiftUI framework, so the same familiar API can be used when building the app. And there's a GitHub ecosystem of open-source modules supporting popular frameworks, including SQLite, Firebase, Lottie, and many other common building blocks of modern apps.

What it solves: Abe and I have been building apps since 2008, when we created the Stanza ebook reader. We have since worked on a number very large app projects for various companies, including Twitter, the New York Times, and Bose. We've seen all manner of attempts at cross-platform solutions using JavaScript and other languages, but in the end we've concluded that only a truly native app experience, using the tools and languages recommended by the platform vendor, will ever result in a first-class user experience. That that leaves only the prospect of writing your app twice: once in Swift or Objective-C for Apple platforms, and again in Kotlin or Java for Android. But writing the same app twice is much more than twice the effort: you need two separate skillsets, two sets of tools, and a lot of manual coordination overhead to ensure feature parity. So rather than attempting to add to the already-crowded field of cross-platform solutions, we instead approached the problem from an angle of how best to ease the process of creating two separate-yet-equivalent apps.

And thus the Skip transpiler we born, and over the past year is has evolved into a fully-capable solution for creating best-in-class apps for both iOS and Android. We have a wealth of videos and documentation available at https://skip.tools, and I'll be around to field any questions that any of you might have. Thanks in advance for taking a look!

Home: https://skip.tools
FAQ: https://skip.tools/docs/faq/
GitHub: https://github.com/skiptools/