Ship the iOS version of your Flutter app, from Windows

Keep writing Dart on your PC. When it’s time for iOS, open a real Mac mini and let Xcode do the Apple part.

Where the Mac fits in a Flutter project

Flutter lets you write one Dart codebase for Android and iOS, and most of the work happens in your editor on Windows. The iOS build goes through Xcode, which runs on macOS: compiling the iOS app, running it in the Simulator, signing it and uploading it to App Store Connect.

A rented Mac mini M6 covers exactly that part. You keep developing on your PC, push to Git, and open the Mac when you want to see the iOS version or ship it. Everything else in your workflow, from Android Studio to your Android release pipeline, stays as it is.

Setting up Flutter on the Mac

After your first login, install Xcode from the App Store with your own Apple Account, then open it once to accept the licence and let it install its components. Install Flutter by cloning the stable branch with Git or with a version manager such as FVM, and add CocoaPods with brew install cocoapods.

Run flutter doctor to confirm that Xcode, CocoaPods and the iOS toolchain are ready. Clone your repository, run flutter pub get, and the project is ready to build. If you keep the Mac for a week or a month, all of this stays installed, so later sessions start with a git pull.

Run it in the iOS Simulator

Open the Simulator with open -a Simulator, then run flutter run from your project folder. Flutter builds the iOS app, installs it and attaches the debugger, and hot reload works just as it does on Android: save a Dart file and the change appears a moment later.

This is the time to check the iOS details. Permissions need usage descriptions in ios/Runner/Info.plist before the system dialog appears. Cupertino widgets, safe areas, the back-swipe gesture and plugin behaviour on iOS all deserve a look. Fix them on Windows or directly on the Mac, then reload.

Signing and version numbers

Open ios/Runner.xcworkspace in Xcode. In the Runner target’s Signing & Capabilities tab, pick your Apple Developer team and set a unique bundle identifier, such as com.yourcompany.app. Leave automatic signing on and Xcode creates the certificate and provisioning profile.

Flutter reads the version from pubspec.yaml: in version: 1.2.0+5, the part before the plus is the version users see and the number after it is the build number, which goes up with every upload. Set your app icon in the asset catalog, then run flutter build ipa, which produces an Xcode archive and an IPA file under build/ios.

Uploading to App Store Connect

Open the archive from build/ios/archive in Xcode’s Organizer, validate it and choose Distribute App to upload it to App Store Connect. You can also drag the IPA into Transporter, Apple’s free upload app. After a short processing time the build appears in TestFlight.

Install TestFlight on your iPhone to try the release build on a real device, and invite testers if you want feedback. When you are happy, fill in the App Store listing, attach the build and submit it for review. The review happens on Apple’s side, so the Mac’s job for this version is done.

Which plan fits a Flutter release

For a first submission or an occasional update, the 24-hour pass at $19 is built for it and includes our step-by-step guide. Prepare your Apple Developer account, icon, screenshots and privacy policy URL before you start, and the day goes to building and uploading.

If you are polishing the iOS version over several days, the 7-day pass costs $49. Teams shipping iOS updates every week usually keep the monthly plan at $112, with Flutter, CocoaPods and caches always ready. FlutterFlow projects work the same way: download the code or push it to GitHub, then follow the same steps on the Mac.

Questions

Do I need the Mac for every iOS update?
Each iOS build is archived and uploaded with Xcode, so plan a pass for each release, or keep the monthly plan if you update often.
Does it work with FlutterFlow?
Yes. Download the code or push it to GitHub from FlutterFlow, clone it on the Mac and build it like any Flutter project.
How do I test on my iPhone?
Upload the build to App Store Connect and install it on your iPhone with TestFlight. During development, use the iOS Simulator on the Mac.
Are 24 hours enough?
For a project that already builds for Android, usually yes. If you need more time, extend with another day or a week on the same Mac.

Before you pay

Payment is handled by Stripe.

They show us how the site is used, including recordings of your visit; what you type stays hidden (PostHog, Google Analytics). These tools use cookies and start only if you say yes. You can change your mind at any time from the bottom of the page. If you say no to statistics, we only count your visit, without cookies. Cookie policy