Quick start
From an installed xcross to a running Flutter or Compose Multiplatform app on a real iPhone.
Assumes xcross is installed. Pick your framework once, and every tab on the site follows.
1. One-time setup
- 1Install host tools$
xcross setup - 2Extract the iOS SDK$Takes a while. See Darwin SDK.
xcross sdk install ~/Downloads/Xcode.xip - 3Sign in$A free Apple ID works. See Authentication.
xcross auth --apple-id you@example.com
- 1Install host tools$
xcross setup - 2Install Kotlin/Native helpers$Needs JDK 21+.
xcross compose setup - 3Extract the iOS SDK$Takes a while. See Darwin SDK.
xcross sdk install ~/Downloads/Xcode.xip - 4Sign in$A free Apple ID works. See Authentication.
xcross auth --apple-id you@example.com
2. Check everything
xcross flutter doctor
xcross compose doctor
Read-only, from your project root. Checks the project, toolchain, SDK, auth and devices, grouped by section. Fix anything red.
3. Connect and run
- 1Start the tunnel (once per reconnect)$Admin PowerShell on Windows,
xcross tunnelsudoon Linux. Add--wififor wireless. - 2Run with hot reload$
xcross flutter run
- 1Start the tunnel (once per reconnect)$Admin PowerShell on Windows,
xcross tunnelsudoon Linux. Add--wififor wireless. - 2Run with the restart loop$
xcross compose run --watch
While it runs
rHot reload
RHot restart
qCtrl-CQuit
rRebuild, reinstall, relaunch
qQuit
TipSeveral iPhones? You get a picker. In CI, pass -u <UDID>.
On the first device run xcross asks whether to register the original bundle id or an XCR- prefixed one, and saves the answer as bundle_id in your project. Commit it so CI and IDE runs agree. See App ID on first device run.
After that first online run, the app keeps signing and installing without a network. See Working offline.