How to Make an iPhone App on Linux (2026)

Make and publish an iPhone app from Linux: why Xcode won't run, the honest options, and how a browser builder with a cloud Mac gets you to the App Store.

By Sigsten Gustavii· · 8 min read

To make an iPhone app on Linux, use something that does the Mac part for you: a remote Mac you rent, a cloud build service for a cross-platform framework, or a browser-based builder like Borel that writes, builds and runs native SwiftUI on its own Mac. Then test in a streamed simulator and ship through TestFlight and the App Store.

Routes to an iPhone app from Linux
RouteWhat runs whereNative SwiftUI?Main catch
A browser builder (Borel)You describe on Linux; Xcode runs on Borel's MacYesYou build by describing, then can download the code
A rented remote MacYou remote into a Mac in the cloudYesA laggy remote desktop and a monthly bill
React Native with a cloud buildCode on Linux; iOS builds in the cloudNo, React NativeTesting on iPhone still needs a device or a Mac
FlutterCode on LinuxNo, FlutterBuilding for iOS needs macOS and Xcode
macOS in a virtual machine on a PCmacOS on non-Apple hardwareYesAgainst Apple's macOS licence

Linux is a great place to write code, and a frustrating place to start an iPhone app. The reason is simple: Apple's tools for building, signing and simulating iPhone apps are Mac-only. Every honest route therefore borrows a Mac somewhere. The question is how much of the Mac you have to deal with yourself.

Why Xcode won't run on Linux

Xcode compiles iPhone apps, signs them and runs the iOS Simulator, and it only runs on macOS. Apple's software licence allows macOS on Apple-branded hardware, which rules out running it in a virtual machine on a Linux PC. Cross-platform frameworks don't escape this: Flutter's iOS setup needs macOS and Xcode, and React Native's iOS builds need Xcode too, either on your Mac or in a cloud service like Expo's EAS Build.

Route 1: a browser builder with its own Mac

Borel runs in your browser, on Linux as anywhere else. You describe the app; Borel writes it in Swift with SwiftUI, compiles it with Xcode on its own Mac, and streams Apple's real iOS Simulator into your browser, where you tap and type with your mouse and keyboard. Every change is built and opened again. When you want the code, download the SwiftUI project, which comes with an XcodeGen project file. The simulator is free for everyone, up to two hours a day on the free plan.

For a Linux user the appeal is that nothing is installed: no Xcode download of many gigabytes, no simulator runtimes, no signing certificates on your machine. Your Linux setup stays as it is, and the Mac part lives on Borel's side, where it is kept on current Xcode.

Route 2: rent a Mac in the cloud

Remote Mac services let you connect to a real Mac over the internet and run Xcode yourself. It works and it is fully native, but you are using a Mac desktop through a remote connection all day, paying for it monthly, and learning Xcode and Swift on top. It suits developers who already know Xcode and need it occasionally.

Route 3: cross-platform with a cloud build

React Native with Expo lets you write JavaScript on Linux and build the iOS app in Expo's cloud. That is a real route for developers who want one codebase for iPhone and Android. The trade-offs: the app isn't native SwiftUI, and testing on an iPhone still needs either the phone and a development build or a Mac. Before you choose this route, compare SwiftUI vs React Native.

What you can build this way

Building through a browser doesn't limit you to toys. A Borel app can keep data on the phone or in a cloud database with accounts, use the camera and VisionKit scanning, Apple Maps, Face ID, reminders scheduled on the phone, Swift Charts, speech to text and AI with no API key, and sell subscriptions with Apple's in-app purchase. What it doesn't do today: push notifications, Apple Health, or anything that needs a third-party Swift package. If your app depends on those, a Mac and Xcode are the honest route. See native iOS features for the full list.

A Linux developer's workflow

  1. Describe the app in Borel and let it build the opening version.
  2. Review the SwiftUI it wrote, file by file, in the Code view or after downloading the project.
  3. Ask for changes the way you'd write a pull request description: specific, scoped, one concern at a time.
  4. Test each change in the streamed simulator, and revert when one goes wrong.
  5. Ship to TestFlight when it's ready for a real iPhone, then to the App Store.

Testing without a Mac or an iPhone

Where a Linux user can test an iPhone app
WhereWith BorelNotes
iOS SimulatorStreamed to your browser on LinuxFree; the real app, not a mockup
Your own iPhone with CompanionNot on LinuxCompanion runs on Mac and Windows
Your iPhone through TestFlightYesNeeds Pro and Apple's Developer Program
Friends' iPhonesThrough TestFlightUp to 10,000 external testers

