<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "macOS: 15.0.0 -",
    "tvOS: 18.0.0 -",
    "visionOS: 2.0.0 -",
    "watchOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "StoreKit",
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:17_StoreKit_SwiftUI012SubscriptionA25ControlStyleConfigurationV6OptionV"
  },
  "title" : "SubscriptionStoreControlStyleConfiguration.Option"
}
-->

# SubscriptionStoreControlStyleConfiguration.Option

Properties of an auto-renewable subscription option to merchandise.

```
@dynamicMemberLookup struct Option
```

## Overview

You use `SubscriptionStoreControlStyleConfiguration.Option` very similarly to [`Product`](/documentation/StoreKit/Product) values, with some important differences:

- The `offer` property indicates the offer that applies to the purchase. Display the terms of the `offer`, and ignore offer properties on [`Product.SubscriptionInfo`](/documentation/StoreKit/Product/SubscriptionInfo), such as [`introductoryOffer`](/documentation/StoreKit/Product/SubscriptionInfo/introductoryOffer).
- If the `offer` is `nil`, no offer applies to the purchase.
- Call the [`subscribe()`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscribe()) method when a customer activates a control to subscribe to a subscription option, instead of methods on [`Product`](/documentation/StoreKit/Product), such as [`purchase(confirmIn:options:)`](/documentation/StoreKit/Product/purchase(confirmIn:options:)-6dj6y).
- Access the decorative icon using the [`icon`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/icon) property.

`SubscriptionStoreControlStyleConfiguration.Option` is a dynamic member lookup type, so you don’t need to use [`subscription`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscription) directly to access the properties of the `Product` value. Instead, access the properties of `Product` or [`Product.SubscriptionInfo`](/documentation/StoreKit/Product/SubscriptionInfo) directly on the `Option` value. In the example below, the [`displayName`](/documentation/StoreKit/Product/displayName) property is available on `Option` to use as the button label:

```swift
struct DisplayNameButtonsControlStyle: SubscriptionStoreControlStyle {

    func makeBody(configuration: Configuration) -> some View {
        ForEach(configuration.options) { option in
            Button(option.displayName, action: option.subscribe)
        }
    }
}
```

## Topics

### Getting the subscription product and offer

[`var subscription: Product`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscription)

The auto-renewable subscription to merchandise.

[`var id: Product.ID`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/id)

The product ID of the auto-renewable subscription.

[`var activeOffer: Product.SubscriptionOffer?`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/activeOffer)

The subscription offer the customer is eligible for, and that applies to the subscription option.

### Getting the icon

[`var icon: SubscriptionStoreControlStyleConfiguration.Icon?`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/icon)

The subscription option’s icon.

### Purchasing a subscription option

[`func subscribe()`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscribe())

Initiates a purchase when a customer activates a control to subscribe to the option.

### Looking up dynamic members

[`subscript<T>(dynamicMember _: KeyPath<Product.SubscriptionInfo, T?>) -> T?`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscript(dynamicMember:)-8sl2m)

Facilitates accessing optional subscription properties on an option value.

[`subscript<T>(dynamicMember _: KeyPath<Product.SubscriptionInfo, T>) -> T?`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscript(dynamicMember:)-wjww)

Facilitates accessing subscription properties on an option value.

[`subscript<T>(dynamicMember _: KeyPath<Product, T>) -> T`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/subscript(dynamicMember:)-9g2sm)

Facilitates accessing product properties on an option value.

### Default Implementations

[Identifiable Implementations](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option/Identifiable-Implementations)

## Relationships

### Conforms To

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

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

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

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

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

---

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)