One item I have not seen mentioned yet, and involves Xcode 11 beta 5 (11M382q) involves updating your app's info.plist file.
For my scenario, I am taking an existing Swift & UIKit based application and fully migrating it to be an iOS 13 & pure SwiftUI app, so backwards compatibility is not a concern for me.
After making the necessary changes to AppDelegate:
// MARK: UISceneSession Lifecycle func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) }
And adding in a SceneDelegate class:
import UIKit import SwiftUI class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { if let windowScene = scene as? UIWindowScene { let window = UIWindow(windowScene: windowScene) window.rootViewController = UIHostingController(rootView: HomeList()) self.window = window window.makeKeyAndVisible() } } }
I was encountering a problem where my SceneDelegate was not being called. This was fixed by adding the following into my info.plist file:
<key>UIApplicationSceneManifest</key> <dict> <key>UIApplicationSupportsMultipleScenes</key> <false/> <key>UISceneConfigurations</key> <dict> <key>UIWindowSceneSessionRoleApplication</key> <array> <dict> <key>UISceneClassName</key> <string></string> <key>UISceneDelegateClassName</key> <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> <key>UISceneConfigurationName</key> <string>Default Configuration</string> <key>UISceneStoryboardFile</key> <string>LaunchScreen</string> </dict> </array> </dict> </dict>
And a screenshot to see: 
The main items to keep in sync are:
- Delegate Class Name so that Xcode knows where to find your
SceneDelegate file - Configuration Name so that the call in AppDelegate can load the correct
UISceneConfiguration
After doing this, I was then able to load my newly created HomeList view (A SwiftUI object)