Can I Develop iOS Apps On Windows?

By Eddy Chung

Many developers looking to start iOS development have a Windows machine. Some cannot afford to buy a MacBook, others do not want to purchase another computer.

Can I Develop iOS Apps on Windows? Yes, you can develop iOS apps on Windows. However, you’ll need to setup your environment correctly first. There are different ways to do that.

Here are different ways you can develop iOS apps on Windows:

  1. Rent a Mac online
  2. Use a virtual machine to run a virtualized MacOS environment
  3. Dual-boot MacOS – Hackintosh Style
  4. Use an online Swift Sandbox
  5. Use React Native & Expo to build iOS apps with JavaScript
  6. Use Flutter & Build iOS apps with Dart
  7. Use Xamarin & build apps with C#
  8. Use other cross-platform solutions
  9. Rent a physical MacBook
  10. Buy a used or cheap Mac computer (Easiest!)

XCode, the integrated development environment (IDE) for iOS development, does not run on Windows machines. You’ll have to use one of these methods to make iOS apps on Windows. The method you choose will depend on your needs and resources. I’ll break down each of these options so you can make an informed choice.

Rent A Mac Online

Renting a Mac machine hosted on the cloud is a great option to coding iOS apps on Window computers. This option isn’t free, but it saves a lot of the headache of setting up a MacOS environment on your own.

This is my recommended option because it is easiest and takes the least amount of time. You can get started almost instantly and most companies offer affordable plans with no commitments.

Companies run Mac machines and connect them to the internet. They then sell remote access to these machines for reasonable prices. You are then able to remotely access these machines easily from your Windows computer any where in the world.

This strategy works well even if you have an older or slow machine! Since you’re not using your own hardware to run Xcode, your current machine’s performance matters less. This is great if you need a very fast machine, but don’t want to carry it around with you.

Rent a Mac from one of these companies and you’ll always have a performant machine to develop on – remotely!

There are many providers and companies offering online Mac rentals. Here are some you can check out:

MacInCloud is the most popular option and I’ve heard good reviews from that company. They offer a $1 per hour rate if you’re just getting started and want to test it out.

Most of the cloud-rental companies have plans that start as low as $20 a month. Affordable enough for somebody just getting started with iOS development.

Some of these companies also offer build services which are more for enterprise use. These build services allow for easy continuous integration, allowing multi-person teams to automatically build and run tests on every release.

One of the downsides of using a cloud Mac service is that you will not be able to test on your physical device. Your testing and developing will be limited to the simulators in your rented Mac machine.

However, when you are ready to test it on your physical phone, you can always install it via TestFlight. TestFlight is a beta testing tool developed by Apple. It allows you to invite users (including yourself) to test and give feedback on your application before releasing it to the App Store.

The upside of renting a Mac online is that you’ll be able to access your development environment from anywhere in the world with any computer! Doesn’t matter if you’re using a computer at the library or a hotel room on the other side of the world.

Renting a Mac machine online is a great way to test if iOS development is something you want to pick up long term. Most of the companies offer no commitment plans. If you decided you enjoy iOS development, you can invest in a MacBook afterward.

Use a Virtual Machine

Running a virtual machine allows you to run MacOS within your Windows machine! This means you’ll be able to run Xcode and Simulators within this virtual machine as if you had a MacBook.

It takes some time and some technical knowledge. I only recommend this option if renting an online Mac or a physical MacBook is not available. For most people, this option will not be worth the required time and effort.

You’ll also need to have a reasonably powerful computer in order to run MacOS virtually. By virtualizing another OS, you’re essentially running two computers on one machine. Ensure that you have enough memory and hard drive space to accommodate your virtual machine.

You have a couple of software options for running a virtual machine including these popular ones:

  • VirtualBox
  • VMware workstation
  • Parallels

The most popular option is VirtualBox and it is the one I recommend. It is completely free and used in many companies that I’ve worked at.

To set up virtual box head over to https://www.virtualbox.org and download the software for Windows Host. Your host machine is the the actual machine you own and your other machines will be “guest” virtual machines.

Once you have that downloaded, open it up and follow the install instructions. You’ll have to give your virtual machine a name, memory, disk space and the OS image.

To get a MacOS image, you can borrow a friends MacBook or Google to find one online.

