<!--
{
  "documentType" : "article",
  "framework" : "Professional Video Applications",
  "identifier" : "/documentation/Professional-Video-Applications/workflow-extensions",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Workflow Extensions"
}
-->

# Workflow Extensions

Integrate your app’s workflow within the Final Cut Pro interface to streamline data exchange.

## Discussion

When your app supports workflows that require users to exchange data between your app and Final Cut Pro, consider adding a workflow extension to your app. A workflow extension is not a replacement for your app; it’s an extension of the app’s functionality, made available within the Final Cut Pro interface. When a user’s workflow requires frequent switching between your app and the Final Cut Pro interface, having your app’s functionality within the interface provides a seamless user experience.

You must use a macOS app to contain and deliver your workflow extension. The app that contains the extension is called the *container app*.

When a user launches an extension, Final Cut Pro hosts the extension in its interface, inside a floating window, and becomes the *host app*. However, the amount of information a workflow extension presents in a floating window space may not be sufficient for complex tasks. Create an extension for workflows that are optimized for limited screen size; for example, managing media files, and browsing and accessing stock footage. Delegate time-consuming or complicated tasks to the container app.

![Screenshot showing a workflow extension inside a floating window in the Final Cut Pro interface.](images/com.apple.professionalvideoapplications/media-3570238@2x.png)

You can extend a workflow extension’s functionality beyond data exchange by using the libraries provided in the Workflow Extension SDK. The libraries facilitate a workflow extension’s interaction and communication with the Final Cut Pro timeline. You can use the APIs in the SDK to support workflows that allow users to collaborate in real time on a project opened in both Final Cut Pro and the workflow extension.

## Topics

### Essentials

[Designing Workflow Extensions](/documentation/Professional-Video-Applications/designing-workflow-extensions)

Follow these design guidelines to provide a unique experience to workflow extension users.

[Building a Workflow Extension](/documentation/Professional-Video-Applications/building-a-workflow-extension)

Create a workflow extension in Xcode by using the Final Cut Pro Workflow Extension template.

### Information Property List Keys

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSExtension/ProExtensionPrincipalViewControllerClass>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSExtension/ProExtensionAttributes>

### FCPX Interactions

[Interacting with the Final Cut Pro Timeline](/documentation/Professional-Video-Applications/interacting-with-the-final-cut-pro-timeline)

Extend your workflows beyond media exchange by enabling a workflow extension to interact with the Final Cut Pro timeline.

[`FCPXHost`](/documentation/professional_video_applications/FCPXHost)

A protocol that provides an interface to retrieve the Final Cut Pro timeline proxy objects and details of the host app.

[`ProExtensionHostSingleton`](/documentation/professional_video_applications/ProExtensionHostSingleton())

Returns the singleton proxy instance of the host object.

[`FCPXTimeline`](/documentation/professional_video_applications/FCPXTimeline)

An interface that has methods and properties to communicate and interact with the Final Cut Pro timeline.

[`FCPXTimelineObserver`](/documentation/professional_video_applications/FCPXTimelineObserver)

An interface with optional methods implemented by observers of [`FCPXTimeline`](/documentation/professional_video_applications/FCPXTimeline) objects.

### FCPX Timeline Proxy Objects

[`FCPXObject`](/documentation/professional_video_applications/FCPXObject)

An abstract superclass for Final Cut Pro timeline proxy objects.

[`FCPXObjectType`](/documentation/professional_video_applications/FCPXObjectType)

The Final Cut Pro timeline object types.

[`FCPXLibrary`](/documentation/professional_video_applications/FCPXLibrary)

An object that contains details of a Final Cut Pro library.

[`FCPXEvent`](/documentation/professional_video_applications/FCPXEvent)

An object that contains details of an event in the Final Cut Pro library.

[`FCPXProject`](/documentation/professional_video_applications/FCPXProject)

An object that contains details of a project with the sequence open in the Final Cut Pro timeline.

[`FCPXSequence`](/documentation/professional_video_applications/FCPXSequence)

An object that contains details of a sequence that’s open in the Final Cut Pro timeline.

[`FCPXSequenceTimecodeFormat`](/documentation/professional_video_applications/FCPXSequenceTimecodeFormat)

The display format of the sequence timecode.



---

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)