The devs behind Skip tell AP how the walls between Android and iOS may soon come down

8 min read Original article ↗

4

Daniel writes guides on how to use the internet, explainers on how modern technology works, and the occasional smartwatch or e-reader review. He especially likes deep diving into niche topics that require more than scratching the surface (check out his explainers on mobile photography). He's been writing in newspapers, magazines, and blogs for over 20 years writing hard news, entertainment, and science stories.

When not writing, he enjoys reading science fiction, playing music, and raising a rambunctious toddler. The devices you'll find him using every day are his Pixel 4a (he'll upgrade in 2024, ignore this story), Lenovo Flex 5i Chromebook, and Amazon Fire HD 10. Eventually he's going to upgrade his Ender 3 to direct drive so he can print TPU...

There are two options for making mobile apps: Android and iOS. Modern Android apps are written in a programming language called Kotlin, and iOS apps are written in Swift. Although there are similarities between the two languages, they are different enough that all but the largest developers tend to focus on one to the exclusion of the other.

There are cross-platform development solutions that let app makers write one program and export it to Android and iOS (Flutter and React Native are two of the most popular). Still, they have compromises that may be unacceptable from a user and developer perspective, particularly regarding performance. That means mobile app developers have had to choose between developing exclusively for iOS or Android, expending extra resources on developing for both platforms, or sacrificing performance by developing with a non-native cross-platform framework.

Thanks to a new technology, developers may no longer have to choose which bitter pill to swallow. Skip is a transpiler that converts iOS-native Swift code into Android-native Kotlin. Developers can now work exclusively in Swift while developing for today's best Android tablets and avoiding the pitfalls of cross-platform frameworks.

Who are the talents behind Skip?

Skip is the brainchild of developers Marc Prud'hommeaux and Abe White. Marc and Abe have known each other for about 25 years and worked together on several successful companies, the most prominent of which was Stanza, one of the first e-reader apps released for iOS in the late 2000s. Stanza was so successful that Amazon bought it and brought Marc and Abe on to develop the Kindle app for iOS and Android. So, is this the superhero origin story of Skip?

Headshots of Marc Prud'hommeaux and Abe White
Source: Skip

"Yes!" Abe told me. "Perhaps not directly, but the struggle to get from one platform to the other has been a nagging preoccupation for us ever since we were fielding requests to bring Stanza to Android from iOS. As it happens, the first prototype of Stanza that we developed in 2008 was actually implemented for Android before the iOS SDK was even announced. We decided to focus on the iPhone version once it launched on the App Store, but we were always fielding user requests to release an Android version." Thus, the seed for Skip was planted.

It is extremely difficult to build and ship an app for even a single platform. Shipping for two very different platforms is simply outside the abilities for most small teams.

Developing for both platforms can be a pain, even for large teams. "It is a massive effort to coordinate two different mobile development teams writing apps for the two different platforms," said Abe. "Feature parity needs to be synchronized, bugs need to be addressed in lockstep, and platform differences need to be accommodated. We experienced this ourselves when we went on to work on the Kindle team at Amazon, where we went back and forth between the iOS and Android teams working on the Kindle app."

After Kindle, Marc and Abe went their separate ways. Abe was one of the first mobile developers for Twitter. "I started at Twitter when there were only a handful of mobile developers," he told me. "We all did a bit of everything. As the team grew and specialized, I became the tech lead for iOS user interface frameworks within the company. My team was responsible for providing Twitter developers with great tools to help them add features efficiently."

And Marc? "While Abe was at Twitter, I was consulting and contracting on a variety of projects, working on all manner of large and small apps, including for major clients like the New York Times and Bose."

The two kept in contact for nearly a decade despite working on different projects. "During this period, Abe and I would intermittently reach out to each other to talk about the side projects we were working on," particularly cross-platform development. "These discussions turned into experiments – some of them fairly wild – but slowly, these coalesced into what Skip is today. We realized pretty quickly that we were on to something big, which is when we decided to go all in on the project."

How does the Skip transpiler work?

Explaining what an app is and how to build one

All apps, whether iOS or Android, work similarly. Abe explained: "To make a modern Android app, you code in a language called Kotlin and construct the user interface (UI) with a framework called Jetpack Compose. You write your code using one of several IDEs (Integrated Development Environments), with Android Studio probably being the most popular. You specify any localizations, images, and other resources your app needs using formats defined by Android."

Making an iPhone app isn't much different. "The iPhone app development pipeline has the same elements, but the technologies are different. To make a modern iPhone app, you code in a language called Swift and construct the user interface with a framework called SwiftUI. You write your code using Apple's Xcode IDE, and you specify your resources using Apple formats."

Skip wouldn't have been possible only a handful of years ago.

Notice how the building blocks of making an app are similar between the two platforms? That's something relatively new and most of what makes Skip possible. The rest is due to changes in how UIs are implemented.

According to Abe, "There has been an industry-wide shift in the model for programming user interfaces. The first generation of app development typically used separate data files to define the layout of the UI." Things began to change about five years ago when Apple made SwiftUI, a framework for creating UIs programmatically. Google followed suit shortly after with Jetpack Compose.

Skip running on Xcode
Source: Skip

"The implementation details of Compose and SwiftUI are drastically different," Abe told me, but "these two interface-in-code approaches are startlingly similar in many respects, and functionally, they tend to offer very similar capabilities." This is the final key that led to Skip.

Getting started with the Skip transpiler

You'll find the nuts and bolts of how Skip works in the documentation on the Skip website). To start, you'll need Xcode. Skip is a plugin for Xcode that only transpiles from Swift into Kotlin, not the other way around. When asked if he has plans for a Kotlin-to-Swift transpiler, Abe is blunt: "Nope." This isn't due to iOS elitism but how each programming language handles memory. "Even if all the logic and data structures could be translated perfectly, the result would be one giant memory leak because Kotlin code assumes that memory will be cleaned up by the garbage collector."

Samsung Galaxy S24+ vs. Apple iPhone 15 Pro

Ideally, when using Skip, a developer will spend all their time in Xcode coding in Swift. According to Marc, "When you test your app during development … it launches on both your iPhone and Android devices or simulators! Skip doesn't interfere in the iPhone build, and it generates and builds the Android version on the fly. So you see the two versions of your app running side-by-side."

The future of the Skip transpiler

Skip is still a young technology. Marc and Abe officially launched version 1.0 of Skip in August, but they think they're on to something. "The reception that Skip has received so far validates that many others share our belief," they said. "Regardless of whether we continue to iterate on Skip by ourselves or with others, we believe the future is bright, both for us, as well as the developers who adopt Skip as their tool to reach the entire mobile marketplace."

There's no telling what sort of impact Skip will have going forward. Hopefully, Android users will see some iOS-exclusive apps like Procreate or Garageband land on their devices. In the meantime, users can make an Android phone look and feel like an iPhone.