<!--
{
  "availability" : [
    "macCatalyst: 18.2.0 -",
    "macOS: 12.3.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ScreenCaptureKit",
  "identifier" : "/documentation/ScreenCaptureKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "ScreenCaptureKit"
    ],
    "preciseIdentifier" : "ScreenCaptureKit"
  },
  "title" : "ScreenCaptureKit"
}
-->

# ScreenCaptureKit

Filter and select screen content and stream it to your app.

## Overview

Use the ScreenCaptureKit framework to add support for high-performance frame capture of screen and audio content to your Mac app. The framework gives you fine-grained control to select and stream only the content that you want to capture. As a stream captures new video frames and audio samples, it passes them to your app as <doc://com.apple.documentation/documentation/CoreMedia/CMSampleBuffer> objects that contain the media data and its related metadata. ScreenCaptureKit also provides a macOS-integrated picker for streaming selection and management, [`SCContentSharingPicker`](/documentation/ScreenCaptureKit/SCContentSharingPicker).

> Related Sessions from WWDC22 and WWDC23:
> Session 10156: [Meet ScreenCaptureKit](https://developer.apple.com/wwdc22/10156)
> 
> Session 10155: [Take ScreenCaptureKit to the next level](https://developer.apple.com/wwdc22/10155)
> 
> Session 10136: [What’s new in ScreenCaptureKit](https://developer.apple.com/videos/play/wwdc2023/10136/)

## Topics

### Essentials

  <doc://com.apple.documentation/documentation/Updates/ScreenCaptureKit>

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.persistent-content-capture>

[Capturing screen content in macOS](/documentation/ScreenCaptureKit/capturing-screen-content-in-macos)

Stream desktop content like displays, apps, and windows by adopting screen capture in your app.

### Shareable content

[`SCShareableContent`](/documentation/ScreenCaptureKit/SCShareableContent)

An instance that represents a set of displays, apps, and windows that your app can capture.

[`SCShareableContentInfo`](/documentation/ScreenCaptureKit/SCShareableContentInfo)

An instance that provides information for the content in a given stream.

[`SCShareableContentStyle`](/documentation/ScreenCaptureKit/SCShareableContentStyle)

The style of content presented in a stream.

[`SCDisplay`](/documentation/ScreenCaptureKit/SCDisplay)

An instance that represents a display device.

[`SCRunningApplication`](/documentation/ScreenCaptureKit/SCRunningApplication)

An instance that represents an app running on a device.

[`SCWindow`](/documentation/ScreenCaptureKit/SCWindow)

An instance that represents an onscreen window.

### Content capture

[`SCStream`](/documentation/ScreenCaptureKit/SCStream)

An instance that represents a stream of shareable content.

[`SCStreamConfiguration`](/documentation/ScreenCaptureKit/SCStreamConfiguration)

An instance that provides the output configuration for a stream.

[`SCContentFilter`](/documentation/ScreenCaptureKit/SCContentFilter)

An instance that filters the content a stream captures.

[`SCStreamDelegate`](/documentation/ScreenCaptureKit/SCStreamDelegate)

A delegate protocol your app implements to respond to stream events.

[`SCScreenshotManager`](/documentation/ScreenCaptureKit/SCScreenshotManager)

An instance for the capture of single frames from a stream.

[`SCScreenshotConfiguration`](/documentation/ScreenCaptureKit/SCScreenshotConfiguration)

An object that contains screenshot properties such as output width, height, and image quality specifications.

[`SCScreenshotOutput`](/documentation/ScreenCaptureKit/SCScreenshotOutput)

An object that contains all images requested by the client.

### Output processing

[`SCStreamOutput`](/documentation/ScreenCaptureKit/SCStreamOutput)

A delegate protocol your app implements to receive capture stream output events.

[`SCStreamOutputType`](/documentation/ScreenCaptureKit/SCStreamOutputType)

Constants that represent output types for a stream frame.

[`SCStreamFrameInfo`](/documentation/ScreenCaptureKit/SCStreamFrameInfo)

An instance that defines metadata keys for a stream frame.

[`SCFrameStatus`](/documentation/ScreenCaptureKit/SCFrameStatus)

Status values for a frame from a stream.

### System content-sharing picker

[`SCContentSharingPicker`](/documentation/ScreenCaptureKit/SCContentSharingPicker)

An instance of a picker presented by the operating system for managing frame-capture streams.

[`SCContentSharingPickerConfiguration`](/documentation/ScreenCaptureKit/SCContentSharingPickerConfiguration-swift.struct)

An instance for configuring the system content-sharing picker.

[`SCContentSharingPickerConfiguration`](/documentation/ScreenCaptureKit/SCContentSharingPickerConfiguration-c.class)

An instance for configuring the system content-sharing picker.

[`SCContentSharingPickerMode`](/documentation/ScreenCaptureKit/SCContentSharingPickerMode)

Available modes for selecting streaming content from a picker presented by the operating system.

[`SCContentSharingPickerObserver`](/documentation/ScreenCaptureKit/SCContentSharingPickerObserver)

An observer protocol your app implements to receive messages from the operating system’s content picker.

### Stream errors

[`SCStreamErrorDomain`](/documentation/ScreenCaptureKit/SCStreamErrorDomain)

A string representation of the error domain.

[`SCStreamError`](/documentation/ScreenCaptureKit/SCStreamError)

An instance representing a ScreenCaptureKit framework error.

### Stream errors

[`SCStreamErrorDomain`](/documentation/ScreenCaptureKit/SCStreamErrorDomain)

A string representation of the error domain.

[`SCStreamError.Code`](/documentation/ScreenCaptureKit/SCStreamError/Code)

Codes for user cancellation events and errors that can occur in ScreenCaptureKit.



---

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)
