---
title: "onInAppPurchaseCompletion(perform:)"
framework: swiftui
role: symbol
role_heading: Instance Method
path: "swiftui/view/oninapppurchasecompletion(perform:)"
---

# onInAppPurchaseCompletion(perform:)

Add an action to perform when a purchase initiated from a StoreKit view within this view completes.

## Declaration

```swift
nonisolated func onInAppPurchaseCompletion(perform action: ((Product, Result<Product.PurchaseResult, any Error>) async -> ())?) -> some View

```

## Parameters

- `action`: The action to perform, with the product value and the purchase result provided as parameters.

## Discussion

Discussion By default, transactions from successful in-app store view purchases will be emitted from Transaction.updates. If the purchase fails with an error, an alert will be displayed. You can revert a view back to this behavior by providing nil for action. Only one action will be performed for each purchase. Descendant views can override the action by using another onInAppPurchaseCompletion(perform:) modifier.

## See Also

### Interacting with the App Store and Apple Music

- [appStoreOverlay(isPresented:configuration:)](swiftui/view/appstoreoverlay(ispresented:configuration:).md)
- [manageSubscriptionsSheet(isPresented:)](swiftui/view/managesubscriptionssheet(ispresented:).md)
- [refundRequestSheet(for:isPresented:onDismiss:)](swiftui/view/refundrequestsheet(for:ispresented:ondismiss:).md)
- [offerCodeRedemption(options:isPresented:onCompletion:)](swiftui/view/offercoderedemption(options:ispresented:oncompletion:).md)
- [musicPicker(isPresented:title:selection:)](swiftui/view/musicpicker(ispresented:title:selection:).md)
- [musicSubscriptionOffer(isPresented:options:onLoadCompletion:)](swiftui/view/musicsubscriptionoffer(ispresented:options:onloadcompletion:).md)
- [currentEntitlementTask(for:priority:action:)](swiftui/view/currententitlementtask(for:priority:action:).md)
- [inAppPurchaseOptions(_:)](swiftui/view/inapppurchaseoptions(_:).md)
- [manageSubscriptionsSheet(isPresented:subscriptionGroupID:)](swiftui/view/managesubscriptionssheet(ispresented:subscriptiongroupid:).md)
- [onInAppPurchaseStart(perform:)](swiftui/view/oninapppurchasestart(perform:).md)
- [productIconBorder()](swiftui/view/producticonborder().md)
- [productViewStyle(_:)](swiftui/view/productviewstyle(_:).md)
- [productDescription(_:)](swiftui/view/productdescription(_:).md)
- [storeButton(_:for:)](swiftui/view/storebutton(_:for:).md)
- [storeProductTask(for:priority:action:)](swiftui/view/storeproducttask(for:priority:action:).md)
