[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)