<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/UIHostingSceneDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI22UIHostingSceneDelegateP"
  },
  "title" : "UIHostingSceneDelegate"
}
-->

# UIHostingSceneDelegate

Extends `UIKit/UISceneDelegate` to bridge SwiftUI scenes.

```
protocol UIHostingSceneDelegate : UISceneDelegate
```

## Overview

Declare any SwiftUI scenes you wish to activate from UIKit in the static
`rootScene` property of your conforming class:

```
class HostingSceneDelegate: UIHostingSceneDelegate {
    static var rootScene: some Scene {
        WindowGroup(id: "swiftui-window") {
            ContentView()
        }
    }

    // Add UISceneDelegate lifecycle callbacks here
}
```

Use a class conforming to [`UIHostingSceneDelegate`](/documentation/SwiftUI/UIHostingSceneDelegate) to  activate a
scene by its ID or presented value with `UISceneSessionActivationRequest`:

```
if let requestWithID = UISceneSessionActivationRequest(
    hostingDelegateClass: HostingSceneDelegate.self,
    id: "swiftui-window"
) {
    UIApplication.shared.activateSceneSession(for: requestWithID)
}

if let requestWithData = UISceneSessionActivationRequest(
    hostingDelegateClass: HostingSceneDelegate.self,
    value: FavoriteNumber(13)
) {
    UIApplication.shared.activateSceneSession(for: requestWithData)
}
```

When a SwiftUI scene declared in your `rootScene` property is activated,
an instance of your conforming class will be created by SwiftUI and receive
window scene lifecycle callbacks.

Your `UIHostingSceneDelegate` class can be used with a
`UISceneConfiguration` in your app delegate’s
`application(_:configurationForConnecting:options:)`method to activate a
SwiftUI scene in response to an external event:

```
class AppDelegate: UIApplicationDelegate {

    func application(
        _ app: UIApplication,
        configurationForConnecting sceneSession: UISceneSession,
        options: UIScene.ConnectionOptions
    ) -> UISceneConfiguration {
        let config = UISceneConfiguration(
            name: nil, sessionRole: sceneSession.role)
        config.delegateClass = HostingSceneDelegate.self
        return config
    }

}
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)