ios-simulator-browser

Mirror an iOS Simulator into a browser and render SwiftUI previews with hot reload.

Updated Jul 31, 2026
One-click install
npx skills add https://github.com/AarnavBaddam/skills --skill ios-simulator-browser-aarnavbaddam
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ios-simulator-browser
Source: https://github.com/AarnavBaddam/skills/tree/main/ios-simulator-browser
Command: npx skills add https://github.com/AarnavBaddam/skills --skill ios-simulator-browser-aarnavbaddam

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires serve-sim, and includes scripts (resource) components.

What problem does it solve? Viewing and iterating on an iOS app or SwiftUI preview normally requires Xcode Canvas or manual simulator interaction, which breaks flow when working outside Xcode. This Skill streams a live iOS Simulator into the Codex in-app browser and renders SwiftUI previews from Swift packages with hot reload, so you can watch and iterate on UI without leaving your workflow. ## Core Features & Use Cases - Simulator Browser Mirroring: Streams a booted iOS Simulator into the in-app browser via the serve-sim helper, pinned to an explicit simulator UDID with automatic cleanup. - SwiftUI Preview Rendering: Generates a disposable host app that discovers and displays every PreviewProvider and #Preview variant in a selected Swift Package target, with optional regex filtering. - Hot Reload: Watches the package source tree and hot-swaps a rebuilt dylib into the running host app on every edit, without relaunching. - Use Case: You are editing a SwiftUI view in a Swift package and want live visual feedback. Launch the preview browser against your Package.swift, open the mirrored simulator in the browser, and see each edit reflected in seconds. ## Quick Start Ask the assistant to render the SwiftUI previews from your Swift package in the in-app browser by pointing it at your Package.swift, choosing a package target, and selecting a simulator UDID.

Frequently Asked Questions about ios-simulator-browser

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I view an iOS Simulator in a browser?

Run the serve-sim helper with an explicit simulator UDID from xcrun simctl list devices, then open the local URL it prints in the in-app browser. Verify a real frame renders before considering the stream healthy.

How do I render SwiftUI previews outside Xcode Canvas?

Run the swiftui-preview-browser script with your Package.swift path, a --package-target name, and a simulator UDID. It generates a disposable host app that discovers all PreviewProvider and #Preview variants in that target and displays them in the simulator.

Does SwiftUI preview hot reload work without relaunching the app?

Yes. The launcher watches the package source tree, rebuilds a generated dylib on each edit, and injects it into the running host process. It verifies the PID is unchanged and logs a hot reloaded confirmation line.

Can I preview Swift packages that only export dynamic library products?

No. Targets exported only by dynamic library products are unsupported because hot reload replaces only the generated preview plugin dylib, leaving an already-loaded dynamic framework stale. Use a static library product instead.

Why is my simulator mirror not showing a frame in the browser?

A loaded page alone does not prove the stream is healthy. Check that serve-sim is still running for the correct UDID, kill any stale helper with serve-sim --kill scoped to that UDID, and restart the mirror.

Does the preview launcher modify my Xcode project or Package.swift?

No. The launcher generates a disposable host project in a temporary scratch directory outside your source tree. It never edits your .xcodeproj, .xcworkspace, Package.swift, schemes, or build settings.