Kotlin Multiplatform shares the code but not the build machine: the iOS app still needs macOS, Xcode and a JDK for the Gradle step Xcode runs, and that is usually where a team without Macs stops. VibeView cloud builds run that iOS build for you, with Compose Multiplatform or native UI, from Windows, Linux or a Mac.
The result opens on a live cloud iPhone or Android phone in a browser tab, side by side if you like, so a change in the shared module is checked on both platforms in the same minute. Share either build as a link, or let your coding agent install it and tap through it.
What the builders have for Kotlin Multiplatform
Android
The Android SDK with Java 17 and 21. A project that asks Gradle for a Java 21 toolchain gets it with no extra setup.
iOS
A managed macOS toolchain with a stable Xcode release, CocoaPods and Java 21, for the Gradle task Xcode runs to compile the shared module.
Your Gradle
The build runs your committed Gradle wrapper, which downloads your project’s Gradle version.
Every build log starts with the versions it ran, and the cloud builds docs list what each one needs.
How it works
- Run the build from your project root. For a project laid out like JetBrains’ template, the CLI suggests both commands, with whichever Android module your project has (androidApp or composeApp). Your answers are saved to vibeview.json.
npm install -g vibeview vibeview build --cloud --platform all - Check the shared code on both platforms. Open the Android build on a cloud phone and the iOS build on a cloud iPhone, share either as a link, or run a recorded test against each.
# what the CLI suggests for the template layout ./gradlew :androidApp:assembleDebug xcodebuild -project iosApp/iosApp.xcodeproj -scheme iosApp ... - Sign and ship. Add the signing block the App Signing docs show to your Android module’s Gradle file and build with --production for a signed .aab, then vibeview submit uploads it to a Play track. An iOS release goes to TestFlight the same way, with an archive command you write once.
vibeview build --cloud --production --platform android vibeview submit --platform android --latest --track internal
Then run the build on a live device
Here the device is part of your plan, not an add-on. Every simulator or emulator build lands in your app’s build history and opens on a cloud iPhone or Android device in your browser. Share it as a link with someone who has no Mac and no account, run your recorded tests against it, or let your coding agent install it, tap through it and check its own work.
What it doesn’t do
iOS builds download the Kotlin/Native compiler. Every iOS build fetches it before compiling, which adds a few minutes, because it is tied to your project’s Kotlin version.
iOS release builds need your command. The CLI suggests no iOS production command for a Kotlin Multiplatform project, because iOS signing is set up per project. The guide shows the archive command.
CocoaPods-linked shared modules need your command. When the shared module is linked through CocoaPods, pod install needs the framework Gradle generates first, so the CLI suggests no iOS command; write one that runs that Gradle task before pod install.
What it costs
Every plan includes cloud builds each month — 15 on Free, 25 on Dev, 65 on Starter and 330 on Pro. Beyond that, each build draws from usage credit: $1.50 per iOS build and $0.75 per Android build on paid plans, $2 and $1 on Free. Builds canceled while queued, or that fail for a reason on our side, are not charged. See pricing for everything each plan includes.
Keep going
- Kotlin Multiplatform cloud builds, step by step
- Kotlin Multiplatform in the cloud builds docs
- App signing and production builds
- Cloud builds for every framework
- Flutter cloud builds for iOS and Android
- Capacitor and Ionic cloud builds for iOS and Android
Frequently asked questions
Can I build the iOS app of a Kotlin Multiplatform project without a Mac?
Yes. vibeview build --cloud runs the Xcode build on a managed macOS toolchain that has a JDK for the shared module’s Gradle step, from Windows, Linux or a Mac. The simulator build opens on a cloud iPhone; a production build is a signed .ipa you can submit to TestFlight.
Does Compose Multiplatform work?
Yes. A Compose Multiplatform app builds like any Kotlin Multiplatform app: Gradle for Android, Xcode for iOS, compiling the shared Kotlin code on the way.
Why is the iOS build slower than the Android one?
Every iOS build downloads the Kotlin/Native compiler before it compiles, which adds a few minutes. It’s tied to your project’s Kotlin version, so it isn’t kept on the builders.
Which project layouts does the CLI understand?
The layout JetBrains’ template generates: an Android app module (androidApp or composeApp) and an Xcode project in iosApp/. For another layout, enter your own build commands; a cloud build runs whatever shell command you give it.