Swift Stream IDE: Announcing Android App Target

Hi everyone!

I am excited to share that with Swift Stream IDE v1.17.0, released on December 31, 2025, full native Android application development in Swift is now possible.

This release achieves a milestone I’ve been working toward since May 2025, allowing you to write Android apps entirely in Swift, without touching XML, Java, or Kotlin.

If you have been following Swift Stream IDE, you know it previously supported Android library development. That was the foundation for the next level, and now the IDE supports full Android application development . You can create new projects using familiar Android Studio templates, such as Empty Activity, Basic Views, or Navigation UI, all written in Swift.

Under the hood, projects are powered by SwifDroid , a framework I built to fully integrate with the Android platform. SwifDroid lets you write an entire Android app in Swift, from the manifest to the UI widgets. Activities and fragments are declared in Swift, and the underlying Java classes are generated automatically. UI widgets can be composed using result builders. The framework gracefully handles the application lifecycle and configuration changes, and it automatically wires Gradle dependencies. Overall, development feels very Swifty while giving you full access to the Android API. The goal is to cover the entire Android app development API while keeping the workflow natural for Swift developers.

Here is a small example of how UI code looks:

And how entrypoint code along with the manifest looks like:

Make yourself a cup of tea/coffee as the first run pulls the toolchain, SDK, and NDK, so it may take some time. Later, they are cached in Docker volumes, and new projects are created instantly.

During the first build, the IDE not only compiles Swift, but also generates a full Android project (which you can later open in Android Studio) and creates a Gradle wrapper. After that, builds take seconds.

Once Swift is compiled, you can simply open the Application folder in Android Studio and hit Run or Restart to see your changes. All necessary files from Swift Stream IDE are already in place, so iteration is fast and seamless.

Shoutout to @purpln for highlighting approaches with MainActor and native print , which were very helpful while shaping the project. Be sure to check out his contributions to Swift on Android over on his GitHub.

I’m continuing to iterate on SwifDroid, its docs, and the IDE, adding more widgets and APIs. There’s still a lot of work ahead since Android is huge.

You can start playing with it today, and I’d greatly appreciate your feedback, feature requests, and contributions.

11 Likes

Congratulations on the release! Are you using your own custom build of the Swift SDK for Android, or a preview build of the official one (Getting Started with the Swift SDK for Android | Swift.org)? We'd love to get as much feedback as possible on the nightly-6.3 builds in advance of the release.

Also, I notice in your description of JNIKit:

It is a foundation library that provides best in class Swift layer for Java Native Interface with automatic memory management, convenient methods to work with Java objects, beautiful wrappers for Java types, and more.

Yeah nah it's not swift-java, it's an alternative foundation provided by the Swift Stream Family.

If swift-java isn't a good fit for your project, might you consider sharing the lower-level JNI currency types if they were to be broken out into a separate package (as I had proposed at Android, Java, and SwiftJNI)? That would at least facilitate sharing Android-capable frameworks between the various projects that are evolving in the Swift-Android ecosystem, and would help reduce fragmentation and duplication of effort (e.g., a dozen different bluetooth integration libraries when a single one could work for everyone).

3 Likes

Wow im so impressed on the work you have done!!! I migrated 100% of my code base (structs enums and more) in less than a couple of hours !!

2 Likes

Congratulations on the release!

Thanks!

Are you using your own custom build of the Swift SDK for Android, or a preview build of the official one?

I initially started with @finagolfin’s SDK, but since Swift 6.2 I’ve switched to the official Swift SDK for Android.

We'd love to get as much feedback as possible on the nightly-6.3 builds in advance of the release.

I haven’t had a chance to try the nightly 6.3 builds yet, but I’ll definitely share feedback once I do.

...might you consider sharing the lower-level JNI currency types if they were to be broken out into a separate package (as I had proposed at Android, Java, and SwiftJNI)?

I did read the proposal you mentioned. As of now, swiftlang/swift-jni does not seem to have materialized yet, so it’s still hard to reason about concrete integration points. I tried to imagine something similar to how swift-nio works as a shared foundation, but I’m not yet able to project that to something lower-level than what JNIKit already provides. I’d definitely love to see more concrete details evolve in the referenced thread.

4 Likes