Once you have your virtualized MacOS installed, you will able to install Xcode and be able to code iOS apps just as if you had a Macbook!

You’ll be able to connect your physical ports to the virtualized ports in your virtual machine, so you should be able to test on physical devices just fine as well.

Here are some additional resources to building a Mac VM:

-https://github.com/geerlingguy/macos-virtualbox-vm -https://saintlad.com/install-macos-sierra-in-virtualbox-on-windows-10/ -https://www.howtogeek.com/289594/how-to-install-macos-sierra-in-virtualbox-on-windows-10/

Virtual machines are a great option for those with powerful Windows computers and are unable to rent a virtual or physical MacBook.

Dual-boot MacOS, Hackintosh Style

make_2

So why don’t we just install MacOS on my Windows machine? You’re describing a Hackintosh. Most people don’t this because it requires technical knowledge as well as a good amount of time.

No computer manufacturer will do it for you either and there are certain issues with compatibility. After all, MacOS was only designed to run on Apple computers.

Updating your Hackintosh will also be challenging. You may not be able to run the latest MacOS all the time. This can leave you vulnerable to security bugs and you’ll also miss some features from the latest update.

You’ll have to comfortable building your own computer from parts and debugging your own technical problems. Picking out the correct hardware from the beginning is very important. You may also need to tweak some BIOS settings in order to boot MacOS correctly.

Be careful – not all hardware is compatible with MacOS. Hackintoshes are not supported by Apple either and it may be against their End User License Agreement (EULA).

Here’s an example of a compatible Hackintosh build:

  • Motherboard: Gigabyte Z370 AORUS Gaming WIFI
  • CPU: Core i9-9900K
  • Cooler: Corsair H60
  • RAM: Crucial Ballistix Sport LT 32GB
  • SSD: Samsung 860 EVO 500GB
  • Case: Corsair RM 650x Watt
  • WiFi Card: TP-Link Archer T9E 802.11AC AC1900
  • Graphics Card: EVGA GeForce GTX 1070 SC Black

The cost of the above Hackintosh build is about $1800. It is a very fast computer and considered top of the line. However, you can build a Hackintosh computer for as low as $600.

Once you’ve assembled your computer, you’ll have to set up your BIOS and build a bootable MacOS USB drive. After you’ve successfully install MacOS on your computer, you’ll have to manually install all the drivers to make your hardware work properly with the OS.

I’ve provided just an overview on how to build a Hackintosh. There are entire sites where you can find detailed instructions on building and setting up a Hackintosh machine. Here are some good resources to check out if you’re interested:

For most people, a Hackintosh will cost too much time and money. It’s more for people interested in building and customizing their own computer. If you’re just looking to develop iOS apps, there are easier ways of going about it.

Use an online Swift Sandbox

make_3

Online Swift sandboxes are a great way for you get your feet wet in iOS engineering with the current machine you own.

These sandboxes let you write and run Swift code in a completely online environment. No installation of Xcode or other integrated development environment (IDE) is required.

Here are some online sandboxes you can try out:

Although you won’t be able to build a full iOS app from an online Swift environment, you will be able to learn the fundamentals of Swift development.

The iPad also has an app called Swift Playgrounds released by Apple. Swift Playgrounds make learning Swift interactive and fun. It requires no previous knowledge of coding and is perfect for students just starting out.

In the Swift Playgrounds app you solve puzzles and games to master the basics of the Swift language. More advanced playgrounds and challenges will allow you to continue your learning.

Online Swift environments are good for getting a feel of the Swift language and learning Swift fundamentals. Eventually, you will have to seek out another solution if you’re looking to build out a full iOS app.

Use React Native and Expo to Build iOS apps with JavaScript

make_4

React Native is a framework released by Facebook for building native iOS and Android apps using Javascript and the React library. It has grow rapidly in the last couple of years and thousands of app are now built on React Native.

Companies including Facebook, Instagram, Pinterest, Skype, Tesla, Uber, Walmart, Salesforce and Wix all use React Native fully or partially in their mobile applications. React Native is getting better every single day and is maturing very quickly. It wasn’t long ago when this was just a new framework!

For developers that know JavaScript or come from a web development background, this is a great choice. The ramp up for these developers will be short and they’ll be able to pick up mobile development quickly. React Native has very similar design patterns to the React web framework.

