[HN Gopher] Show HN: Skip - Build native iOS and Android apps fr...
___________________________________________________________________
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 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! Home:
https://skip.tools FAQ: https://skip.tools/docs/faq/ GitHub:
https://github.com/skiptools/
Author : marcprux
Score : 56 points
Date : 2024-08-28 20:44 UTC (2 hours ago)
(HTM) web link (skip.tools)
(TXT) w3m dump (skip.tools)
| banashark wrote:
| Looks very cool!
|
| Looking at the docs gives a good overview of how it works.
|
| Regarding transpilation and the tradeoffs
| (https://skip.tools/topic/transpilation-tradeoffs/), does the
| limitation of certain Swift features cause any significant
| friction with using parts of SwiftUI or other core libraries?
|
| Wondering how much those (understandable) limitations on the
| transpilation limit what a random iOS dev might be able to do
| compared to what they can do in iOS land.
|
| Also, using SwiftUI cross-platform makes me think that many
| android libraries would be a no-go.
|
| One of the reasons that Xamarin development was painful (other
| than the numerous bugs in trying to target 2 foreign platforms)
| was that you couldn't _really_ utilize the large native
| ecosystems of either platform, and you would end up spending a
| lot of time "rewriting" libraries in dotnet.
| marcprux wrote:
| Thanks for the positive words! Any limitations in the
| transpiler (such as some advanced generics) will only be
| limitations on the Android side - the iOS side can still do
| anything that is support in Swift. We discuss this a bit at
| https://skip.tools/docs/platformcustomization/
|
| > Also, using SwiftUI cross-platform makes me think that many
| android libraries would be a no-go.
|
| A unique feature of Skip is that the Kotlin/Android side is
| free to integrate with whatever gradle libraries it wants (see
| https://skip.tools/docs/dependencies/). Similarly, the Swift
| side can have any SwiftPM dependencies it wants.
|
| Only your own transpiled modules, and the core Skip modules,
| will need to support transpilation. You can then include any
| native dependencies via your app's transpiled code that
| branches based on which platform/language you are targeting.
| So, for example, the Swift/SwiftUI side of the project can
| depend on the SwiftPM "https://github.com/firebase/firebase-
| ios-sdk.git" dependency, and the Kotlin/Compose side can depend
| on the Gradle "com.google.firebase:firebase-bom" dependency.
| This is what we ourselves do in the various integration modules
| we have (such as SkipFirebase, for this particular example).
| dang wrote:
| (We moved this comment from
| https://news.ycombinator.com/item?id=41258356, since that
| thread didn't get much attention and we invited marcprux to
| repost this one.)
| amehregan wrote:
| Can vouch- been using this tool the last couple months and it's
| been magic. It's new so there is definitely a learning curve, but
| once you get things working it solves the cross-platform problem
| completely.
| mariocesar wrote:
| Are there showcase apps? A "Built with Skip" list?
| flawn wrote:
| Damn, this sounds too good to be true. Really nothing to add here
| except than keep pushing!
|
| This fixes the big painpoint that nowadays' cross-platform
| frameworks come with performance tradeoffs as they have a unified
| presentation layer!
| gavinh wrote:
| > first-class development environment (Xcode)
|
| Are you sure
| scosman wrote:
| Also giggled at calling Xcode "an Idyllic IDE".
|
| I guess one ugly mobile app IDE is better than two.
| thomasswift wrote:
| This looks great! Thanks for sharing here.
| wirelesspotat wrote:
| Good to see Skip on the home page! We were evaluating Skip just a
| couple weeks ago for a side project.
|
| The issue we ran into is that we've already built a native iOS
| app with SwiftUI + a bit of UIKit. Integrating Skip with an
| existing app seemed like a significant task
|
| Does that hold true in your experiences? Do you have any examples
| of small- or medium-sized existing apps that have migrated to
| Skip?
| LifeUtilityApps wrote:
| Loving this so far, I've been working with it for a week now. I
| have a personal app, DownPay for iOS, that is built with SwiftUI
| that I want to bring to Android. I tried going the React Native
| route to build an android-only version but the context switching
| between SwiftUI, React Native, and then my day job made it
| challenging. I also tried Ionic and Ignite and wasn't successful
| with those either.
|
| After testing the feasibility of other cross-platform frameworks,
| I landed on Skip. I LOVE that I don't have to break out of the
| "Swift" mental context, I just have to focus on writing an app in
| 1 language.
|
| So before I commit fully I've been testing it out (building a
| demo app this week) and so far I am very impressed. The syntax to
| write platform-specific code (#if !SKIP #endif) is very easy to
| use once you get the hang of it.
|
| It's amazing I don't have to learn Android to get something up
| and running at this speed with Skip. Hitting run in xcode and
| watching both emulators open feels like magic. I want to put this
| to the test so I plan to build a complete App with it from start
| to finish, ship it to both App Stores, and if all that goes
| smoothly I will proceed to migrate my main app using Skip.
___________________________________________________________________
(page generated 2024-08-28 23:00 UTC)