Run and debug Flutter iOS apps
from Windows or Linux. Without a Mac.
xcross reimplements the Flutter iOS run pipeline and the iOS 17+ CoreDevice launch protocol in pure Dart. Launch on a real iPhone with full hot reload, breakpoints and DevTools - straight from Windows or Linux.
No Mac. No Xcode. No macOS anywhere.
irm https://raw.githubusercontent.com/arxdeus/xcross/main/install.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/arxdeus/xcross/main/install.sh | shNeeds on the host
Flutter
app SDK + engine artifacts
Swift
SwiftPM plugins & glue
LLVM
clang, ld64.lld
Python 3
pymobiledevice3
Xcode.xip
SDK input, processed once
Capabilities
Everything the official toolchain does on a Mac - reimplemented.
xcross does not wrap or patch Flutter’s iOS tooling - it refuses to run off macOS. Instead it re-implements the parts that matter for running and debugging on a device, using the same engine artifacts, the same compilers and the same device protocols.
Native Windows & Linux
Runs directly on the host with the official Swift and LLVM toolchains - no macOS VM and no remote Mac. WSL works too, once the device is attached with usbipd-win.
Hot reload & hot restart
The full r / R workflow on a real iPhone over an iOS 17+ RSD tunnel, backed by a faithful DevFS reimplementation.
Real devices, your Apple ID
A free Apple account is enough, or use an App Store Connect API key. Provisioning and install happen in-process, with no external Apple tooling.
SwiftPM plugins
Swift Package Manager iOS plugins work on both hosts and load into your running app through a Flutter-compatible registrant.
IDE debugging
One command wires up VS Code (F5, breakpoints, DevTools) or JetBrains IDEs through a Debug Adapter Protocol server.
No Xcode in the loop
Everything runs on your host with Flutter’s own engine artifacts, untouched. Xcode’s toolchain is never installed and never executed.
Scope
xcross targets debug (JIT) runs on a device. Release/AOT output still requires Flutter’s macOS tooling, and launching needs iOS 17+.
Quick start
Four commands to a running app.
Install and set up the host
The installer adds xcross to your PATH and reports anything missing. Then setup installs the remaining host dependencies.
xcross setupPrepare the private Darwin SDK
Runs once. Pure-Dart xar / pbzx / cpio readers extract the iOS SDK and frameworks from an Xcode archive.
xcross sdk install ~/Downloads/Xcode.xipSign in with your Apple ID
Only the resulting Developer Services session is stored - never your password. A free Apple account works.
xcross auth --apple-id you@example.comStart the tunnel, then run
Mount the Developer Disk Image once per device reconnect, then launch on the device and hot reload as you edit.
xcross tunnel && xcross flutter run