---
title: "init(id:prefersPromotionalIcon:icon:)"
framework: storekit
role: symbol
role_heading: Initializer
path: "storekit/productview/init(id:preferspromotionalicon:icon:)"
---

# init(id:prefersPromotionalIcon:icon:)

Creates a view to load an individual product from the App Store and merchandise it using a custom icon.

## Declaration

```swift
nonisolated init(id productID: Product.ID, prefersPromotionalIcon: Bool = false, @ViewBuilder icon: () -> Icon) where PlaceholderIcon == AutomaticProductPlaceholderIcon
```

## Parameters

- `productID`: The product identifier to load from the App Store.
- `prefersPromotionalIcon`: A Boolean value that indicates whether to use the promotional image from the App Store, if it’s available. If this value is true and a promotional image for the product is available, the view displays it instead of the view you provide in the icon parameter.
- `icon`: A closure that returns the image the view displays when the system finishes loading the product from the App Store.

## Discussion

Discussion The product view displays a placeholder icon until the system finishes loading the product. After the product loads, the system uses the view you provide in the icon parameter, by default. If prefersPromotionalIcon is true and the product has a promotional image, the view displays the promotional image as its icon instead of the provided view. tip: To gain more control over the image that decorates this view, use the init(id:icon:placeholderIcon:) initializer. It receives a ProductIconPhase, which enables you to supply an image for each phase of the image-loading process.

## See Also

### Creating product views that load products

- [init(id:prefersPromotionalIcon:)](storekit/productview/init(id:preferspromotionalicon:).md)
- [init(id:prefersPromotionalIcon:icon:placeholderIcon:)](storekit/productview/init(id:preferspromotionalicon:icon:placeholdericon:).md)
- [init(id:icon:placeholderIcon:)](storekit/productview/init(id:icon:placeholdericon:).md)
