Write your app in Swift and SwiftUI. Skip compiles it natively for iOS and produces real Jetpack Compose for Android.
Getting Started · Documentation · Blog · Issues
Skip is a free, open-source tool for building native iOS and Android apps from a single Swift codebase. You write your app in Swift and SwiftUI, and Skip produces real Jetpack Compose for Android. Both sides are genuinely native: SwiftUI on iOS, Jetpack Compose on Android. No web views, no custom rendering engine, and no additional runtime.
Skip supports two development modes:
-
Skip Fuse compiles your Swift natively for Android using the official Swift SDK for Android. You get the full Swift language, standard library, and Foundation on both platforms, with bridging to call Kotlin and Java APIs when needed.
-
Skip Lite transpiles your Swift source code to Kotlin, maximizing interoperability with existing Kotlin and Java libraries and the Android ecosystem.
Both modes map SwiftUI to Jetpack Compose using the SkipUI compatibility framework, so your UI is native on each platform.
-
No new language to learn. If you know Swift and SwiftUI, you already know how to build for Android with Skip. Other cross-platform tools ask you to write JavaScript, Dart, or Kotlin. Skip lets you keep writing Swift.
-
Truly native on both platforms. Skip produces real SwiftUI on iOS and real Jetpack Compose on Android. Users get the native look, feel, and performance they expect.
-
Full ecosystem access. Skip apps can use Swift packages on both platforms, and can call Kotlin/Java APIs directly on Android. Over 2,200 Swift packages already build for Android, as tracked at the Swift Package Index.
-
No lock-in. Skip builds on the officially supported Swift SDK for Android. Your Swift code, packages, and skills work on Android with or without Skip.
-
Free and open source. Skip is complete free and developed independently from any parent corporation, funded by your sponsorship.
Choosing a technology to help you build an app for iOS and Android from a single codebase can be a make-or-break decision. Everyone knows a bad app or a crummy port within moments of launching the app, and consumers are ruthless in deleting bloated, slow, or "weird-feeling" apps within moments.
You can read our own assessment of Skip's strengths at skip.dev/compare/.
Install Skip with Homebrew, verify your environment, and create your first project:
brew install skiptools/skip/skip
skip checkup
skip createYour project will be created and opened in Xcode. Run it against an iPhone simulator, and Skip will automatically build and launch the Android version on a running emulator at the same time.
For the full setup guide, see Getting Started.
To build apps that compile Swift natively for Android, install the Swift Android SDK:
skip android sdk installThen create a native app project:
skip init --native-app --appid=com.example.myapp my-app MyAppSee the Fuse mode documentation for details on how native compilation and Kotlin bridging work.
Skip ships with several sample applications that demonstrate different features and patterns. All are open source and available in the skiptools organization.
A comprehensive catalog of SwiftUI components running side by side on iOS and Android. The best way to see how Skip maps SwiftUI to Jetpack Compose.
- Source: skipapp-showcase-fuse (Fuse) · skipapp-showcase (Lite)
| App | Description | Mode |
|---|---|---|
| skipapp-hello | Minimal starter app with a tab view and list | Lite |
| skipapp-howdy | Starter app for Skip Fuse | Fuse |
| skipapp-fireside | Firebase integration demo | Lite |
| skipapp-fireside-fuse | Firebase integration demo | Fuse |
| skipapp-bookings-fuse | Travel bookings with maps and Compose views | Fuse |
| skipapp-weather | Weather app with async networking | Lite |
| skipapp-calculatrix | Calculator with custom layout | Lite |
| skipapp-lottiedemo | Lottie animation playback | Lite |
| skipapp-travelposters-native | Shared Swift model with native UI on each platform | Fuse |
Browse all sample apps at skip.dev/docs/samples.
Skip provides a suite of open-source libraries that implement standard Apple frameworks for Android, so your existing Swift code works across platforms.
| Library | Description |
|---|---|
| skip-foundation | Foundation APIs (URL, Data, Date, JSON, FileManager, etc.) |
| skip-model | Observation and Combine (backed by Compose MutableState) |
| skip-ui | SwiftUI to Jetpack Compose |
| skip-fuse | Fuse mode umbrella (OSLog, Observable, AnyDynamicObject) |
| skip-fuse-ui | Native SwiftUI on Android for Fuse mode |
| skip-bridge | Bidirectional Swift-Kotlin interop |
| skip-lib | Swift standard library extensions |
| skip-unit | XCTest to JUnit mapping |
| Library | Description |
|---|---|
| skip-firebase | Firebase (Auth, Firestore, Messaging, Analytics, etc.) |
| skip-sql | SQLite database access |
| skip-keychain | Keychain / EncryptedSharedPreferences |
| skip-web | WKWebView / android.webkit.WebView |
| skip-av | AVKit / ExoPlayer |
| skip-device | Network, Location, Sensors |
| skip-motion | Lottie animations |
| skip-ffi | C/C++ interop via JNA |
See the full module documentation at skip.dev/docs/modules.
This repository hosts the Skip SwiftPM build plugin, which integrates with Xcode and Swift Package Manager to drive the Android build alongside your normal iOS build. It works together with skipstone, the binary that powers both the skip CLI and the plugin.
For more on how Skip projects are structured, see:
- Project Types - App and library project structures
- Lite and Fuse Modes - Transpilation vs. native compilation
- CLI Reference - Full command-line tool documentation
| Resource | Link |
|---|---|
| Getting Started | skip.dev/docs/gettingstarted |
| Full Documentation | skip.dev/docs |
| Blog | skip.dev/blog |
| Module Reference | skip.dev/docs/modules |
| Sample Apps | skip.dev/docs/samples |
| Component Gallery | skip.dev/docs/components |
| CLI Reference | skip.dev/docs/skip-cli |
| Competitor analysis | skip.dev/compare/ |
- Forums: forums.skip.dev - Discussions, questions, and announcements
- Slack: skip.dev/slack - Real-time chat with the Skip team and community
- Issues: github.com/skiptools/skip/issues - Bug reports and feature requests
- Mastodon: @[email protected]