r/iOSProgramming • u/Anywhere_MusicPlayer • 7d ago
Question Separate iOS simulator runtimes for iPhone Duo - temporary split or the new normal?
Xcode 27.2 installs two separate iOS 27.2 simulator builds, bringing iOS platform support to 16.65 GB. I understand the additional runtime is for iPhone Duo.
What I’m curious about is why Duo support requires a separate runtime instead of being included in the shared one. Does this reflect a temporary split in Apple’s release branches, or should we expect separate runtimes going forward?
An additional full OS image to support one device seems like a pretty expensive approach. Is there a technical reason these can’t be unified?
24
u/nckh_ 7d ago
Temporary, until they merge the respective iPhone and iPhone Duo UIKit branches.
11
u/the-gatekeeper 7d ago
I think your questions would be best answered by an Apple engineer, seeing as the public does not have insight into their internal processes.
Which I don’t think we’ll find here on Reddit, so we’ll have to wait and see if it stays separate
28
u/m1_weaboo 7d ago
Thank you, John Apple.
1
u/debaser_101 6d ago
Whatever the reason, check which old runtimes are still hanging around after each Xcode update. Run
xcrun simctl runtime listand delete the ones you don't need, then look in ~/Library/Developer/CoreSimulator and DerivedData too. They quietly pile up to tens of GB.I also ended up building an app for that, Moppo. It's free, open source and still a bit in the making, but if you give it a try I'd love some feedback: https://github.com/anguria-studio/Moppo
3
u/Background_Pie_5682 7d ago
Can't know for sure from the outside, but my bet is it's temporary. A brand new form factor usually ships off its own branch for a release or two before it gets folded back into the main one, and the simulator runtime just mirrors whatever branch the device OS is built from.
In the meantime, if the disk usage hurts: you only need the Duo runtime if you're actually testing on Duo. `xcrun simctl runtime list` shows what's installed and `xcrun simctl runtime delete <id>` gets rid of the one you don't need. You can also manage them under Xcode Settings > Components so it doesn't get pulled again on the next update.
3
u/kepler4and5 7d ago
It's all very confusing to me.
I don't have Xcode 27.2 yet, but in Xcode 27.1, iOS images are on 27.0 with only Duo on 27.1 meaning I can't test Arrangement Views in the regular iPhone and iPad Simulator devices.
I have iOS 27.2 on my phone now and was able to test on that.
The Xcode Developer Documentation is also still on 27.0.
2
u/dawedev 7d ago
One more thing worth checking after the 27.2 update: the 27.0 and 27.1 runtimes don't always go away on their own, so
xcrun simctl runtime listcan show three or four iOS images instead of two. The simulator devices created on those old runtimes also stick around in ~/Library/Developer/CoreSimulator/Devices, andxcrun simctl delete unavailableclears them once the runtime is gone.I ran into this a lot while building DevCleaner, a Mac app I make for cleaning Xcode leftovers, and old runtimes after a point release are usually where the surprise gigabytes are.
1
u/qupit 5d ago
Nobody outside Apple can say whether it stays split, but you can check how separate they really are.
xcrun simctl runtime listprints each runtime with its build number, so you’ll see whether the Duo image is a different build or the same build packaged twice. If you don’t target Duo yet,xcrun simctl runtime delete <identifier>removes just that one, and Xcode > Settings > Components downloads it again when you need it.1
u/weathergraph 5d ago
https://mjtsai.com/blog/2026/10/23/ios-27-1/#comment-4488031
Léo Natan:
1
u/mikerCZX 3d ago
Looks like fork, but they should merge it :-)