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

# SubscriptionStorePicker

A composite control with a picker for selecting a subscription option and a button for confirming the subscription.

```
@MainActor @preconcurrency struct SubscriptionStorePicker<PickerContent, ConfirmationContent> where PickerContent : View, ConfirmationContent : View
```

## Overview

When implementing custom subscription store control styles conforming to [`SubscriptionStoreControlStyle`](/documentation/StoreKit/SubscriptionStoreControlStyle), you can use this view to utilize the standard subscription picker as a component of the view you provide from [`makeBody(configuration:)`](/documentation/StoreKit/SubscriptionStoreControlStyle/makeBody(configuration:)). The subscription picker is a composite control: it contains both a picker for choosing an option, and a button to subscribe to the selected option.

This control is the same as used in standard control styles such as [`picker`](/documentation/StoreKit/SubscriptionStoreControlStyle/picker).

There are two primary ways to create a subscription picker:

- Provide the [`SubscriptionStoreControlStyleConfiguration`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration) value to the subscription picker, and use the components of each option to declare the option’s label.
- Provide a collection of views for the picker’s content, using a [`SubscriptionStorePickerOption`](/documentation/StoreKit/SubscriptionStorePickerOption) to declare the options.

Either way, you also need to declare a view to confirm the subscription after someone selects an option.

You can optionally provide a binding to a [`SubscriptionStoreControlStyleConfiguration.Option`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option) to observe selection changes, or programmatically change selections. If you don’t provide a binding, the subscription picker manages its own selection state.

> Important:
> Use the `SubscriptionStorePicker` only in the view you return from the required ``doc://com.apple.storekit/documentation/StoreKit/SubscriptionStoreControlStyle/makeBody(configuration:)`` method of ``doc://com.apple.storekit/documentation/StoreKit/SubscriptionStoreControlStyle``. Using `SubscriptionStorePicker` in other contexts is not supported.

## Topics

### Creating a subscription store picker

[`init(pickerContent: () -> PickerContent, confirmation: (SubscriptionStoreControlStyleConfiguration.Option) -> ConfirmationContent)`](/documentation/StoreKit/SubscriptionStorePicker/init(pickerContent:confirmation:))

[`init(SubscriptionStoreControlStyleConfiguration, pickerOptionContent: (SubscriptionStoreControlStyleConfiguration.PickerOption) -> PickerContent, confirmation: (SubscriptionStoreControlStyleConfiguration.Option) -> ConfirmationContent)`](/documentation/StoreKit/SubscriptionStorePicker/init(_:pickerOptionContent:confirmation:))

### Managing a subscription picker’s selection state

[`init(selection: Binding<SubscriptionStoreControlStyleConfiguration.Option?>, pickerContent: () -> PickerContent, confirmation: (SubscriptionStoreControlStyleConfiguration.Option) -> ConfirmationContent)`](/documentation/StoreKit/SubscriptionStorePicker/init(selection:pickerContent:confirmation:))

[`init(SubscriptionStoreControlStyleConfiguration, selection: Binding<SubscriptionStoreControlStyleConfiguration.Option?>, pickerOptionContent: (SubscriptionStoreControlStyleConfiguration.PickerOption) -> PickerContent, confirmation: (SubscriptionStoreControlStyleConfiguration.Option) -> ConfirmationContent)`](/documentation/StoreKit/SubscriptionStorePicker/init(_:selection:pickerOptionContent:confirmation:))

## Relationships

### Conforms To

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

[`View`](/documentation/SwiftUI/View)

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

---

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)