If you're looking for a way to test iOS apps on a Mac or PC, you'll need to use a simulator. Simulators differ from emulators in that they aren't designed to replicate hardware, but rather model the underlying state of the hardware.

A good simulator will model these conditions so well that the simulation itself can emulate the hardware. You can simulate iPhone, iPad, Apple Watch and even Apple TV environments using simulation software, though for best results you'll need a Mac.

Here are your three best choices.

1. Xcode 9 Simulator (Mac)

It might seem obvious, but the best simulator for iOS devices comes from Apple itself. Installed as part of Xcode's tools, Simulator functions like a standard Mac app on your desktop. Because Xcode is only available on the Mac platform, Apple's Simulator is not available for Windows users.

Simulator allows you to pick a specific device environment for testing -- like an iPhone 7 Plus running iOS 10.3. For developers, particularly small teams, this mitigates the requirement to purchase a lot of expensive devices purely for testing purposes.

xcode simulator

Apple's solution includes support for running multiple simulators that interact with each other. That gives you the ability to do things like run a watchOS simulation to test your Watch app's integration with its iOS counterpart.

The official simulator also provides access to all the iOS APIs and core services. If you're building an app that utilizes Game Center for multiplayer or HealthKit for activity data, you can use these tools to test whether the app is interacting with the system correctly.

No software solution can replace a real physical device, but Xcode 9's Simulator comes pretty close. For rapid testing and deployment purposes you just can't beat a solution that's built into the IDE you're using.

The best part is that it's completely free, along with the rest of the Xcode development environment.

2. Visual Studio With Xamarin Live (Windows, Mac) [No Longer Available]

Microsoft has done a lot of work over the past few years to position Visual Studio as the development platform-of-choice for cross-platform development. In May 2017, they introduced Xamarin Live, an iOS app that allows you to push to and test native apps on a connected iOS device.

xamarin live

As you may have realized by now, this isn't the same as Apple's Simulator. You can't switch between device profiles to simulate different environments, but that's no reason to write it off. Xamarin has been somewhat of a game changer for C# developers who use Visual Studio that are interested in building, testing, and deploying native iOS applications.

The arrival of Xamarin Live is just another offering on Microsoft's part to tempt developers over to the platform. Xamarin uses shared C# UI code and app logic to streamline development, though you'll need Visual Studio Enterprise and a basic Xamarin plan (starting at $99 per month) to use it.

3. Visual Studio With Xamarin and a Mac (Windows, Mac)

Another option for Visual Studio users who are developing with Xamarin is to use the Xcode Simulator on a networked Mac. You can still develop within Visual Studio for Windows or Mac, except simulations will be sent to your Mac over the network (then streamed back to you). This provides access to a broader range of simulation environments, but it takes some setting up.

On the Mac you'll need Xcode with the latest version of the Xamarin.iOS SDK. You can then configure Xamarin to push your code to Xcode's Simulator. The benefits here are for those developing cross-platform apps in C# using Visual Studio, who wants to make full use of Apple's excellent Simulator.

xamarin live simulator mac

This is a better option than using the Xamarin Live iOS app (above), but it's also a more expensive endeavour since not everyone has a Mac. If you're already using Visual Studio for Mac, you can install Xcode and launch the Simulator using Xamarin right there on your desktop.

The same fees apply for Xamarin (starting at $99 per month), plus you'll need Visual Studio Enterprise, and some Apple hardware to boot.

4. Appetize.io (Browser)

And now for something completely different: Appetize.io is a dedicated, browser-based testing solution for mobile applications. It allows you to run mobile apps in your browser by means of simulation, which can be uploaded via the Appetize.io website or using a dedicated API.

Apps are streamed through the browser, and can be embedded into any web page using an iframe. This makes the platform ideal for testing purposes, proofs of concept, demonstrating a prototype to clients, or quickly sourcing a round of feedback on a new look or feature.

appetize overview

The web-based nature of the platform means you can pass a link to anyone, anywhere, and have them test your app. As with Simulator, you can pick from an extensive range of device and software combinations.

There are drawbacks to this method however, notably that performance dips compared to running the simulation on a Mac. It's also not deeply integrated into the development environment, like Xcode's Simulator or Visual Studio with Xamarin running a remote iOS simulator.

Then there's the issue of cost. You pay for "virtualization time," so the more time you want to spend running your apps, the more you'll need to spend. The basic package starts at $40 per month, though you can sign up for a free trial of 100 minutes for two users to test it out first.

Avoid the Rest

There is no true iOS simulator for Windows, and if there was Apple would likely begin court proceedings to shut it down. With this in mind, there are many apps out there posing as iOS simulators. Many simply don't work, some have been used to spread malware, others claim to be free but drop hidden costs on you at the last minute.

The best option for testing your iOS apps is to develop on a Mac and use Simulator. Xamarin Live Player extends a helping hand to cash-strapped developers, but in the long run investing in a Mac might be worth it considering the cost of Xamarin and Visual Studio Enterprise.

Appetize.io appears to be perfect for end-of-development cycle testing, but the browser-based solution has its own set of pros and cons, and a price tag to match.

Let us know how iOS simulations integrate into your workflow in the comments below.