Proper way of handing opening ImmersiveSpace?

if you check the code here, https://developer.apple.com/documentation/compositorservices/interacting-with-virtual-content-blended-with-passthrough


    var body: some Scene {
        ImmersiveSpace(id: Self.id) {
            CompositorLayer(configuration: ContentStageConfiguration()) { layerRenderer in

                let pathCollection: PathCollection
                do {
                    pathCollection = try PathCollection(layerRenderer: layerRenderer)
                } catch {
                    fatalError("Failed to create path collection \(error)")
                }
                
                let tintRenderer: TintRenderer
                do {
                    tintRenderer = try TintRenderer(layerRenderer: layerRenderer)
                } catch {
                    fatalError("Failed to create tint renderer \(error)")
                }
                                
                Task(priority: .high) { @RendererActor in
                    Task { @MainActor in
                        appModel.pathCollection = pathCollection
                        appModel.tintRenderer = tintRenderer
                    }
                    
                    let renderer = try await Renderer(layerRenderer,
                                                      appModel,
                                                      pathCollection,
                                                      tintRenderer)
                    try await renderer.renderLoop()

                    Task { @MainActor in
                        appModel.pathCollection = nil
                        appModel.tintRenderer = nil
                    }
                }
                
                layerRenderer.onSpatialEvent = {
                    pathCollection.addEvents(eventCollection: $0)
                }
            }
        }
        .immersionStyle(selection: .constant(appModel.immersionStyle), in: .mixed, .full)
        .upperLimbVisibility(appModel.upperLimbVisibility)

the only way it's dealing with the error is fatalError. And don't think I can throw anything or return anything else? Is there a way I can gracefully handle this and show a message box in UI?

I was hoping I could somehow trigger a failure and have https://developer.apple.com/documentation/swiftui/openimmersivespaceaction return fail. but couldn't find a nice way to do so.

Let me know if you have ideas.

Hello @DaeLee ,

This would be a great feedback request https://feedbackassistant.apple.com

In the mean time you can always provide a default tint render that can't fail to init and set an @State value on one of your SwiftUI views or their @Observed objects that could carry the error state out to a user visible view.

Let me know if any part of that approach doesn't make sense. Happy to elaborate if it would be helpful.

Proper way of handing opening ImmersiveSpace?
 
 
Q