← Blog

iOS Simulator online: run your own app in a browser

What an online iOS Simulator really is, the five kinds and what each needs, Appetize, VibeView, Expo, Limrun, BrowserStack and NoMac compared from their own pages, and the two commands that put your repo on a cloud iPhone. Checked November 6, 2026.

· 9 min read

Need an iPhone for this? NoMac Simulator gives your agent a cloud iPhone in seconds for $0.90 an hour, billed per minute. See NoMac Simulator →


Apple's iOS Simulator comes with Xcode, and Xcode runs only on a Mac. So every real iOS Simulator you can use online is a Mac in someone's data center: it runs the Simulator, sends its screen to your browser tab as video, and sends your clicks back as taps. What sets the services apart is what you have to give them: an app you already built, or your code.

This guide sorts the kinds, puts the services that show up for this search on one table, and gives the shortest path from a repository to your app on a cloud iPhone. Every other service's facts come from its own pages, linked, as they read on November 6, 2026. Disclosure: we make NoMac Simulator, one of the options, and it is marked as ours where it appears.

The short answer

  • ·You have a Simulator build (a .app): Appetize and VibeView stream it in a browser tab and give you a link to share. Both have a free tier, with sessions capped at 3 and 5 minutes.
  • ·You have the code and no Mac: pick a service that builds it too. VibeView builds native Xcode, React Native, Expo, Flutter and more; Limrun builds in a separate Xcode sandbox; NoMac Simulator (ours) builds native Xcode projects on the phone's own Mac. Expo's own Simulators are a preview for select partners, with a waitlist.
  • ·You need a real iPhone: BrowserStack App Live runs real devices and takes an .ipa, not a Simulator build.
  • ·You want to see a website on an iPhone: open it in Safari on a real Simulator. A phone-shaped frame in Chrome still renders the page with Chrome.

What an online iOS Simulator really is

Apple's documentation says where the Simulator lives:

“Be aware that simulators run within Device Hub on your Mac and don't replicate the performance or features of a physical device.”
Apple, Running your app on simulated or physical devices

An online Simulator is exactly that, on a Mac you don't own. Three things follow:

  • ·It needs a Simulator build. The .ipa you send to TestFlight is a device build and does not install on a Simulator. Appetize and VibeView both say so, and VibeView rejects one at upload. A Simulator build needs no certificate and no Apple Developer account; VibeView's build docs explain the local signing it uses instead.
  • ·Someone has to build it with Xcode, on a Mac. Either you do it and upload the .app, or the service builds it from your code.
  • ·What a Simulator lacks, streaming does not add. VibeView's own page lists camera capture, Bluetooth peripherals, NFC, cellular conditions and GPU performance as things no Simulator can test. For those, put a build on your own phone: how to test an iOS app without a Mac covers TestFlight.

The kinds, and what each needs

1. Upload a Simulator build

You build the app for the Simulator yourself (Run in Xcode with a Simulator selected, or xcodebuild -sdk iphonesimulator), zip the .app and upload it. Appetize asks for “a .zip or .tar.gz file containing your compressed .app bundle”, and VibeView takes the same, up to 500 MB. You get the app in a browser tab and a link anyone can open, which is what sales demos, support teams and reviewers use. You still need a Mac, or a CI job on one, to make each build.

2. Build from your code

