Swift and SwiftUI for Android. Build dual-platform apps for iOS and Android with Skip! skip.dev

Pinned Tweet
Android Development is now "Compose First", and so is Skip! Read about how the Google I/O announcement aligns perfectly with the Skip's dual-platform development philosophy, and what it means for the future of cross-platform app development. skip.dev/blog/compose-first/
2
13
1,219
After an amazing 10.5 years - followed by an insane few weeks - I have resigned from Twitter. Thread.
127
502
10,473
Building UI frameworks for my fellow iOS engineers, finding creative ways to add capabilities to our legacy code, enhancing our massive codebase while it remained in constant motion, and improving this app for users has been some of the most challenging work of my career.
3
22
1,690
It was an honor to do it with coworkers that cared about their users and each other. It was also my most impactful work. The questions surrounding Twitter’s future only remind us that, for all its faults, Twitter is important - both to millions of people and to world events.
2
42
1,544
I’m going to take a few months to work on some projects. Then I’ll be looking for a new opportunity with a Spring-ish start date. If you need a reference, or if you land somewhere that could use my particular skill set, I’m on LinkedIn and my DMs are open!
23
26
1,550
I’m rooting for Twitter, and I wish the best to my colleagues who remain there. Elon is right about one thing: a small team of great engineers and designers can accomplish amazing things. And you are exceptional.
2
36
1,317
I’m very interested to see what y’all can build when - for better or worse - you’re unfettered by constant experimentation, analysis, metrics chasing, and other constraints.
4
24
1,091
I’m thrilled to announce the tech preview of Skip: dual-platform app development in Swift. You write a modern iOS app in Swift and SwiftUI. Skip’s Xcode plugin generates a native Android Kotlin and Compose version! Docs: skip.tools/docs Video: skip.tools/tour
82
224
1,216
237,947
We’re thrilled to announce Skip 1.0! Skip brings Swift app development to Android. Share Swift business logic, or write entire cross-platform SwiftUI apps, with native performance and native UI on each platform Now free for Indies! skip.tools/blog/skip-1_0-rel…
53
165
1,242
142,246
Ironically, the better the departing Twitter engineers did their jobs, the longer Twitter will be able to coast on a skeleton crew without obvious failures hitting users.
10
58
694
It's here: fully native Swift and #SwiftUI apps for Android! That's right, compile your Swift/SwiftUI for both iOS and Android. Embed additional Kotlin and Compose as desired. Utilize the vast ecosystem of Android libs and Swift packages. Full post: skip.tools/blog/fully-native…
21
50
662
61,459
The Swift on Android Workgroup is now official! "The main goal of the Android workgroup is to add and maintain Android as an officially supported platform for the Swift language." swift.org/android-workgroup/
15
81
592
41,278
Twitter for Mac update available - our Big Sur-iest, M1-iest release yet! Fun fact: we don’t use UISplitViewController, so the translucency is a NSVisualEffectView inserted behind the Catalyst-hosting view on the NSWindow
19
30
475
The Skip team is thrilled to announce our first tech preview of a *native* Swift toolchain for Android! skip.tools/blog/native-swift…
11
50
492
35,131
Scrumdinger, Apple’s canonical #SwiftUI sample app, now runs natively on Android! See how we made this Swift app cross-platform in our post about bringing an existing iOS codebase to Android with Skip skip.tools/blog/scrumskipper…
15
38
489
65,812
This is a big one. The Skip team is thrilled to introduce using natively-compiled Swift to power full Android apps! Check out the blog post to learn more and create your first cross-platform compiled Swift app: skip.tools/blog/skip-native-…
15
47
455
34,588
When Trump brags about how great he is for African Americans, he isn’t addressing black voters. He’s addressing white voters trying to convince themselves that they aren’t voting for a racist #TrumpPressConference
11
97
343
Xcode 26's #SwiftUI API files have a combined 26,000 lines of diffs, but most is noise. We'll take the meaningful bits, use an LLM to generate stubs, then begin implementing important APIs for #Android! Of course your Swift will get the updates to Foundation, etc for free
8
15
414
77,998
New 3-minute demo for Skip. If you know devs who might be interested in fully native iOS *and Android* apps from a single Swift and #SwiftUI codebase, this is the video to send them! skip.tools/tour/skip-showree…
24
37
397
63,008
Sums up what it's like to develop any consumer product.
5
91
353
Google announces official backing of Kotlin Multiplatform for business logic at #GoogleIO What do you think, time for Apple to partner with Skip to officially back both #Swift logic and #SwiftUI on Android? I mean, we've already done the work :) skip.tools
21
37
365
38,839
The Skip team is proud to announce Swift Everywhere, with almost 2,000 Swift packages already building for Android! Learn how to get your Swift package running on Android and build full Android apps with @SwiftLang: skip.tools/blog/android-nati…
7
49
327
19,181
Compiled #SwiftUI on Android progress! With Skip's existing SwiftUI support and bridging technology, most functionality ports quickly. The biggest time drag is just the massiveness of the SwiftUI API surface area
Back from spring break with show and tell! Here is our Showcase app demoing #SwiftUI components on Android. First transpiled... and then COMPILED Swift & SwiftUI. A lot of SwiftUI support to fill in on the compiled side, but the skeleton - navigation, layout, etc - is alive!
6
21
275
55,157
Replying to @SwiftLang
Many folks have done incredible work bringing Swift to Android. Skip.tools is proud to be working group members. We've already seen how successful our customers can be writing x-platform Swift and #SwiftUI apps with our frameworks, and it's only going to get better!
6
8
249
19,759
Push notifications and deep links, the Skip way: you implement iOS's standard .onOpenURL and UNUserNotificationCenterDelegate, and it Just Works on your #AndroidDevelopment build too! Doc: skip.tools/docs/notification… Demo with deep link to settings tab:
3
18
212
19,971
Skip just got a massive user contribution: CoreBluetooth! Now your cross-platform Swift and #SwiftUI libs and apps can use CoreBluetooth to talk to devices without a separate #AndroidDevelopment code path skip.tools
3
10
210
14,678
Twitter for Mac is here! Helping to move a codebase as large and diverse as Twitter for iOS to a new platform - and doing it in a maintainable way - has been a helluva thing. We really appreciate all the feedback so far. Please keep it coming. Let the iteration begin!
9
14
180
New Swift for Android videos! 1. Getting Started with the Swift Android SDK: skip.tools/tour/swift-androi… 2. Creating iOS+Android Swift and #SwiftUI apps: skip.tools/tour/introduction…
2
24
186
12,340
Still very sad and not ready to talk about Twitter. But I can address the trivial: making EMs code is a horrible idea. For the sake of the codebase and everyone involved, while I remain I volunteer to let my EM steal however many of my patches they need to keep their job.
5
8
171
Blog post: Skip Swift and #SwiftUI apps work with iOS’ new #LiquidGlass design language from day one. Other cross-platform frameworks are not so lucky skip.tools/blog/skip-next-ge…
7
5
174
19,102
We believe that apps should use fully native UI, so Skip doesn't strive for pixel equivalence. Nevertheless, we recently updated our Android #SwiftUI support to match iOS a little more. Thread on the recent tweaks and their #JetpackCompose implementations skip.tools
8
11
164
24,168
Another new Swift and #SwiftUI app made with Skip just released simultaneously for iOS and Android. Looks great! Links in the reply...
4
5
161
11,596
If Skip's ability to convert iOS Swift/#SwiftUI apps to Android Kotlin/#JetpackCompose apps were AI-driven, it'd be way less reliable, hundreds of times slower, and consume an insane amount of energy. But it'd be super hyped!
1
7
143
8,429
Skip.tools, meet Fastlane.tools. Deploy your cross-platform #SwiftUI apps to both the #AppStore and #PlayStore with ease thanks to Skip and Fastlane. Read all about it: skip.tools/blog/2024-06-19-s…
2
10
138
11,454
And here's the official announcement!!
Announcing the Swift on Android Working Group, with the goal of establishing and maintaining Android as an officially supported platform for Swift. More here: forums.swift.org/t/announcin… #Android
3
6
139
8,543
I suck at non-technical communication in the best of times, and the layoffs hit like a truck. So to all my former co-workers I did not reach out to: you truly cared about your colleagues, your users, your craft. It was an honor. I hope this message finds you, and best of luck!
2
4
125
Given the progress on the Swift-Android toolchain and the thousands of packages available, we've updated our docs to recommend using compiled Swift and #SwiftUI for new x-platform apps! skip.tools
2
10
127
5,738
As you may have noticed, we’re now using native iOS 14 menus throughout the Twitter app. Big thanks to @mateuszdzwonek for figuring out how to use our existing code paths to display either our custom bottom sheet or a native menu based on iOS version and other factors
5
1
120
I don't think I had ever used #colorLiteral in Xcode, but a user pointed it out, so now Skip supports it in your #SwiftUI for Android too
4
5
122
13,708
A customer wanted to use .rotation3DEffect in their x-platform #SwiftUI app, so of course we added it for Android... skip.tools
3
4
120
12,224
Our blog post last week introduced compiling #Swift on #Android and powering a cross-platform app. But it's also worth browsing the complete docs: skip.tools/docs/native/
1
7
118
5,428
Compiled Swift and #SwiftUI on Android filling out nicely. Recently added some big surface areas like Path/Shape and Animation APIs. We're getting close to being able to port our first full sample app from transpiled to native Swift!
Compiled #SwiftUI on Android progress! With Skip's existing SwiftUI support and bridging technology, most functionality ports quickly. The biggest time drag is just the massiveness of the SwiftUI API surface area
2
8
118
15,039
Keep it on the DL, but as of a couple of weeks ago the Twitter app is using a tiny bit of SwiftUI. And more is coming. We’re keeping our UIKit infrastructure, but we’re seeing some success using SwiftUI for content layout within it.
1
3
108
I'm happy to announce that your cross-platform #SwiftUI apps can now use images from asset catalogs and - drumroll please - all SF Symbols! Even custom symbols On Android, symbols use #JetpackCompose vectors under the hood. Usage details in the docs! skip.tools/docs/
4
7
112
6,601
Another amazing user contribution to skip.tools: AVFoundation audio recording & playback on Android! Skip supports calling #Kotlin directly from your Swift/#SwiftUI, but with patches like these there is less and less of a reason to do so github.com/skiptools/skip-av…
4
5
111
5,785
When we first decided to support #SwiftUI in addition to Swift business logic for #Androiddevelopment, we weren't so sure we'd be able to implement components like GeometryReader and ScrollViewReader skip.tools
4
9
107
8,846
Skip's cross-platform #SwiftUI maps .refreshable(...) to the Material PullRefreshIndicator in #JetpackCompose Fun fact: I began working at Twitter in 2012, not long after inventor of pull-to-refresh @lorenb left the company skip.tools
3
7
106
6,416
As I ingest #WWDC24, it's awesome how much new functionality you get for free when you use native components That's why skip.tools uses your native Swift and #SwiftUI on iOS, and translates it into native #JetpackCompose on Android. *Fully native* dual-platform apps
4
4
103
10,275
Please let us know about bugs and regressions! But remember to be kind: most Mac work is done because an engineer was able to make time for it. Managers for a mass market app like Twitter are (correctly) focused on finding the largest audience... and that’s not the Mac
22
2
100
Tip: any Swift code in SKIP blocks can interact directly with Kotlin, including #JetpackCompose. We transparently transpile SKIP code to Kotlin, then bridge it back to your native Swift. Here a user integrates custom Compose into his #SwiftUI using a ComposeView #SwiftForAndroid
2
8
105
9,195
This appeared in my timeline today from a Retweet. I dunno about Flutter, but pretty much just a copy-paste job for x-platform #SwiftUI with skip.tools!
I hope folk know that I'll _always_ be a big fan of Flutter. But here is an example of the kind of screen that SwiftUI makes really easy. A fun Friday challenge: try and recreate this in #Flutter :)
6
4
108
22,689
Latest addition to #SwiftUI on Android: the .redacted modifier. Devs often use this to create placeholder UI Here I've applied .redacted to the Image playground in our Showcase x-platform SwiftUI app skip.tools
3
1
105
11,670
I don’t have much to say on the Twitter takeover, except that I still think my team is working on the right things, and my plan is to wait and see. Things often work out in surprising ways. I feel very fortunate to be in a position where options will aways be open to me.
1
3
95
Markdown support has landed in cross-platform #SwiftUI! Did you know that SwiftUI's Text view includes both implicit localization lookups and markdown formatting? Skip has long supported the former, but we hadn’t yet implemented the latter - until now! skip.tools
3
7
101
4,857
Added the poster view to our cross-platform #SwiftUI sample app too! skip.tools
I demo cross-platform #SwiftUI a lot, but skip.tools lets you mix Swift/Kotlin however you like! New sample uses a Swift model to power separate iOS+Android apps. Skip magic makes your Swift Observables “just work” with Compose state tracking github.com/skiptools/skipapp…
1
5
103
8,628
Marc and I will be hosting the next Skip webinar tomorrow! If you're curious about developing dual-platform iOS + Android apps in #Swift and #SwiftUI - including differences from solutions like #React and #Flutter - consider signing up! skip.tools/webinar/
3
4
100
5,837
Let's Retweet this one far and wide, folks!
We’re thrilled to announce Skip 1.0! Skip brings Swift app development to Android. Share Swift business logic, or write entire cross-platform SwiftUI apps, with native performance and native UI on each platform Now free for Indies! skip.tools/blog/skip-1_0-rel…
4
17
101
7,702
Skip docs have been comprehensively updated for native Swift on Android! Things are a bit complex until we finish compiled #SwiftUI support in the coming weeks, and native is still evolving quickly overall. But this reflects its importance moving forward! skip.tools/docs/
1
4
100
6,933
Skip now enables #JetpackCompose edgeToEdge by default, so your #SwiftUI on Android uses the entire screen. Of course we support .ignoresSafeArea to control what content extends behind bars. Enjoy! skip.tools
5
6
98
13,114
Curious what it looks like to call @Kotlin or Java from your native @SwiftLang with Skip? How about embedding #JetpackCompose in your #SwiftUI on Android, like this Google maps integration? This doc chapter has you covered skip.tools/docs/platformcust…
1
5
99
4,323
Getting some great contributions to x-platform #SwiftUI for #Androiddev lately, including .page TabViewStyle. Running the user’s test code made me LOL
3
5
92
9,144
#SwiftUI implicitly fades conditional views in/out of existence if you put the triggering state change in withAnimation { ... }. This works on Android, but a documented-but-not-obvious requirement is that each view in the container needs a .id value skip.tools
5
4
92
11,681
Replying to @SwiftLang
And we're working with the community to get Android officially added to that list... skip.tools
3
1
92
6,338
The client apps should be able to go on for quite a long time before developing issues. But I can’t imagine any back end at this scale can survive too long without skilled maintainers. I hope there are enough left.
1
1
85
The Swift Package Index is now tracking Android support! It's easier than ever to pick from thousands of compatible packages when building your x-platform Swift apps. Use Skip Fuse to fuse to a Compose or SwiftUI-on-Android UI swiftpackageindex.com/blog/a…
2
9
93
6,611
Myself and a few others were invited to Apple labs to create Twitter for Mac in a very short time using a pre-release of Catalyst. It never got much in the way of resources - it's amazing it lasted as long as it did! 9to5mac.com/2024/08/01/twitt…
6
3
87
8,225
Skip lets you integrate pure #JetpackCompose into your #SwiftUI, but we've had requests amounting to "I want to use SwiftUI but customize the underlying Compose colors/components". So we've added some Android-only Compose and SwiftUI API to do just that! skip.tools/docs/modules/skip…
6
1
81
5,684
I had forgotten about this little feature of #SwiftUI until a user requested it yesterday: now Skip supports TextField/SecureField in .alerts on #Android too skip.tools
3
6
82
9,136
I demo cross-platform #SwiftUI a lot, but skip.tools lets you mix Swift/Kotlin however you like! New sample uses a Swift model to power separate iOS+Android apps. Skip magic makes your Swift Observables “just work” with Compose state tracking github.com/skiptools/skipapp…
4
3
83
15,867
Inherited some complex auto layout that works on iOS 11 but not iOS 9/10. I’m reminded once again why I like manual layout. While it may be ugly, it is *never mysterious*. I’ll take that tradeoff every time.
8
21
83
"Scrolling like it's 2008": #SwiftUI, #JetpackCompose, and cross-platform app performance skip.tools/blog/scrolling-li…
2
6
80
13,683
I’ve been monitoring feedback on our new iPad layout. This Tweet is perfection.
2
74
Skip transpiles Swift to #Kotlin and #SwiftUI to #JetpackCompose. But SwiftUI doesn’t cover it all, so we do a tiny bit of UIKit too, including haptics, pasteboard, and now UIApplication.applicationState for app background/active state! UI support doc: skip.tools/docs/modules/skip…
2
6
74
4,002
Skip Fuse supports thousands of @SwiftLang packages on Android, including @Supabase. And now we've bridged our Android @Firebase support to native Swift as well. Take your pick! skip.tools
2
3
75
4,019
Many Skip devs come from iOS. They’ve gotten used to the idiosyncrasies of iOS app deployment, so they’re surprised when #AndroidDevelopment deployment proves challenging. We’ve beefed up our docs on deploying your x-platform Swift/#SwiftUI apps to help! skip.tools/docs/deployment/#…
1
2
76
3,435
One weakness of #JetpackCompose is navigation. #SwiftUI allows you to push arbitrary views, map data to views, even bind to a mutable list of data mapped to the nav stack. In Compose you define routes Luckily skip.tools Swift-on-Android impl includes SwiftUI nav...
3
2
76
11,874
Cross-platform deep link handling in SwiftUI with skip.tools #iosdevelopment #Androiddevelopment
8
71
4,363
A couple more important patches to put up Then a doc on the state of iOS UI infra and needed next steps No decision has been made, but then I’ll feel ready
4
2
72
skip.tools creates a fully native Android app from your iOS Swift + #SwiftUI code, with fully native performance. So it was killing us that in our webinars, the Android app always looked dog slow. It seemed to sample at less than 1 FPS We finally discovered why! ->
4
1
75
8,289
Back from spring break with show and tell! Here is our Showcase app demoing #SwiftUI components on Android. First transpiled... and then COMPILED Swift & SwiftUI. A lot of SwiftUI support to fill in on the compiled side, but the skeleton - navigation, layout, etc - is alive!
8
1
73
48,217
Starting tomorrow, our travel plans are mostly over. The rest of the summer should bring some rapid advancements to cross-platform #Swift and #SwiftUI from the team! Looking forward to all the fun projects and announcements ahead skip.tools
2
72
2,529
Is there a German word for code that should be rewritten because it’s ridiculously over-engineered and incomprehensible, but at the same time it does something really important and just complex enough that a re-write would be too dangerous?
21
5
69
Latest skip.tools transpiles Swift 5.10 to #Kotlin 2.0. Now the next step begins... hackingwithswift.com/article…
3
1
71
4,157
Complex component built on #SwiftUI Shape/Path API running on Android with skip.tools. Another cool sample posted to our Slack from @Szymon_Lorenz
3
2
71
5,089
Implementing SwiftUI's .colorScheme and .preferredColorScheme for Android was interesting! Here's me exercising it in our pure Swift+SwiftUI dual-platform Showcase app skip.tools
2
6
71
11,409
Hey Tim, have your people call our people…
6
1
71
8,837
Nice Sunday surprise: a new user just sent their first prototype with x-platform Swift and #SwiftUI using skip.tools. So fun, and the music is great! We love getting this stuff Source: github.com/c-villain/Sneaker… User's channel: t.me/swiftui_dev
2
2
68
4,772
Another amazing user contribution to x-platform #SwiftUI: @FocusState and .focused on Android! The #Androiddev implementation uses a FocusRequester under the hood
1
4
62
4,875
Interfacing with the OS is key for x-platform development. Skip lets you call Java/Kotlin API directly from your Swift and #SwiftUI. Link to #AndroidDevelopment libs, or drop .kt files into your project. And now you can add Java files to your project too! skip.tools/docs/platformcust…
4
65
4,573
Modern #SwiftUI can do so much in so little code. And thanks to skip.tools, it can do it on #Android too! Our starter template has tabs, nav, prefs, theming... all in about a screenful of code github.com/skiptools/skipapp…
3
4
65
8,279
Swift for #Androiddev is moving towards official status, folks. skip.tools already supports a compiled Swift model powering a Compose or transpiled #SwiftUI interface, and we'll support compiled SwiftUI in the coming weeks! forums.swift.org/t/swift-on-…

