---
title: Previews in Xcode
framework: swiftui
role: collectionGroup
role_heading: API Collection
path: swiftui/previews-in-xcode
---

# Previews in Xcode

Generate dynamic, interactive previews of your custom views.

## Overview

Overview When you create a custom View with SwiftUI, Xcode can display a preview of the view’s content that stays up-to-date as you make changes to the view’s code. You use one of the preview macros — like Preview(_:body:) — to tell Xcode what to display. Xcode shows the preview in a canvas beside your code.

Different preview macros enable different kinds of configuration. For example, you can add traits that affect the preview’s appearance using the Preview(_:traits:_:body:) macro or add custom viewpoints for the preview using the Preview(_:traits:body:cameras:) macro. You can also check how your view behaves inside a specific scene type. For example, in visionOS you can use the Preview(_:immersionStyle:traits:body:) macro to preview your view inside an ImmersiveSpace. You typically rely on preview macros to create previews in your code. However, if you can’t get the behavior you need using a preview macro, you can use the PreviewProvider protocol and its associated supporting types to define and configure a preview.

## Topics

### Essentials

- [Previewing your app’s interface in Xcode](xcode/previewing-your-apps-interface-in-xcode.md)

### Creating a preview

- [Preview(_:body:)](swiftui/preview(_:body:).md)
- [Preview(_:traits:_:body:)](swiftui/preview(_:traits:_:body:).md)
- [Preview(_:traits:body:cameras:)](swiftui/preview(_:traits:body:cameras:).md)
- [Preview(_:traits:arguments:body:)](swiftui/preview(_:traits:arguments:body:).md)

### Creating a preview in the context of a scene

- [Preview(_:immersionStyle:traits:body:)](swiftui/preview(_:immersionstyle:traits:body:).md)
- [Preview(_:immersionStyle:traits:body:cameras:)](swiftui/preview(_:immersionstyle:traits:body:cameras:).md)
- [Preview(_:windowStyle:traits:body:)](swiftui/preview(_:windowstyle:traits:body:).md)
- [Preview(_:windowStyle:traits:body:cameras:)](swiftui/preview(_:windowstyle:traits:body:cameras:).md)

### Defining a preview

- [Previewable()](swiftui/previewable().md)
- [PreviewProvider](swiftui/previewprovider.md)
- [PreviewPlatform](swiftui/previewplatform.md)
- [previewDisplayName(_:)](swiftui/view/previewdisplayname(_:).md)
- [PreviewModifier](swiftui/previewmodifier.md)
- [PreviewModifierContent](swiftui/previewmodifiercontent.md)

### Customizing a preview

- [previewDevice(_:)](swiftui/view/previewdevice(_:).md)
- [PreviewDevice](swiftui/previewdevice.md)
- [previewLayout(_:)](swiftui/view/previewlayout(_:).md)
- [previewInterfaceOrientation(_:)](swiftui/view/previewinterfaceorientation(_:).md)
- [InterfaceOrientation](swiftui/interfaceorientation.md)

### Setting a context

- [previewContext(_:)](swiftui/view/previewcontext(_:).md)
- [PreviewContext](swiftui/previewcontext.md)
- [PreviewContextKey](swiftui/previewcontextkey.md)

### Building in debug mode

- [DebugReplaceableView](swiftui/debugreplaceableview.md)

## See Also

### Tool support

- [Xcode library customization](swiftui/xcode-library-customization.md)
- [Performance analysis](swiftui/performance-analysis.md)
