<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/Product",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit7ProductV"
  },
  "title" : "Product"
}
-->

# Product

Information about a product that you configure in App Store Connect.

```
struct Product
```

## Overview

The `Product` type represents the in-app purchases that you configure in App Store Connect and make available for purchase within your app. Use `Product` to perform all product-related tasks in your app, from displaying in-app purchases and offers to making a purchase and getting transaction and subscription status information.

To get a `Product` instance, call [`products(for:)`](/documentation/StoreKit/Product/products(for:)) and provide one or more in-app purchase product identifiers. Use a `Product` instance to display in-app purchases and subscription offers in your store, as follows:

- Show the localized name, description, and pricing information using [`displayName`](/documentation/StoreKit/Product/displayName), [`description`](/documentation/StoreKit/Product/description), and [`displayPrice`](/documentation/StoreKit/Product/displayPrice), respectively.
- Determine whether a user is eligible for an introductory offer for the product using [`isEligibleForIntroOffer`](/documentation/StoreKit/Product/SubscriptionInfo/isEligibleForIntroOffer).
- Display your subscription offers using the subscription information in [`subscription`](/documentation/StoreKit/Product/subscription).

When users initiate a purchase, call [`purchase(options:)`](/documentation/StoreKit/Product/purchase(options:)) or [`purchase(confirmIn:options:)`](/documentation/StoreKit/Product/purchase(confirmIn:options:)-3bivf) on the product instance. If your app uses SwiftUI, you can also use [`PurchaseAction`](/documentation/StoreKit/PurchaseAction). Set purchase options ([`Product.PurchaseOption`](/documentation/StoreKit/Product/PurchaseOption)) to define an optional app account token, apply a promotional offer, or set a product quantity. Purchase options can also simulate an Ask to Buy scenario when you’re testing your app in the sandbox environment.

Use a `Product` instance to learn whether a user is entitled to a product by checking [`currentEntitlement`](/documentation/StoreKit/Product/currentEntitlement), which holds the transaction that entitles the user to the product. This transaction information, as well as the transaction in [`latestTransaction`](/documentation/StoreKit/Product/latestTransaction), are cryptographically signed by the App Store in JSON Web Signature (JWS) format.

If the product is an auto-renewable subscription, use the [`status`](/documentation/StoreKit/Product/SubscriptionInfo/status-swift.property) and [`renewalInfo`](/documentation/StoreKit/Product/SubscriptionInfo/Status-swift.struct/renewalInfo) in the [`subscription`](/documentation/StoreKit/Product/subscription) information to help manage subscriptions and inform business decisions, such as presenting subscription offers.

For information about configuring In-App Purchases in App Store Connect, see [Overview for configuring In-App Purchases](https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/overview-for-configuring-in-app-purchases).

## Topics

### Requesting products from the App Store

[`products(for:)`](/documentation/StoreKit/Product/products(for:))

Requests product data from the App Store.

### Displaying a product description and price

[`displayName`](/documentation/StoreKit/Product/displayName)

The localized display name of the product, if it exists.

[`description`](/documentation/StoreKit/Product/description)

The localized description of the product.

[`displayPrice`](/documentation/StoreKit/Product/displayPrice)

The localized string representation of the product price, suitable for display.

[`price`](/documentation/StoreKit/Product/price)

The decimal representation of the cost of the product, in local currency.

[`priceFormatStyle`](/documentation/StoreKit/Product/priceFormatStyle)

The format style for the numbers in the price of the product.

[`subscriptionPeriodFormatStyle`](/documentation/StoreKit/Product/subscriptionPeriodFormatStyle)

The format style for the date components related to a subscription’s duration.

[`subscriptionPeriodUnitFormatStyle`](/documentation/StoreKit/Product/subscriptionPeriodUnitFormatStyle)

The format style for subscription period units, such as week, month, or year.

### Purchasing a product

[`purchase(options:)`](/documentation/StoreKit/Product/purchase(options:))

Initiates a purchase for the product with the App Store and displays the confirmation sheet.

[`purchase(confirmIn:options:)`](/documentation/StoreKit/Product/purchase(confirmIn:options:)-6dj6y)

Initiates a purchase for the product with the App Store and displays the confirmation sheet.

[`purchase(confirmIn:options:)`](/documentation/StoreKit/Product/purchase(confirmIn:options:)-3bivf)

Processes a purchase for the product.

[`purchase(confirmIn:options:)`](/documentation/StoreKit/Product/purchase(confirmIn:options:)-8eai6)

Processes a purchase for the product.

[`PurchaseOption`](/documentation/StoreKit/Product/PurchaseOption)

Optional settings for a product purchase that add account information, purchase details, and offers, or that specify behaviors.

[`PurchaseResult`](/documentation/StoreKit/Product/PurchaseResult)

The result of a purchase.

[`PurchaseError`](/documentation/StoreKit/Product/PurchaseError)

Error information for product purchase errors.

### Receiving current entitlement information

[`currentEntitlements`](/documentation/StoreKit/Product/currentEntitlements)

### Getting the latest transaction

[`latestTransaction`](/documentation/StoreKit/Product/latestTransaction)

The most recent transaction for the product.

### Getting subscription information

[`subscription`](/documentation/StoreKit/Product/subscription)

The subscription information for an auto-renewable subscripton.

[`SubscriptionInfo`](/documentation/StoreKit/Product/SubscriptionInfo)

Information about an auto-renewable subscription, such as its status, period, subscription group, and subscription offer details.

[`SubscriptionPeriod`](/documentation/StoreKit/Product/SubscriptionPeriod)

Values that represent the duration of time between subscription renewals.

[`SubscriptionOffer`](/documentation/StoreKit/Product/SubscriptionOffer)

Information about a subscription offer that you configure in App Store Connect.

[`Status`](/documentation/StoreKit/Product/SubscriptionInfo/Status-swift.struct)

The renewal status information for an auto-renewable subscription.

### Getting product identifiers and type

[`id`](/documentation/StoreKit/Product/id)

The unique product identifier.

[`type`](/documentation/StoreKit/Product/type)

The in-app purchase product type.

[`ProductType`](/documentation/StoreKit/Product/ProductType)

The types of in-app purchases.

### Getting Family Sharing status

[`isFamilyShareable`](/documentation/StoreKit/Product/isFamilyShareable)

A Boolean value that indicates whether the product is available for Family Sharing in App Store Connect.

### Managing promoted in-app purchases

[`PromotionInfo`](/documentation/StoreKit/Product/PromotionInfo)

Information about a promoted In-App Purchase that customizes its order and visibility on the device.

### Loading products

[`CollectionTaskState`](/documentation/StoreKit/Product/CollectionTaskState)

The state of a task that loads a collection of products in the background.

[`TaskState`](/documentation/StoreKit/Product/TaskState)

The state of a task that loads a product in the background.

### Getting product info in JSON format

[`jsonRepresentation`](/documentation/StoreKit/Product/jsonRepresentation)

The JSON representation of the product information.

### Getting subscription relationship

[`SubscriptionRelationship`](/documentation/StoreKit/Product/SubscriptionRelationship)

### Deprecated

[`currentEntitlement`](/documentation/StoreKit/Product/currentEntitlement)

The transaction that entitles the user to the product.

## Relationships

### Conforms To

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Escapable`](/documentation/Swift/Escapable)

[`Equatable`](/documentation/Swift/Equatable)

[`Sendable`](/documentation/Swift/Sendable)

[`Copyable`](/documentation/Swift/Copyable)

[`Identifiable`](/documentation/Swift/Identifiable)

[`Hashable`](/documentation/Swift/Hashable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)