ALT Official History GIF

5
5
67
4,959
I'm on vacation so not posting much, but that doesn't mean Skip has paused! Some recent additions to #Swift + #SwiftUI for #AndroidDev: - Modal sheet detents (user contribution!) - PDF vector image assets - Haptics - Improved error msgs from our tools skip.tools
2
58
2,709
We announced building apps with *native* Swift on Android a few weeks ago, and we've already significantly enhanced the compiled Swift that can be transparently used from Kotlin. Latest additions include Any/AnyHashable values, inheritance, and actors! skip.tools/docs/native/#brid…
2
62
2,735
Thank you @9to5mac for featuring Skip! Very appropriate that the author @mbrkhrdt also has an Indie App Spotlight series, given that Skip is now free for Indies!
'Skip' is a new tool to bring iOS apps to Android 9to5mac.com/2024/08/17/skip-… by @mbrkhrdt
3
4
61
4,003
Skip supports #SwiftUI Shape and Path API on top of native #JetpackCompose paths (which I'm pretty proud of), but a user reported that hit testing wasn't taking the shape into account. Spent some time improving that today skip.tools
2
5
63
5,094
We’ve finally begun to put together a news and press page for x-platform Swift and #SwiftUI with Skip! Please contact us if you’d like to submit a quote or app to cycle into the featured sections! skip.tools/news/
4
59
2,151
Our Android #SwiftUI support doesn’t include maps yet, so damn is it nice to be able to just embed #JetpackCompose calls skip.tools
3
4
62
4,686
New voiceover on the 3-minute skip.tools demo video that works better for a viewer who is technical, but may not be a mobile dev. Feel free to share with your product managers, etc if you want to try using Swift and #SwiftUI for Android too! piped.video/rfo3Mci63ts
4
4
61
2,935
Swift 6's typed throws was an interesting feature to add to skip.tools. Check out the implicit typing you get on 'throw' and 'catch' when the compiler knows the error type! We'll release initial Swift 6 support for #Kotlin/Android later this week!
1
58
3,001