If you’re an aspiring Android developer, don’t miss our guide that will help you get started developing Android apps on Windows.

Why It’s Hard to Develop iOS Apps on Windows

Apple’s walled garden makes it almost impossible to develop iOS apps without a Mac. Xcode, the sole integrated development environment (IDE) for building iOS apps, is only available on macOS. Important development features, like simulating an iOS device on the computer, are only possible with Xcode installed. Unlike Google’s Play Store, which allows uploading apps via a website, the only way to upload iOS builds to Apple’s App Store is by using software tools exclusive to macOS: Xcode, Transporter (a macOS exclusive app), and the Altool command line program. It is literally impossible to publish an app on the App Store without using macOS. But considering how expensive Mac computers are, simply buying a Mac computer is not an option for many people. Fortunately, there are a few ways to develop iOS apps using just a Windows computer. One approach is using Windows to access a macOS machine and developing the entire app using Xcode. Another is to write the code on Windows using cross-platform development tools. Read on to learn the specific options for both of these approaches.

1. React Native and Expo

React Native is Facebook’s Javascript framework for building Android and iOS apps. You can make apps that look and feel like they belong on iOS, as React Native lets you use native UI components. This also results in faster performance than something like a WebView app, which simply renders a responsive mobile website. The popularity of React means that there are plenty of relevant tutorials and tools to help you along with your development. React Native is even better when you use it with Expo, a collection of helpful development features. For developing on Windows, the Expo Application Services (EAS) are especially important: they provide a way to build and submit your iOS apps in the cloud. While Expo itself is free, EAS is paid. A downside of React Native is that it runs Javascript and does not compile into native code, so the performance won’t be the best, even if it is good. Want to optimize your code? Check out these useful Javascript one-liners.

2. Flutter and Codemagic

Flutter is Google’s framework for building cross-platform applications using the Dart programming language. The main distinction between Flutter and React Native is that Flutter doesn’t use native UI components, instead compiling to native code, giving it even faster performance. Codemagic is a paid cloud service that lets you build and publish your Flutter iOS apps without a macOS computer. A minor downside is that Flutter and the Dart programming language aren’t as popular as React and Javascript, so there aren’t as many resources available.

3. Haxe

Haxe is a programming language that can build applications for a huge number of different platforms, including iOS. It’s a great choice if you want your application to run everywhere: desktop, mobile, and Web (both frontend and backend). While it’s very popular with game developers, Haxe can still be used to build iOS apps with static UI. Haxe is a jack of all trades but a master of none. As its strength comes from building applications for many platforms, it won’t have features tailored specifically to iOS app development, so you may not get the native look and feel of iOS that you would with React Native. Have a new interest in programming? Check out the best YouTube channels that can teach you how to code.

4. Adobe AIR

If you have experience developing with Adobe Flash or Actionscript in the past, then Adobe AIR might be right for you. Being based on Flash, AIR makes it easy to build rich and animated experiences, like 2D games, with a single codebase for multiple platforms. With AIR’s toolchain, you can generate Android, iOS, and desktop app files directly on Windows. When used in conjunction with Adobe’s Animate CC, it becomes the fastest way to bring your idea to the screen. One downside is that AIR’s vector-based graphics lead to high battery and CPU usage. Additionally, to achieve core functionality like in-app purchases, third-party software called AIR Native Extensions (ANEs) are needed. These are usually not free. Under Harman, the AIR platform itself may cost you money too. You can use Adobe AIR for free if you make under $50K a year in revenue. However, this free tier requires including an AIR splash screen in your application. Paid tiers with no splash screen, starting at $199 a year, are required for anyone making more revenue.

5. Rent a Mac in the Cloud

A legitimate but pricey option is paying to access a real macOS machine in the cloud. You can do this by paying providers like MacinCloud, MacCloud, or MacStadium a recurring fee. If you go with this method, it’s best to rent it for the minimum amount of time you need to build and upload your app, then cancel it as soon as you’re done. You would do almost all of the programming on your Windows machine using one of the development methods listed above, then send the output to the macOS cloud instance for building/uploading.

6. Install a macOS Virtual Machine

If you still want the full macOS + Xcode development experience, you can install a macOS virtual machine (VM) on your Windows computer. This is nice, as you get all of the native development tools that Apple intended you to use to build iOS apps. You can do all of the design, programming, building, and uploading to the App Store entirely on macOS with this option. Good to know: don’t want to wait until the official release of the latest macOS version? Install the beta version and enjoy upcoming features sooner. Image credit: Pexels. All screenshots by Brandon Li. Harman appears to be doing a great job actively developing and improving the AIR platform. They are working on an AIR developer website with documentation, tutorials, and community discussion. There appears to be a decent amount of community interest, so continued support for AIR is likely. However, AIR is nowhere as popular as other platforms.