Skip brings Swift app development to Android. It is a tool that enables developers to use a single modern programming language (Swift) and first-class development environment (Xcode) to build genuinely native apps for both iOS and Android.
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 create 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.
Over the past year Skip has evolved into a fully-capable solution for creating best-in-class apps for both iOS and Android. And today we are delighted to announce the release of version 1.0, meaning that it is ready for production use.
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!
@mwp Congrats on the release of Skip! 🎉 It's impressive to see a tool that keeps native development intact while offering a seamless way to expand apps across iOS and Android without extra runtimes. The automatic SwiftUI to Jetpack Compose transpilation seems like a significant leap forward. How does Skip manage intricate or custom UI elements and complex third-party libraries? I'm curious about how it maintains design consistency and performance across both platforms. This looks like a great step forward for mobile development.
@mwp
Skip's approach to transpiling Swift code for native Android development is an innovative concept. It addresses the challenge of maintaining separate codebases while building native apps for both iOS and Android.
Here are some key points and questions for further exploration:
- How does the transpiled Kotlin code compare to native Android development in terms of performance and efficiency?
- Does Skip support seamless integration with existing native libraries or frameworks for both platforms?
- How does Skip handle debugging and code inspection across different codebases (Swift vs. Kotlin)?
As a developer with experience in mobile development, I'm interested in how Skip works. Here are some potential areas for collaboration:
- Contributing to further optimize the transpilation process for better performance on Android devices.
- Expanding compatibility with additional popular mobile development libraries and frameworks.
- Exploring ways to improve debugging capabilities across the transpiled codebase.
I'd love to learn more about Skip's technical architecture and explore opportunities to contribute to its development.
Additionally, I'm interested in trying out Skip for a project to see how it simplifies cross-platform development while maintaining native app quality.
Hey @mwp this looks amazing. I'm a cross platform developer myself. I use a different stack, but I know the pain of developing for iOS, Android and the Web at the same time 😅
How is Skip handling Android specific things like the back button, side-nav, asset generation and so on?
Congrats on the launch 🚀
@crebuh Thanks for the positive words! For Android-specific navigation, the standard SwiftUI navigation gets converted to use the Compose Navigation (https://developer.android.com/de...), which follows standard navigation idioms on Android. You can read more at https://skip.tools/docs/modules/....
For asset generation, we use the SwiftPM Resources/ method to embed images, localization, etc. At transpilation time, these are converted into Java resources, which the Skip runtime libraries will look for when it is time to use this. Then is discussed at https://skip.tools/docs/resource....
Please let us know if you have any more questions, either here, or on our Slack channel (https://skip.tools/slack/) or community discussion forums (https://community.skip.tools).
Ohhh, congrats on the launch! Is this the tool we've all been waiting for? I think it is! native components for both OS's is GREAT! One question though; I can imagine there are components that are specifically built for iOS or Android. How do you handle those differences?
Skip
Mailfox
Skip
Hurrayy