We have a fairly complex app that needs to support iOS versions all the way back to iOS 15. For the Duo, it makes sense to host the app's UI in a UISplitViewController. However, given the compressed timeframe and not wanting to cause regressions for those not running on an iPhone Duo, we would like to keep our existing UINavigationController hosted UI for those devices.
Eventually, we will move everything over to UISplitViewController, but with only a month to do this, having two separate paths makes sense for now. The hosted views themselves are already resizable and have been since day one as we also support iPad and Mac, though those use a 3-pane split view (the Duo version will only use a two-pane split view).
So far the only way I've been able to work out if we're running on the iPhone Duo is to create and show an instance of our launch screen in scene(_, willConnectTo:, options:) in our scene delegate, then dispatch a validation method on main to see if one of the side safe area insets becomes non-zero. After that, I can stand up the correct host view controller.
This seems like a risky approach, so I'm hoping someone has come up with something better or there is an API that I overlooked. Any guidance on this would be much appreciated.