Combined with Expo, you won’t need Xcode or Android Studio to build iOS apps. Expo is an open source toolchain built around React Native. It can access all the native APIs of the device, including camera, push notifications, AR kit and more. Expo allows over the air updates to your app and can publish to the official App Store.

Another great feature of Expo is you can get started in your browser! This is an amazing feature – check it out at https://snack.expo.io/

In their online IDE (integrated development environment) you can develop iOS and Android apps. This is the lowest barrier to entry I have ever seen in mobile app development.

For beginners, Expo is not recommended. It’s still a very new library and not a lot of apps are currently built with it. This means there are very few tutorials and guides online for you to learn from. Also when you need help with a specific problem, the community is a lot smaller when compared to the native iOS development community.

Expo is a good fit for web developers familiar with React switching into mobile app development. The future looks very promising for Expo and I’m excited to see where it goes.

For beginners with no development experience, I don’t recommend trying cross-platform tools like React Native or Expo. It’s best to begin native iOS Swift development as there are more resources and a larger community surrounding it.

Use Flutter and Build iOS apps with Dart

make_5

Flutter is an open source framework released by Google. It allows you to build iOS and Android apps from a single codebase. Its written in the language Dart, which was also built by Google.

Apps that currently use Dart include:

  • Alibaba
  • Google Ads
  • AppTree
  • Hamilton Musical

This framework allows you to built beautiful native apps in record time. Flutter apps are equally performant when compared to native apps and the user interface is a pleasure to build using their widget system.

The community for Flutter is growing quickly and it’s future shows promise.

However, when developing on Flutter on a Windows computer, you’ll only be able to preview your application in Android Studio and Android simulators. To run it on an iOS device or a simulator you’ll still need a Mac Machine.

Again for beginners, I don’t recommend Flutter. Since its such a new platform, there can be a lack of resources and help that a new developer would need. I recommend learning Swift if it is your first time coding.

Use Xamarin and build apps with C

make_6

Xamarin is a framework owned by Microsoft. It connects the .NET world to the world of Android and iOS development. It allows one to deliver native iOS and Android apps from a single .NET codebase.

Some of the benefits of Xamarin include:

  • Native User Interfaces
  • Native API access
  • Native performance

For .NET developers Xamarin is a good option for those transitioning into mobile development.

However, you cannot build iOS on Xamarin with a Mac machine connected to it. To build and test a Xamarin app on an iOS simulator or device, you’ll need to be connected to a Mac machine. For full instructions, check out this link.

For beginners, it’s best to stick to the native Swift code for iOS development. There are a lot of nuances when working with cross-platform and 3rd party tools that add to the difficulty of learning how to code. Swift is also a very modern language that has a large community and many tutorials for beginners to read.

Other Cross-Platform Solutions

There are other cross-platform solutions on the market including:

  • PhoneGap
  • Cordova
  • Ionic
  • Appcelerator

I don’t recommend beginners to use cross-platform solutions. They add a layer of complexity to the already difficult task of learning how to code. Cross-platform and third-party solutions are better for intermediate or seasoned developers.

Most of these third-party frameworks require you to connect to a Mac machine at the end of the day to sign and build the application. This is a huge problem.

This means you’re developing and testing on an Android device the entire time and only get to see how it performs on iOS at the end. Worse yet, you have to use a Mac machine at the end of the day, so why go through all this trouble?

Being unable to test your code throughout development is a deal-breaker for me. The quick feedback loop allows you to fix small problems faster and before they become bigger problems. This is also extremely beneficial for those learning to build iOS apps.

Each of these third-party frameworks has communities, but they’re also not as large as the native Swift community. This means it can be more difficult to find help when you need it. It also means there are fewer tutorials and videos on development topics.

Rent or borrow a physical MacBook

make_10

Aside from renting a MacBook in the cloud and remotely accessing it, you can also rent a physical MacBook if you’re looking to dip your toe into iOS development.

These companies will have to be local to your area and will vary with what machines they available. I’d suggest searching in Google “MacBook rentals [city name]” to find local computer shops that may be able to rent a MacBook to you.

When I searched in my local area, I found that MacBook airs could be rented for as little as $50/day. MacBook Pros were available for a little more at $100 a day.

