Guide

    Kotlin app builders in 2026

    This category changed in May, when Google started generating native Kotlin and Jetpack Compose projects from a prompt, for free, as the platform owner. If you want one Android app, that is probably where you should start. The interesting question is what happens when you also need iOS.

    Start here

    If you want a single Android app and nothing else, try Google AI Studio first. It generates a standard Gradle project in Kotlin and Jetpack Compose, it runs in a browser emulator, and you can download the whole thing as a ZIP and open it in Android Studio. It is made by the company that makes Android. We are not going to pretend that is not a strong starting point.

    Read its documented limits before you commit to it, because they are specific and they are the sort of thing you discover late. No server-side component. Compose only. Single-activity, single-module. No C or C++. Phone and tablet only. Play Store publishing to the internal testing track only.

    And Google's documentation covers Android alone. It does not mention iOS — which is not the same as saying it cannot, but it does mean there is nothing published to plan around.

    Modaal's argument is not that it writes better Kotlin than Google. It is that the Kotlin it writes shares its logic with your Swift, and the agreement between them is enforced by tests rather than by intention.

    What Google AI Studio actually generates

    Google's documentation is unusually specific, which makes it easy to plan around:

    "Google AI Studio lets you build native Android apps from a natural language prompt. Describe the app you want, and the Antigravity Agent generates a complete Kotlin and Jetpack Compose project."

    What lands on disk:

    "a standard Gradle-based project with the following structure: Build configuration: build.gradle.kts files (project and app level) using Kotlin DSL. UI layer: Jetpack Compose components with Material 3 theming. Architecture: single-activity architecture with ViewModels and data classes."

    And there is a real exit: "To continue development in Android Studio, download the project as a ZIP file."

    That is a genuine native Android project written to Google's own recommended patterns, from a prompt, with no local toolchain required to start. A year ago nothing like it existed.

    The limits, in Google’s own words

    These are quoted from Google's documentation rather than characterised, because the specifics matter more than the summary.

    No server side. "Client-side only: Android apps don't include a server-side component." Anything needing a server runtime — Google names "secrets management, multiplayer, Firebase, Google Workspace APIs" — is "not available." If your app has accounts, that is a hard boundary.

    Compose only. "Jetpack Compose only: apps use Kotlin and Jetpack Compose. Java and XML layouts are not supported." Fine for something new; a wall if you have existing XML layouts.

    One module. "only single-activity, single-module projects are supported." Which is exactly the shape that stops working as an app grows, and it is not a shape you can grow out of gradually.

    No native code. "C and C++ code is not supported."

    Phones and tablets. "only phone and tablet form factors are supported." No Wear, no TV, no Auto.

    The browser emulator has gaps. No camera or photo capture, no NFC, no Bluetooth, simulated GPS only, and no Google Play services. So the features people most often want on a phone are the ones you cannot test in the environment you are building in.

    Distribution stops short of production. Publishing goes to "the internal testing track only. Production releases must be managed directly in the Google Play Console."

    None of this makes it a bad product. It makes it a prototyping product with an honest export path, which is roughly what Google describes it as.

    The iOS question

    Google's Android documentation does not mention iOS. That is silence rather than a denial, and it would be unfair to characterise it as one — but silence is not something you can build a plan on either.

    Google did separately preview a Migration Assistant in Android Studio at I/O in May, described as designed to "port apps from platforms like iOS, React Native, or web frameworks to native Android", mapping features and converting assets into Compose. Worth watching. It was announced on the Android Developers Blog rather than documented on developer.android.com, so as of today it is a preview rather than something to plan a product around.

    Note the direction, too. The Migration Assistant moves work toward Android. It does not keep two platforms in step afterwards, which is the part that costs money for years rather than weeks.

    The problem that shows up in month six

    Most tooling comparisons are about the first afternoon. The cost that actually accumulates is different.

    Once an app exists on two platforms, the expensive thing is not writing either one. It is that they slowly stop agreeing. Someone fixes a validation rule on iOS. The Android version keeps the old one. A retry policy gets tightened on one side. An empty state behaves differently. None of it is dramatic and none of it shows up in a demo, and eighteen months later you are maintaining two applications that resemble each other.

    The standard answers each trade something away. A cross-platform framework shares the logic by sharing the rendering engine, so neither interface is the platform's own. Writing both natively keeps both interfaces real and hands the drift problem straight back to you.

    What Modaal does differently

    Duet takes a narrower position: share the logic, render natively, and make the agreement testable.

    "Each feature's logic — its state, the actions that change it, the effects it requests — is written once. The iPhone app renders that state in SwiftUI; the Android app renders it in Jetpack Compose."

    Nothing renders through a shared engine. Each app follows its own platform's conventions — Apple's Human Interface Guidelines on one side, Material 3 on the other.

    The enforcement is the part worth understanding:

    "Behavior is recorded as fixture files. Both platforms replay the same fixtures and the gate is byte equality."

    The build fails when the platforms disagree. Parity is not a review discipline that erodes; it is a test that either passes or does not.

    What that looks like in practice. Modaal's documentation describes an app called Memory Lane that was built on iOS first and later gained Android: sixteen Android product surfaces, 134 of 134 parity gates passing, and zero shared-logic files changed — no fixtures needed re-recording, because the Kotlin was written against fixtures the Swift had already produced. The standing ledger of deliberate divergences is six island entries and no manner waivers.

    Android is in open beta, with general availability in September 2026. You can join the beta.

    When not to use Modaal

    Two situations where the answer is plainly something else, and it is better to say so here than to have you find out after installing.

    You want Android only. Modaal is a macOS app that builds through Xcode. It needs a Mac, Xcode 26 or newer and roughly 50 GB of disk. Requiring the Apple toolchain to ship an Android app is an absurd trade if you are never going to ship an iOS one. Use Google AI Studio, or Android Studio with Gemini's Agent Mode.

    You already have an app you did not build in Modaal. Modaal cannot open an existing Xcode or Android Studio project. The Duet migration path runs from projects Modaal scaffolded itself — an iOS app built here can gain Android one feature at a time, but a codebase that came from somewhere else cannot be brought in. If you have a shipped app and need the second platform, this is not your tool. The honest options are a rewrite, Kotlin Multiplatform for the shared layer, or an agency.

    Modaal is for the case where an app should exist on both platforms and you would rather the two versions be provably the same product than nominally the same product.

    Frequently asked questions

    For a single Android app, Google AI Studio is the obvious first stop — it generates a standard Gradle project in Kotlin and Jetpack Compose from a prompt and exports as a ZIP you can open in Android Studio. Read its documented limits first: client-side only, Compose only, single-activity and single-module, and Play publishing to the internal testing track only.

    Its documentation covers Android and does not mention iOS. That is silence rather than a stated limitation, so there is nothing published either way — but there is also nothing to plan around.

    From Google AI Studio, yes — download the project as a ZIP and continue in Android Studio. From Modaal, the project is on your own disk from the first build with no export step; it is a standard project you can open, refactor and hand to another engineer.

    Yes, and that is a real cost. Modaal is a macOS app that builds through Xcode, so it needs a Mac, Xcode 26 or newer and roughly 50 GB of disk. If you only ever intend to ship Android, that is a poor trade and Google’s tooling is the better answer.

    Native Kotlin with Jetpack Compose, following Material 3, as an Android Studio project. The application logic is shared with the iOS app through Duet rather than reimplemented, and parity between the two is enforced by fixtures replayed on both platforms at byte equality.

    It is in open beta now, with general availability in September 2026. Modaal Free builds one platform of your choice; building iOS and Android together is part of Pro.

    Related

    Start building for free

    Build for as long as you want on the Free plan. Only upgrade when you're ready to launch.