Codex Build iOS Apps Plugin: Mirror the Simulator in the Browser and Hot-Reload SwiftUI Previews
OpenAI's Build iOS Apps plugin for Codex bundles nine iOS and Swift skills. The June 2026 addition mirrors the iOS Simulator into the Codex in-app browser and hot-reloads Swift Package-backed SwiftUI previews. XcodeBuildMCP handles simulator build, run, and debug. It installs from the /plugins browser in Codex CLI or the Plugins tab in the ChatGPT desktop app.
OpenAI's Build iOS Apps plugin for Codex gained a browser mirror on June 3, 2026: an ios-simulator-browser skill that streams the iOS Simulator into the Codex in-app browser and hot-reloads Swift Package-backed SwiftUI previews as you edit. The plugin itself is older. Its directory in OpenAI's plugins repository has carried the build-ios-apps name since March 24, 2026, XcodeBuildMCP was wired in on April 7, and the manifest now reads version 0.1.2. The plugin manifest describes it as "workflows for App Intents, SwiftUI UI work, Simulator mirroring in the Codex in-app browser, performance profiling, leak investigation, and simulator debugging." OpenAI's developer docs point at it from the Build for iOS use-case guide.
For context on how Codex keeps adding surfaces, see our writeup of the Codex Chrome extension and Codex computer use and thread automations. For where Codex sits against other agentic coding tools, see Codex CLI vs Claude Code vs Cursor architecture. Anthropic's answer to the same problem is a simulator pane in Claude Code Desktop.
Key Takeaways
- The June 2026 feature: mirror the iOS Simulator in Codex's in-app browser and hot-reload package-backed SwiftUI previews, with no trip back to Xcode to see an edit.
- Nine skills, not one. The README lists
ios-debugger-agent,ios-simulator-browser,ios-ettrace-performance,ios-memgraph-leaks,ios-app-intents,swiftui-liquid-glass,swiftui-performance-audit,swiftui-ui-patterns, andswiftui-view-refactor. - Open source.
github.com/openai/pluginsunderplugins/build-ios-apps, MIT license. - XcodeBuildMCP-backed. The plugin's
.mcp.jsonlaunchesxcodebuildmcp@latestwith the simulator, UI automation, debugging, and logging workflows enabled. - Package-backed previews only. The skill supports
PreviewProviderand#Previewdeclarations in an importable Swift package and will not modify your Xcode project to force previews. - Install from
/pluginsin Codex CLI or the Plugins tab in the ChatGPT desktop app; the IDE extension does not support plugins.
What the Plugin Does
Per the plugin README, fetched September 8, 2026, the plugin covers:
- designing App Intents, app entities, and App Shortcuts for system surfaces
- building and refactoring SwiftUI UI using current platform patterns
- reviewing or adopting iOS 26+ Liquid Glass APIs
- auditing SwiftUI performance and guiding profiling workflows
- capturing symbolicated ETTrace simulator profiles for focused app flows
- capturing and comparing iOS memgraphs to root-cause leaks
- debugging iOS apps on simulators with XcodeBuildMCP-backed flows
- mirroring Simulator in the browser and hot-reloading package-backed SwiftUI previews
- restructuring large SwiftUI views toward smaller, more stable compositions
The manifest's long description adds the reader-facing version: "design App Intents and App Shortcuts, build or refactor SwiftUI UI, render SwiftUI previews in the Codex in-app browser, adopt modern iOS patterns such as Liquid Glass, audit runtime performance, capture ETTrace profiles, investigate memory leaks, and debug apps on simulators with XcodeBuildMCP-backed workflows."
How the Plugin Got Here
The repository history, read through the GitHub API on September 8, 2026:
| Date | Change |
|---|---|
| March 24, 2026 | plugins/ios-design renamed to plugins/build-ios-apps ("Rename platform plugins to action-oriented titles") |
| April 7, 2026 | XcodeBuildMCP added; ios-app-intents skill added |
| April 25, 2026 | Mobile performance skills added (ETTrace profiles, memgraph leaks) |
| June 3, 2026 | ios-simulator-browser skill added: the SKILL.md, a preview launcher script, and the generated host templates; the README gained two lines |
| June 3 and June 8, 2026 | Manifest version bumped to 0.1.2 |
So the June 4 attention was for one skill landing in a plugin that already existed. That matters if you tried the plugin before June and found no browser mirror: it was not there.
The In-App Browser Preview Loop
The skill file describes two workflows.
Browser mirror. The skill takes an explicit Simulator UDID (from the build workflow or xcrun simctl list devices available), starts serve-sim pinned to that simulator in a long-running terminal, and opens the local URL serve-sim prints in the Codex in-app browser. The skill tells the agent to confirm "a real frame is rendering before reporting success. A loaded page alone is not proof that the simulator stream is healthy." It also warns the agent never to run an unscoped serve-sim --kill, because another thread may own a different simulator mirror.
SIM="<simulator-udid>"
npx --yes serve-sim@latest "$SIM"
serve-sim is a third-party npm package, not an OpenAI one: the registry describes it as "The npx serve of Apple Simulators", first published April 17, 2026, latest 0.1.46 on August 22, 2026, repository EvanBacon/serve-sim.
Preview hot reload. A bundled launcher, swiftui-preview-browser.mjs, takes a Package.swift path, a package target, and a device UDID. Per the skill file, it "generates a disposable host project outside the user's source tree, installs and launches that host in Simulator, and watches the package for edits." On a source edit "the launcher rebuilds a generated dylib and hot-swaps it into the running host without relaunching the app." The host shows every preview variant in the selected target with in-simulator page controls; --preview-filter narrows it to a regex on display names or identifiers. Once the launcher prints the Simulator UDID, the agent starts serve-sim on the same UDID and opens the mirror.
The support boundary, verbatim from the skill file: "Support Swift Package-backed PreviewProvider and #Preview declarations through the generated host. Do not edit the user's .xcodeproj, .xcworkspace, Package.swift, schemes, or build settings to force preview support." If your previews live only in an app target rather than an importable package, this loop does not reach them.
How It Fits With XcodeBuildMCP
The plugin's .mcp.json declares one server:
{
"mcpServers": {
"xcodebuildmcp": {
"command": "npx",
"args": ["-y", "xcodebuildmcp@latest", "mcp"],
"env": {
"XCODEBUILDMCP_ENABLED_WORKFLOWS": "simulator,ui-automation,debugging,logging"
}
}
}
}
OpenAI's Build for iOS guide frames when that matters: "Use XcodeBuildMCP once you're inside a full Xcode project and need deeper automation. That's when schemes, targets, simulator control, screenshots, logs, and UI interaction matter enough that plain shell commands stop being the whole story." The same guide says to keep the loop CLI-first with xcodebuild or Tuist, and that "for that first pass, you often don't need any skill or MCP server."
So the division of labor is: XcodeBuildMCP handles build, run, and inspect against the simulator; the plugin's skills layer iOS-specific workflows (SwiftUI patterns, App Intents, profiling) and the browser mirror on top. The npm registry lists xcodebuildmcp 2.7.0 as latest, published July 23, 2026.
How to Install It
OpenAI's plugins documentation states the surfaces: "Plugins work in Chat and Work across ChatGPT on the web, desktop, and mobile, and in Codex in the ChatGPT desktop app. Codex CLI also has a plugin browser for Codex environments. The IDE extension doesn't support plugins."
- Codex CLI: "enter
/pluginsto open the plugin browser. Install a plugin from a configured marketplace, then start a new session before using its bundled skills or tools." - ChatGPT desktop app: open the Plugins tab, browse or search, select the plus button to install, then start a new chat.
The same doc shows public plugins listed in one universal directory shared by ChatGPT and Codex. Nothing in the plugins doc, the use-case guide, or the repository states a plan requirement or a beta label for this plugin.
How a Reader Uses This
Pattern 1: Tight SwiftUI UI Iteration
Your views live in a Swift package the app imports. Point the launcher at Package.swift and the target, start serve-sim on the UDID it prints, and describe the change. Codex edits the package, the dylib rebuilds and hot-swaps, and the mirrored frame in the in-app browser updates without an Xcode rebuild.
Pattern 2: Adding System Integration
You want your app to expose actions to Shortcuts and Spotlight. The ios-app-intents skill covers designing app intents, entities, and App Shortcuts for those system surfaces, then wiring them in.
Pattern 3: Performance and Leak Triage
An app flow feels slow or is leaking memory. The ios-ettrace-performance skill captures symbolicated ETTrace simulator profiles for a focused flow and ios-memgraph-leaks captures and compares iOS memgraphs, giving Codex concrete signals rather than guesses.
Caveats and Open Questions
- The announcement wording is unverifiable. The June 4, 2026 OpenAIDevs post on X was the discovery source for this page. As of September 8, 2026, fetching it returns a JavaScript shell with none of the post text, so the claim that Codex lets you "view and test your iOS app in the in-app browser, open SwiftUI previews, and hot reload edits without leaving Codex" is attributed to that post and cannot be re-checked. Every capability on this page now rests on the plugin manifest, README, skill file, and OpenAI's docs instead.
- No plan, price, or status is stated. The official sources reviewed do not state availability tiers, pricing, GA or beta status, or a plugin-catalog count, so this page does not either.
- Requires a local Xcode and simulator setup. The simulator-backed flows depend on XcodeBuildMCP,
xcrun simctl, andserve-sim; the plugin orchestrates that toolchain rather than replacing it. - Open source means it can change. The README is the current capability list; the history table above is where to look when a capability you expected is missing.
Corrections and Updates
September 8, 2026: This page said OpenAI "shipped a Build iOS Apps plugin" on June 4, 2026. The plugin had lived in OpenAI's plugins repository under that name since March 24, 2026, with XcodeBuildMCP wired in on April 7; what landed on June 3 was the ios-simulator-browser skill that added the browser mirror and preview hot reload. The page also sourced its headline claim and one FAQ answer to an X post alone; the capability claims now cite the plugin manifest, README, skill file, and OpenAI's docs, and the README's Liquid Glass and view-restructuring lines, present on publish day, are included.
Sources
- Build iOS Apps plugin README: https://github.com/openai/plugins/tree/main/plugins/build-ios-apps (fetched September 8, 2026)
- Plugin manifest, version 0.1.2: https://github.com/openai/plugins/blob/main/plugins/build-ios-apps/.codex-plugin/plugin.json
- Plugin MCP config: https://github.com/openai/plugins/blob/main/plugins/build-ios-apps/.mcp.json
- iOS Simulator Browser skill: https://github.com/openai/plugins/blob/main/plugins/build-ios-apps/skills/ios-simulator-browser/SKILL.md (added June 3, 2026, PR #308)
- Repository history for
plugins/build-ios-appsvia the GitHub commits API (rename March 24, 2026, PR #95; XcodeBuildMCP April 7, 2026, PR #128) - OpenAI Codex, Build for iOS: https://developers.openai.com/codex/use-cases/native-ios-apps
- OpenAI, Plugins: https://learn.chatgpt.com/docs/plugins
- npm registry:
serve-sim(0.1.46, August 22, 2026) andxcodebuildmcp(2.7.0, July 23, 2026) - OpenAIDevs announcement (X), June 4, 2026: https://x.com/OpenAIDevs/status/2062599291479478275 (not readable by any tool as of September 8, 2026)
Read next
Related coverage- Codex
Codex Chrome Extension, Now the ChatGPT Browser Extension: How It Drives a Signed-In Browser for LinkedIn, Salesforce, Gmail, and Internal Tools
OpenAI's Codex Chrome extension is now the ChatGPT browser extension. It lets ChatGPT Work or Codex use your signed-in Chrome, Edge, Brave, Opera, or Vivaldi for sites like LinkedIn, Salesforce, and Gmail. Set it up in the ChatGPT desktop app under Settings > Computer Use, invoke it with @Chrome, and approve each new site.
- OpenAI
OpenAI Codex Goes 'For Almost Everything': Mac Computer Use, Browser Comment Mode, and Thread Automations Explained
OpenAI's April 16, 2026 Codex update pushed it past coding: Computer Use drives Mac apps (Windows followed on May 29), an in-app browser takes comments on rendered pages, and thread automations wake a thread on a schedule. Since July 9, 2026, Codex lives in the ChatGPT desktop app, where thread automations are scheduled tasks in a chat.
- Codex
Codex CLI vs Claude Code vs Cursor: 2026 Architecture Deep-Dive (Sandboxing, Context, Plugins, Scheduling)
Codex CLI, Claude Code and Cursor now all confine local shell commands in an OS-enforced sandbox and all run hook scripts, so the real split is defaults and composition. Codex sandboxes by default, Claude Code's sandbox is opt-in, and Cursor sandboxes under Auto-review. Choose by default posture, Windows support and how unattended work runs.
Frequently Asked Questions
What does the Codex Build iOS Apps plugin do?
As of September 2026 it packages nine skills for iOS and Swift work in Codex. The plugin manifest describes it as workflows for App Intents, SwiftUI UI work, Simulator mirroring in the Codex in-app browser, performance profiling, leak investigation, and simulator debugging. The README also lists reviewing or adopting iOS 26 Liquid Glass APIs and restructuring large SwiftUI views.
How does the in-app browser preview work?
The ios-simulator-browser skill runs the serve-sim package against a specific Simulator UDID and opens the local URL it prints in the Codex in-app browser. For hot reload, a bundled launcher generates a disposable host app outside your source tree, installs it in the Simulator, watches the Swift package, and hot-swaps a rebuilt dylib into the running host when a source file changes.
Is the Build iOS Apps plugin open source?
Yes. It lives in OpenAI's public plugins repository at github.com/openai/plugins under plugins/build-ios-apps, MIT-licensed, manifest version 0.1.2 as of September 2026. The directory has carried that name since March 24, 2026; the browser mirror skill was added on June 3, 2026.
Does the plugin use XcodeBuildMCP?
Yes. The plugin's .mcp.json starts xcodebuildmcp@latest through npx with the simulator, ui-automation, debugging, and logging workflows enabled. OpenAI's iOS use-case doc describes XcodeBuildMCP as the tool to reach for inside a full Xcode project when schemes, targets, simulator control, screenshots, logs, and UI interaction matter.
How do you install the Build iOS Apps plugin?
In Codex CLI, enter /plugins to open the plugin browser, install it from a configured marketplace, then start a new session. In the ChatGPT desktop app, open the Plugins tab. OpenAI's plugins doc says plugins are not available in the IDE extension. The docs reviewed do not state a plan requirement for this plugin.
What are the limits of the preview hot reload?
The skill file states it supports Swift Package-backed PreviewProvider and #Preview declarations through its generated host, and that it will not edit your .xcodeproj, .xcworkspace, Package.swift, schemes, or build settings to force preview support. Previews that live only in an app target are outside that boundary.
Get an email when Codex changes its plans, prices or limits
We check every change against Codex's own pages before we send. You also get the weekly AI Catchup; one click unsubscribes.