Here are some websites I’d search for local MacBook rentals:

  • Yelp.com
  • Google.com
  • Craigslist.com
  • Facebook.com Marketplace
  • Foursquare.com

You can also try calling any local Mac repair shop and asking if they would be able to rent a MacBook. These prices will probably be negotiable, especially if you are talking with a small local shop. Expect to put down your credit card information in case you damage or lose the MacBook.

Another option is to check out your local internet cafes or internet lounges. Although these mostly cater towards gamers and Windows computers, it doesn’t hurt to try! Give your local internet cafes a call and see if they have any Macs at their location.

Of course, the local Apple store will always have tons of MacBooks for you to use. There are no chairs there, but standing desks are in these days anyways – so who needs chairs?

I’ve heard of success stories of people who have built their career or business from the computers of Apple stores. Like the old saying goes, where there’s a will, there’s a way.

I’d recommend you shuffle between a couple different Apple stores to avoid employee suspicion. Although I’m not even sure if Apple cares, as the more time you spend in the store, the more likely you are to make a purchase. You can save your files onto a cloud service such as Google Drive, iCloud or Dropbox.

Lastly, some hotels and hostels might have Mac computers you use for free during your stay. Some may require you to purchase a cup of coffee or pay by the hour.

Don’t forget to check your network of friends and family to see if anybody has an old MacBook lying around that they’d let you borrow for free or for a fee.

Buy a used or cheap Mac computer (Easiest!)

The simplest option to develop an iOS app if you have a Windows computer is just to buy a Mac! I know it’s an obvious solution, but I believe its the easiest and not as expensive as you may think.

You may think this is too expensive, however, you can develop iOS apps on any Mac machine. Even older machines work. Yes, that 2011 Mac mini machine will be just fine for development!

Let’s take a look at the prices for a brand new Mac Mini from Apple.com.

A brand new Mac Mini at the time of this writing is $799. Apple also offers financing options to break up your payments.

make_7

Ok so, maybe that’s still too expensive for you? No worries, Apple offers official refurbished units for you. A refurbished 2014 Mac Mini costs $419 from the official Apple.com store.

make_8

Refurbished units still too expensive? Not to worry, we can go to the second hand market.

On eBay we can see a ton of Mac Minis from 2014 selling for $299.

make_9

If we’re really on a budget, we can buy a Mac Mini from 2008 for less than $100.

So as you can see, the price of Mac machine may be cheaper than you think. This purchase is an investment for your career or hobby in your iOS development journey.

Owning a Mac means you won’t have to deal with any of the issues associated with XCode on Windows. Learning to code is already hard enough, so why complicate it with additional problems? If you’re looking to make coding your career, a MacBook is essential.

Most of the engineers in the silicon valley area work on MacBook Pros, as it is simply the best tool for the job. I have had only one development job where I was working on a Windows computer, the rest of the companies have given me a MacBook.

What Do You Recommend

For a beginner, I highly recommend you just buy a Mac machine. This will save you a ton of headaches and save you time.

If you cannot purchase a Mac machine for whatever reason, I recommend renting a Mac either physically or in the cloud.

I only recommend trying cross-platform or third party tools for experienced developers.

Running a VM or building your own Hackintosh will work, however, it’s not really worth the time or money compared to the other options. There may also be compatibility issues with your Hackintosh when MacOS updates.

Running a virtual machine on your own laptop can take a lot of CPU resources and memory.

I hope this article helped you decide how to build iOS apps on Windows computer.

Where can I buy a cheap Mac machine?

  • eBay
  • Craigslist
  • University or college sales
  • Office clearing sales
  • Apple’s refurbished store

What are the minimum hardware requirements to run Xcode?

  • Dual Core Processor at 1.5 GHz or higher
  • 4 GB of RAM, but 8 GB is recommended
  • 128 GB disk storage, but 256 GB is recommended
If you liked this post, you'll love my free guide: Secrets To iOS Development. Speed up your learning curve - hundreds of students have already downloaded. Thanks for reading!
Profile Picture of Eddy Chung

Eddy Chung

I am a professional iOS developer in Silicon Valley. I teach iOS development on ZeroToAppStore.com. If you'd like to learn more about me click here or you can contact me at: eddy@zerotoappstore.com

Similar Posts