Dunfey · Hotel WWDC as data, est. 1983
Front desk everything
Years
Topics

2026 Graphics & GamesSpatial Computing

WWDC26 · 14 min · Graphics & Games / Spatial Computing

Use foveated streaming to bring immersive content to visionOS

Find out how foveated streaming delivers remotely rendered scenes to Apple Vision Pro in full fidelity. Explore how this framework combines native visionOS capabilities with third-party streaming technologies completely wirelessly, demonstrated using an OpenXR scene and NVIDIA CloudXR. Learn about the FoveatedStreaming framework, integration with the NVIDIA CloudXR SDK, and how dynamically foveated streaming provides benefits while still preserving privacy.

Watch at developer.apple.com ↗

Transcript all transcripts

Chapters

  • 0:00 — Introduction
  • 4:08 — How Foveated Streaming works
  • 4:46 — Set up the streaming endpoint
  • 5:18 — Create a visionOS receiver app
  • 8:02 — Integrate with the streaming endpoint
  • 11:28 — Measure performance
  • 11:56 — Enhance with visionOS features
  • 13:56 — Next steps

Code shown on screen · 4 snippets

Connect to a streaming endpoint swift · at 6:03 ↗
// Connect to a streaming endpoint

import SwiftUI
import FoveatedStreaming

struct ConnectView: View {
    let session: FoveatedStreamingSession

    var body: some View {
        Button("Connect") {
            Task {
                try await session.connect()
            }
        }
    }
}
Display a Foveated Streaming session in your immersive space swift · at 6:44 ↗
// Display a Foveated Streaming session in your immersive space

import SwiftUI
import FoveatedStreaming

@main struct FoveatedStreamingSampleApp: App {
    private let session = FoveatedStreamingSession()

    var body: some SwiftUI.Scene {
        ImmersiveSpace(foveatedStreaming: session)
    }
}
Compose SwiftUI content with Foveated Streaming swift · at 6:55 ↗
// Compose SwiftUI content with Foveated Streaming

import SwiftUI
import FoveatedStreaming

@main struct FoveatedStreamingSampleApp: App {
    private let session = FoveatedStreamingSession()
    private let appModel = AppModel()

    var body: some SwiftUI.Scene {
        Window("Main", id: appModel.mainWindowId) {
            ContentView(session: session)
                .environment(appModel)
                .environment(session)
                // ...
        }
      
        ImmersiveSpace(foveatedStreaming: session) {
            SpatialContainer {
                ReopenMainWindowView().environment(appModel)
                TransformStreamWidgetView().environment(session)
            }
        }
       
    }
}
Compose RealityKit content with Foveated Streaming swift · at 13:42 ↗
// Compose RealityKit content with Foveated Streaming

import SwiftUI
import RealityKit
import FoveatedStreaming

@main struct FoveatedStreamingSampleApp: App {
    private let session = FoveatedStreamingSession()
    private let appModel = AppModel()

    var body: some SwiftUI.Scene {
        ImmersiveSpace(foveatedStreaming: session) {
            RealityView { content in
                // ...
            }
        }

    }
}

Resources