<!--
{
  "availability" : [
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "FoveatedStreaming",
  "identifier" : "/documentation/FoveatedStreaming/FoveatedStreamingExtension",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Foveated Streaming"
    ],
    "preciseIdentifier" : "s:17FoveatedStreaming0aB9ExtensionP"
  },
  "title" : "FoveatedStreamingExtension"
}
-->

# FoveatedStreamingExtension

A foveated streaming provider extension.

```
@MainActor protocol FoveatedStreamingExtension : AnyObject, AppExtension
```

## Overview

Foveated streaming providers are a system extension that allows developers to use your custom
protocol with a [`FoveatedStreamingSession`](/documentation/FoveatedStreaming/FoveatedStreamingSession).

Foveated streaming providers require the `com.apple.developer.foveated-streaming-provider` entitlement.

```swift
@main
final class MyStreamingProvider: FoveatedStreamingExtension {
    func connect(context: Context) async throws { /* ... */ }
    func disconnect() async throws { /* ... */ }
    func openMessageChannel(_ channel: MessageChannel) throws { /* ... */ }
    var immersiveScene: some View { /* ... */ }
}
```

## Topics

### Associated Types

[`associatedtype Content : View`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/Content)

The type of the view that renders the streamed content.

### Instance Properties

[`var immersiveScene: Self.Content`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/immersiveScene)

The SwiftUI view that renders the streamed content.

### Instance Methods

[`func connect(context: Self.Context) async throws`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/connect(context:))

Connect to the provided endpoint.

[`func disconnect() async throws`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/disconnect())

Disconnect from the streaming endpoint.

[`func openMessageChannel(Self.MessageChannel) throws`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/openMessageChannel(_:))

Handles a message channel opened by the host app.

### Type Aliases

[`typealias Context`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/Context)

The context object provided to the extension when it connects.

[`typealias Endpoint`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/Endpoint)

The streaming endpoint the extension connects to.

[`typealias FocusRegion`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/FocusRegion)

The approximate region where the person is looking.

[`typealias MessageChannel`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/MessageChannel)

A message channel between the host app and the extension.

[`typealias Status`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/Status)

The lifecycle state of the extension.

## Relationships

### Inherits From

[`AppExtension`](/documentation/ExtensionFoundation/AppExtension)

---

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)