---
title: "init(_:immersionStyle:traits:body:cameras:)"
framework: developertoolssupport
role: symbol
role_heading: Initializer
path: "developertoolssupport/preview/init(_:immersionstyle:traits:body:cameras:)"
---

# init(_:immersionStyle:traits:body:cameras:)

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

## Declaration

```swift
@MainActor init(_ name: String? = nil, immersionStyle: some ImmersionStyle, traits: PreviewTrait<Preview.ViewTraits>..., @ContentBuilder body: @escaping @MainActor () -> any View, @PreviewCameraBuilder cameras: () -> [PreviewCamera] = { return [] })
```

## Parameters

- `name`: An optional display name for the preview.
- `immersionStyle`: The immersion style to use for the preview.
- `traits`: An optional list of doc://com.apple.documentation/documentation/DeveloperToolsSupport/PreviewTrait instances that customize the appearance of the preview.
- `body`: A content builder that produces a SwiftUI view to preview.
- `cameras`: One or more preview cameras that indicate the custom, fixed viewpoints that you want to be able to view the preview from.

## Discussion

Discussion Preview macros expand into a declaration that calls this initializer. Don’t use this initializer directly. Instead use one of the macros, like Preview(_:immersionStyle:traits:body:cameras:).

## See Also

### Creating a SwiftUI preview

- [init(_:traits:body:)](developertoolssupport/preview/init(_:traits:body:)-8pemr.md)
- [init(_:traits:body:cameras:)](developertoolssupport/preview/init(_:traits:body:cameras:).md)
- [init(_:windowStyle:traits:body:cameras:)](developertoolssupport/preview/init(_:windowstyle:traits:body:cameras:).md)
