---
title: purchase
framework: swiftui
role: symbol
role_heading: Instance Property
path: swiftui/environmentvalues/purchase
---

# purchase

An action that starts an in-app purchase.

## Declaration

```swift
@MainActor @preconcurrency var purchase: PurchaseAction { get }
```

## Discussion

Discussion Read this environment value to get an PurchaseAction instance for a given Environment. Call the instance to start an in-app purchase. You call the instance directly because it defines a PurchaseAction/callAsFunction(_:options:) method that Swift calls when you call the instance. For example, you can start an in-app purchase when the user taps a button: struct PurchaseExample: View {     @Environment(\.purchase) private var purchase     let product: Product     let purchaseOptions: [Product.PurchaseOption]

var body: some View {         Button {             Task {                 let purchaseResult = try? await purchase(product, options: purchaseOptions)                 // Process purchase result.             }         } label: {             Text(product.displayName)         }     } }

## See Also

### Actions

- [dismiss](swiftui/environmentvalues/dismiss.md)
- [dismissSearch](swiftui/environmentvalues/dismisssearch.md)
- [dismissWindow](swiftui/environmentvalues/dismisswindow.md)
- [openImmersiveSpace](swiftui/environmentvalues/openimmersivespace.md)
- [dismissImmersiveSpace](swiftui/environmentvalues/dismissimmersivespace.md)
- [newDocument](swiftui/environmentvalues/newdocument.md)
- [openDocument](swiftui/environmentvalues/opendocument.md)
- [openURL](swiftui/environmentvalues/openurl.md)
- [openWindow](swiftui/environmentvalues/openwindow.md)
- [pushWindow](swiftui/environmentvalues/pushwindow.md)
- [refresh](swiftui/environmentvalues/refresh.md)
- [rename](swiftui/environmentvalues/rename.md)
- [resetFocus](swiftui/environmentvalues/resetfocus.md)
- [openSettings](swiftui/environmentvalues/opensettings.md)
