Built in · No installs · Public Apple APIs

Drive any simulator on your Mac from one panel.

Pick a device. Drag in a build. Hit Launch. Capture screenshots. Open deep links. All from inside the Simple App Shipper Mac app — no command-line tools to install, no third-party CLIs to manage, no notarization workarounds.

What it does

📱

Every simulator, one list

iOS, iPadOS, tvOS, visionOS — every device available to Xcode shows up sorted by runtime, with one-click boot and shutdown.

📦

Drag-drop install + launch

Drop a built .app bundle from DerivedData, we install it, read its bundle ID from Info.plist, and launch in one motion.

🔗

Deep-link testing

Paste a URL or custom scheme (simpleappshipper://paid) and see how your app responds. Useful for OAuth callbacks and Stripe success redirects.

📸

Screenshots & video

Single-shot PNG or rolling video recording, straight to disk. The same path App Store screenshot pipelines use, scriptable from inside the app.

🎛️

Hardware buttons

Home, Lock, Side, Siri, Screenshot — sent as proper hardware events, not synthetic clicks. Test lock-screen widgets and notification flows without leaving your keyboard.

👆

Click-to-tap, drag-to-swipe

Take a screenshot, click anywhere on the image to tap that exact point on the device, drag to swipe. One-time Accessibility permission, then it just works — no private framework SPI.

👁️

Headless or visible

Boot a sim and never see the GUI window — perfect for CI-style runs and capture pipelines. Or click Show Simulator when you want to drive it by hand.

🚀

Device Fleet — App Store batch

Multi-select every device Apple wants, install your build on all of them in parallel, capture in lockstep, export a folder of named PNGs ready for upload.

🎬

Record scenarios, replay everywhere

Drive your app through onboarding once. Save the script to a .sasflow file. Replay across the entire fleet with auto-capture at marked points. App Store screenshots in 5 minutes.

🔍

Visual regression diff

Compare any two screenshots pixel-by-pixel. Catch layout regressions between builds without eyeballing every screen — percentage changed, region count, red-overlay PNG showing what moved.

Device Fleet — capture App Store screenshots in one pass

Apple wants iPhone 6.9", 6.5", 5.5", plus iPad 13" and 12.9" for an App Store submission. Doing that manually means booting each sim, installing your build, walking the same flow, screenshotting, repeating five times. The Device Fleet panel collapses that into one click.

  1. Click App Store sizes to multi-select the device matrix Apple requires.
  2. Drop your .app bundle on the install zone — we install on every selected device in parallel and auto-launch.
  3. Drive the primary device by hand using the tap panel until you're on screen 1 of your story.
  4. Click Capture all. Every booted sim grabs the current screen at the same logical moment.
  5. Repeat for screens 2–5.
  6. Click Export captured…, pick a folder. You get one PNG per device per screen, named like iPhone-17-Pro-Max-iOS-26.0-20260502-153012.png — drop straight into App Store Connect.

Built on TaskGroup so all simctl operations overlap rather than serializing. On a recent M-series Mac, installing one build across five sims takes the same wall-clock time as one install would.

Recorded scenarios — drive once, replay everywhere

The Device Fleet on its own gets you to "click capture, every device screenshots in lockstep." Recorded scenarios complete the loop: drive the flow once on a primary device, replay it on every other device with auto-capture at marked points.

  1. In Simulator Studio's tap panel, click Record. Every tap and swipe is logged with a timestamp in device-point coordinates.
  2. Between taps, click Mark capture with a label like "Onboarding step 1." That's where each playback device will screenshot.
  3. Click Stop, then save the scenario to a .sasflow file (just JSON — version-control your App Store screenshot scripts alongside your code).
  4. Switch to Device Fleet, multi-select the devices you want to run on, click Load scenario, then Play across selection.
  5. The recorder fans out every tap to every device in parallel — each device's coordinate system gets the geometrically-equivalent point automatically. At each marker, all devices screenshot simultaneously.
  6. Export — one PNG per marker per device, named OnboardingStep1__iPhone-17-Pro-Max-iOS-26.0.png. Drop straight into App Store Connect.

Same machinery the live tap panel already uses for input — Accessibility framework on visible Simulator windows. No private SPI, no install dance, no notarization gymnastics.

Visual regression diff — catch layout breaks between builds

Every release cycle has the same anxiety: did my change break a screen on a device I forgot to test? Visual Diff answers that automatically. Feed it the previous build's screenshot as baseline and the new build's as candidate; it returns the percentage of pixels that changed, the bounding boxes of every changed region, and a PNG overlay where every difference is outlined in red.

Pairs naturally with the scenario recorder: replay the same flow against an old build's binary and a new build's, diff the screen-1.png pair, screen-2.png pair, etc. Any regression that hides on devices you didn't manually inspect shows up as a visible red-bordered region.

Why first-party matters

Other tools in this space lean on private SimulatorKit SPI for tap injection. That gets you fast input but at three real costs:

Simulator Studio uses only the public commands Apple ships with the developer tools — the same path Xcode itself uses. No private SPI, no install step, no notarization workarounds. Tap and swipe injection runs through the macOS Accessibility framework on the visible Simulator window — one-time permission grant in System Settings and you can click on any captured screenshot to tap that exact point on the device.

Where it fits

Requirements