One honest limit: Borel Companion, which installs apps on your own iPhone with a free Apple ID, runs on Mac and Windows, not Linux. From Linux, the way onto a real iPhone is TestFlight, which needs Apple's Developer Program. Read how to share your iPhone app with friends for how TestFlight works.

Publishing from Linux

Publishing needs Apple's Developer Program ($99 a year) and, with Borel, Pro (from $20 a month). Connect App Store Connect in Borel's Publish flow; Xcode archives the app on Borel's Mac, signs it and uploads it, then you manage TestFlight and submit for review in App Store Connect in your browser. Nothing in the process needs a Mac of your own. See also publishing to the App Store without a Mac.

Taking the code further

Linux developers often want to read and own the code. A Borel app is plain SwiftUI: open the files in Borel, or download the project and read it in your editor of choice. To change it by hand and build it yourself, you would need Xcode on a Mac; on Linux, the practical loop is to describe changes to Borel and review the code it writes. See the AI SwiftUI app builder for what Borel produces.

How to choose

  • You want a native iPhone app without touching a Mac: Borel, in your Linux browser.
  • You are an iOS developer who needs Xcode now and then: a rented remote Mac.
  • You need iPhone and Android from one JavaScript codebase: React Native with a cloud build.
  • You want to write Swift by hand every day: a Mac is worth buying; see Xcode for Windows alternatives for the same question from a PC.

How to do it with Borel, step by step

Step 1: Open Borel in your browser

Use an up-to-date browser on your Linux machine. Sign up and you start with free daily credits, and the simulator is free for everyone.

Step 2: Describe the app

A prompt to start from
Make a log for my home server's maintenance: tasks with a due date and a repeat interval, a list of what's due this week, a history of what I did with notes, and a reminder on the phone the day something is due. Dark look, monospaced numbers.

Step 3: Test in the streamed simulator

Tap through the app in the iOS Simulator in your browser and change it with short messages.

Step 4: Read the code

Open the files in Borel or download the SwiftUI project to read it locally.

Step 5: Ship it

With Pro and the Developer Program, publish to TestFlight to try it on your iPhone, then submit to the App Store.

The Bottom Line

Linux can't run Xcode, so every route to an iPhone app borrows a Mac. Borel borrows it for you: native SwiftUI written from a description, built with Xcode on Borel's Mac, tested in the iOS Simulator in your Linux browser, and published to the App Store without a Mac of your own. The one gap is installing on your own iPhone with Companion, which needs Mac or Windows; TestFlight covers it. Open Borel in your browser and describe your app.

Questions people ask

Can I make an iPhone app on Linux?

Not with Linux alone, because Xcode only runs on macOS. With a browser builder like Borel, which builds on its own Mac, you can make and publish one from Linux.

Can I run Xcode on Linux?

No. Xcode is macOS-only, and Apple's licence ties macOS to Apple hardware, so a macOS virtual machine on a Linux PC isn't a legitimate route.

Can I test an iPhone app on Linux?

Yes, in Apple's iOS Simulator streamed to your browser by Borel. For a real iPhone from Linux, use TestFlight.

Does Borel Companion run on Linux?

No, Companion runs on Mac and Windows. From Linux, install on your iPhone through TestFlight instead.

Can I publish to the App Store from Linux?

Yes. With Borel Pro and Apple's Developer Program, Borel builds, signs and uploads the app from its Mac, and you manage the rest in App Store Connect in your browser.

Is Flutter or React Native a way around the Mac?

Partly. You can write the code on Linux, but building for iOS still needs Xcode, on a Mac or in a cloud build service.

Do I get the source code?

Yes. A Borel app is SwiftUI you can download as a project with an XcodeGen project file.

Can I use my own Swift packages?

Not in a Borel app today: it uses Apple's frameworks only. If your app needs a third-party package, build it in Xcode on a Mac.

Which Linux browsers work?

Borel is a website, so use an up-to-date desktop browser. The simulator is a live stream with your clicks and keys sent back, so a steady connection matters more than which browser you pick.

Can I make an Android app the same way?

Not with Borel, which makes iPhone and iPad apps. For Android, Android Studio runs natively on Linux.

How much does it cost?

Building and testing start free with 5 credits a day. Publishing takes Pro from $20 a month and Apple's $99 a year.

I don't think the computer you love should decide whether you can make an iPhone app. Open Borel in your Linux browser and try it.

– Sigsten

Make your iPhone app in Borel

Describe the app you want and see its first screens before you pay anything.

See your app free

Keep reading