iPhone Duo supports multiple windows but `requestSceneSessionDestruction` fails due to unsupported device idiom

Problem: iPhone Duo supports multiple windows using Split Views. However, we cannot programmatically close windows using requestSceneSessionDestruction because we get the following error: "This functionality is not supported for this device idiom."

This seems like a miss in Apple's requestSceneSessionDestruction implementation.

If the Duo is going to let users open multiple windows (where supportsMultipleScenes is true for the Duo), then developers should be able to close them via requestSceneSessionDestruction, too. 🤔

Is this a bug? I have filed a ticket here in case it is: FB25353479


Additional implementation details:

Our app supports multiple windows on iPad devices. The Duo is the first phone to support multiple windows as well. For user convenience, our app has an option to combine information from all windows and then collapse everything down to one single window. We use requestSceneSessionDestruction to close the extraneous windows afterward. This works great on iPad, but we get the unsupported device idiom error on the Duo only. We have no way of closing windows programmatically as far as I can tell.

Thanks for the post, one comment I have is why is that a bug? iPhone Duo is an iOS platform not iPadOS. Are you targeting the correct platform? Instead of Windows is about support for Scenes.

There is a great resource to go over the changes you need to do for iPhone Duo https://developer.apple.com/iphone-duo/

I would recommend to watch this video https://developer.apple.com/videos/play/tech-talks/111464/

The iPhone Duo offers features such as Split View support; however, I recommend utilizing ArrangementView, which is my preferred approach. On iOS, I advise against using @Environment(.dismissWindow). Instead, implement a solution exclusively with ArrangementView to ensure optimal appearance on the iPhone Duo while maintaining expected behavior on other iPhone models.

Sometime helps explaining what you are tying to do so engineers here can help pointing into the best solution for you. So feel free to explain in detail.

Albert  WWDR

Hello, thanks for the quick response!

Background Info

To clarify, we are building a browser app. We have the same behaviour as Safari: with the Duo unfolded, you can use Split Views to open two independent windows of Safari, side by side.

This lets users browse the internet in two different windows, similar to how you can have separate windows for Safari on macOS. (For this reason, ArrangementView unfortunately does not satisfy our needs.)

Our app has a feature for users who have opened 2+ independent instances of our app (i.e. iPhone Duo users using Split View and iPad users using Multitask). By tapping a button, users can "merge" all their open windows, copying all their browser tabs to one window, then close the extra windows. Afterward, the App Switcher should then only display one copy of the app.

Demo

I've uploaded a minimal reproducible example of the problem here: GitHub Demo

You just have to run on iPhone Duo in Xcode 27 and you will see the error logged to the console. The README shows the steps to open two windows in Split View on the iPhone Duo.

In Closing

Seeing as I can open two distinct windows of my app on the iPhone Duo using Split View (just like you can with Safari), and thus create two independent connectedScenes, it seems odd that I cannot request one of these scenes to be destroyed with link text. 🤔

Is there another way we can programmatically close one of the windows for iPhone Duo users who have two opened using Split View?

Thank you for your time!