<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: 17.0.0 -",
    "macOS: 14.0.0 -",
    "tvOS: 17.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "DeveloperToolsSupport",
  "identifier" : "/documentation/DeveloperToolsSupport/Preview",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "DeveloperToolsSupport"
    ],
    "preciseIdentifier" : "s:21DeveloperToolsSupport7PreviewV"
  },
  "title" : "Preview"
}
-->

# Preview

A base type that preview macros use to create previews.

```
@MainActor struct Preview
```

## Overview

Frameworks like SwiftUI and WidgetKit define initializers for this type,
along with framework-specific preview macros that rely on this type.
You don’t use this type directly. Instead, use one of the preview macros,
like <doc://com.apple.documentation/documentation/SwiftUI/Preview(_:body:)>.

## Topics

### Creating a SwiftUI preview

[`init(String?, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> any View)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:body:)-8pemr)

Creates a preview of a SwiftUI view.

[`init(String?, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> any View, cameras: () -> [PreviewCamera])`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:body:cameras:))

Creates a preview of a SwiftUI view using the specified traits and
custom viewpoints.

[`init(String?, immersionStyle: some ImmersionStyle, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> any View, cameras: () -> [PreviewCamera])`](/documentation/DeveloperToolsSupport/Preview/init(_:immersionStyle:traits:body:cameras:))

Creates a preview of a SwiftUI view in an immersive space with
custom viewpoints.

[`init(String?, windowStyle: some WindowStyle, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> any View, cameras: () -> [PreviewCamera])`](/documentation/DeveloperToolsSupport/Preview/init(_:windowStyle:traits:body:cameras:))

Creates a preview of a SwiftUI view in a window with
custom viewpoints.

### Creating a preview of a widget

[`init<Attributes>(String?, as: ActivityPreviewViewKind, using: Attributes, widget: () -> some Widget, contentStates: () async -> [Attributes.ContentState])`](/documentation/DeveloperToolsSupport/Preview/init(_:as:using:widget:contentStates:))

Creates a preview of a live activity widget.

[`init<Provider>(String?, as: WidgetFamily, using: Provider.Intent, widget: () -> some Widget, timelineProvider: () -> Provider)`](/documentation/DeveloperToolsSupport/Preview/init(_:as:using:widget:timelineProvider:)-1if5u)

Creates a preview of a widget with an `AppIntent` configuration.

[`init<Provider>(String?, as: WidgetFamily, using: Provider.Intent, widget: () -> some Widget, timelineProvider: () -> Provider)`](/documentation/DeveloperToolsSupport/Preview/init(_:as:using:widget:timelineProvider:)-5335n)

Creates a preview of a widget with an `INIntent` configuration.

[`init(String?, as: WidgetFamily, widget: () -> some Widget, timeline: () async -> [any TimelineEntry])`](/documentation/DeveloperToolsSupport/Preview/init(_:as:widget:timeline:))

Creates a preview of a timeline-style widget.

[`init(String?, as: WidgetFamily, widget: () -> some Widget, timelineProvider: () -> some TimelineProvider)`](/documentation/DeveloperToolsSupport/Preview/init(_:as:widget:timelineProvider:))

Creates a preview of a widget with a static configuration.

### Creating an AppKit preview

[`init(String?, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> NSView)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:body:)-158mk)

Creates a preview of an NSView.

[`init(String?, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> NSViewController)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:body:)-2viaf)

Creates a preview of an NSViewController.

### Getting preview traits

[`enum ViewTraits`](/documentation/DeveloperToolsSupport/Preview/ViewTraits)

Traits that apply to previews of views and view controllers.

### Initializers

[`init<T>(String?, traits: PreviewTrait<Preview.ViewTraits>..., arguments: [T], body: (T) -> any View)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:arguments:body:)-1xqo1)

Creates a group of previews of a SwiftUI view.

[`init<T>(String?, traits: PreviewTrait<Preview.ViewTraits>..., arguments: [T], body: (T) -> UIViewController)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:arguments:body:)-287km)

[`init<T>(String?, traits: PreviewTrait<Preview.ViewTraits>..., arguments: [T], body: (T) -> UIView)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:arguments:body:)-3q0i9)

[`init<T>(String?, traits: PreviewTrait<Preview.ViewTraits>..., arguments: [T], body: (T) -> NSViewController)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:arguments:body:)-4ieth)

Creates a group of previews of an NSViewController.

[`init<T>(String?, traits: PreviewTrait<Preview.ViewTraits>..., arguments: [T], body: (T) -> NSView)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:arguments:body:)-5cb4o)

Creates a group of previews of an NSView.

[`init(String?, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> UIView)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:body:)-3i54d)

[`init(String?, traits: PreviewTrait<Preview.ViewTraits>..., body: () -> UIViewController)`](/documentation/DeveloperToolsSupport/Preview/init(_:traits:body:)-941vb)

[`init<Entry>(String?, widget: () -> some Widget, relevanceEntries: () async -> [Entry])`](/documentation/DeveloperToolsSupport/Preview/init(_:widget:relevanceEntries:))

Creates a preview of a relevance-driven widget.

[`init<Provider>(String?, widget: () -> some Widget, relevanceProvider: () -> Provider)`](/documentation/DeveloperToolsSupport/Preview/init(_:widget:relevanceProvider:))

Creates a preview of a relevance-driven widget.

[`init<Provider>(String?, widget: () -> some Widget, relevanceProvider: () -> Provider, relevance: () async -> WidgetRelevance<Provider.Configuration>)`](/documentation/DeveloperToolsSupport/Preview/init(_:widget:relevanceProvider:relevance:))

Creates a preview of a relevance-driven widget.

## Relationships

### Conforms To

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Sendable`](/documentation/Swift/Sendable)

---

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)