The service has the Macs and Xcode anyway, so it builds the app as well:

  • ·VibeView: vibeview build --cloud makes a Simulator build of a native Xcode, React Native, Expo, Flutter, Capacitor or Kotlin Multiplatform project (cloud builds).
  • ·Limrun: lim xcode build . syncs your folder to a remote Xcode sandbox, builds it and installs the result on a cloud Simulator (build with Xcode). The sandbox and the Simulator are priced separately.
  • ·Expo Simulators: Expo Build makes the Simulator build, then a session runs it (Expo's guide). It is “a limited-access preview” that “is currently available only to select partners”, with a waitlist.
  • ·NoMac Simulator (ours): builds a native Xcode project from a git link or a folder you send, with Xcode 27.1 on the same Mac as the phone, and keeps the build cache for your next phone.

This is the kind you want when “show me my app on an iPhone” starts from a repository rather than a finished build.

3. Real iPhones

BrowserStack App Live is a cloud of real devices, not Simulators. It takes “dev APK/AAB/IPA files”, so for iOS you upload a device build, an .ipa, not the .app a Simulator runs.

4. JavaScript imitations

Some sites draw an iPhone in the page and run an app's React Native code inside it through react-native-web. That is a web page, not iOS: no Swift, no native modules and no iOS frameworks run. It can show an app idea, but it can't tell you how your build behaves.

5. Device skins

Browser extensions and Chrome's device mode show a website at an iPhone's screen size, often inside a drawn frame. The page still renders with your desktop browser's engine, not Safari's WebKit. MobileReady, one such extension, says so on its own page: “Viewport simulation is ideal for layout checks, but final QA should include physical devices and Safari/WebKit.” Chrome's documentation calls device mode “a first-order approximation”. For Safari on iOS, open the site on a real Simulator: Appetize has a device sandbox with no app installed for this, and a NoMac phone opens a link in Safari with one command, shown below.

The services side by side

Read on each service's own pages on November 6, 2026. The price is a minute of device time past what a plan includes, or the plan's own rate where that is how it is sold.

ServiceBuilds your codeiOSPrice per minuteWaitlistAgent control
AppetizeNo: you upload a Simulator .app17.2, 18.2, 26.0, 27.2$0.06 past a plan's 500 minutes; plans from $59 a month billed yearly, $89 monthlyNoAppetize CLI (beta)
VibeViewYes: native Xcode, React Native, Expo, Flutter, Capacitor, Kotlin MultiplatformOlder releases through iOS 27$0.02 past a paid plan's minutes (Solo: $19 a month, 1,000 minutes); Mac build minutes $0.08 past the 150 includedNoCLI and an MCP server
Expo SimulatorsYes, with Expo Build, then a sessionXcode 26.6 image; iPhone Duo on Xcode 27.1Not listed; paid plans include 60 minutes a month until 2027Yes: a preview for select partnersagent-device, Argent, Appium; MCP on its pricing table
LimrunYes, in a separate Xcode sandboxNot listed$0.08 for the Simulator at a plan's credit rate (from $20 a month), plus $0.08 while Xcode buildsNoHosted MCP server and CLI
BrowserStack App LiveNo: you upload an .ipaReal devices, not SimulatorsNot sold per minute: from $39 a month, billed yearlyNoApp Automate, a separate product
NoMac Simulator (ours)Yes: native Xcode projects, on the phone's own Mac, incrementaliOS 27, Xcode 27.11.5¢ ($0.90 an hour), billed per minute, no subscriptionNoHosted MCP server, CLI and REST API

To try one free: Appetize's free plan has 30 minutes a month in sessions of at most 3 minutes, VibeView's free tier 30 minutes a month in 5-minute sessions, and Limrun's trial 120 credits once, an hour of Simulator time at 2 credits a minute. NoMac has no free tier: credit starts at $10 and never expires, and a phone is billed per minute.

I have a repo: show it to me on an iPhone

The steps below use NoMac Simulator, which we make. The other services in the build-from-your-code row do the same with their own commands.

For you, from a terminal

You need Node 20 or later and NoMac credit. In the folder with your .xcodeproj or .xcworkspace, run simulator-use, a free, MIT-licensed CLI and MCP server:

npx simulator-use cloud start
npx simulator-use run

cloud start signs you in through a link the first time, then starts an iPhone 17 Pro Simulator on iOS 27, usually ready in about 4 seconds (the median we measured from the US east coast). Its answer has two links: one to watch the phone in a browser tab, and one to use it with your mouse and keyboard. Neither asks the person who opens it to sign in, so you can send one to a colleague. They work for 2 hours, or until the phone stops.

run sends the project, builds it with Xcode 27.1, installs and launches it, and prints the first screen as text. It sends only the files the phone doesn't have yet; build output, dependencies and key files (.env, .p8, .p12, provisioning profiles) stay on your machine. Change the code and run it again: only the changed files go up and the build is incremental, so a rebuild and run takes about 7 seconds (median). A project's first build takes as long as a clean build does on any Mac.

npx simulator-use cloud start --device ipad          # an iPad instead
npx simulator-use app open_url https://example.com   # a website in Safari
npx simulator-use cloud tunnel 8080                  # the phone reaches localhost:8080 here
npx simulator-use cloud stop                         # ends it, with a replay link kept 7 days

The phone is billed per minute from prepaid credit, $0.90 an hour, with no subscription. It stops by itself after 10 idle minutes. When every phone is in use, cloud start waits in line for up to 5 minutes, and the wait is free.

Two limits today. NoMac builds native Xcode projects (projects, workspaces, Swift packages and CocoaPods), not Expo, React Native or Flutter ones. For those, make the Simulator build with their own tools (Expo Build makes one for Expo and React Native projects) and install it with npx simulator-use app install MyApp.app. The tunnel needs Node 22 or later.

For an agent

The same phone is a set of MCP tools. Connect the hosted server once:

claude mcp add --transport http nomac-simulator https://mcp.nomac.app/simulator

Other MCP clients take the same URL. Then ask for the result, for example: “Start a cloud iPhone, run https://github.com/you/app on it and send me the view link.” The agent calls cloud with action start, whose answer carries the view link; app_run with git fetches the repository into your account's workspace, builds it and launches it; ui_look reads the screen as text and ui_act taps and types by label; cloud with stop ends it. A folder that is not on a git host goes up through upload_link, and a private repository's token comes through a request_secret link, never the chat. An agent already connected to https://mcp.nomac.app/mcp has the same tools there, as phone and phone_*.

What ui_look answers is one line per element the agent can use:

Demo · Sign In · iPhone 17 Pro (iOS 27.0)
textfield "Email" #email @201,194
securefield "Password" #password @201,246
switch "Remember me" #remember off @341,298
button "Sign In" #signIn @201,350
text "Not signed in" #status @201,402
tabs: Login (selected) @158,822, Items @244,822

That sign-in screen is about 70 tokens. The accessibility tree it is read from is about 40,000.

The raw simctl route, on a full cloud Mac

If you want the whole Mac, with a shell, your own scripts and every Xcode tool, a NoMac Session is a macOS VM (macOS 26.6.2, Xcode 27.0, iOS 27.0 Simulator) at $0.90 an hour, billed per minute. The usual simctl loop works there as it does on your own Mac:

nomac start --json
nomac sync .
nomac ssh -- xcrun simctl boot "iPhone 17 Pro"
nomac ssh -- xcrun simctl bootstatus "iPhone 17 Pro" -b
nomac exec --wait 600 -- xcodebuild -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  -derivedDataPath build build
nomac ssh -- xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app
nomac ssh -- xcrun simctl launch booted com.example.MyApp
nomac screenshot --simulator -o home.jpg
nomac stop --json

bootstatus -b waits until the Simulator has finished booting, so the install doesn't race it. nomac desktop opens the Mac's whole desktop in your browser, Simulator included, if you would rather tap by hand. Stopping deletes the VM and everything outside ~/drive, which is kept for your next session. To check the app on a real iPhone too, through TestFlight, see how to test an iOS app without a Mac.

Give your agent an iPhone in seconds.

A cloud iPhone Simulator that builds your Xcode project, reads the screen as text and taps by label, over MCP. You watch it in a browser tab. $0.90 an hour, billed per minute from prepaid credit, with no subscription.

Get started from $10

7-day money-back guarantee on your first purchase. Credit never expires.

Connect your agent →