<!--
{
  "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/SubscriptionStoreButton",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "StoreKit",
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:17_StoreKit_SwiftUI012SubscriptionA6ButtonV"
  },
  "title" : "SubscriptionStoreButton"
}
-->

# SubscriptionStoreButton

A button for subscribing to an in-app subscription with a localized label and optional caption.

```
@MainActor @preconcurrency struct SubscriptionStoreButton
```

## Overview

When implementing custom subscription store control styles conforming to [`SubscriptionStoreControlStyle`](/documentation/StoreKit/SubscriptionStoreControlStyle), you can use this button to utilize the standard subscribe button as a component of the view you provide from [`makeBody(configuration:)`](/documentation/StoreKit/SubscriptionStoreControlStyle/makeBody(configuration:)). The subscription store button automatically generates a localized label and optional caption for the corresponding subscription option. To configure a custom button label, use <doc://com.apple.documentation/documentation/SwiftUI/Button> instead.

Standard subscription store control styles use the subscription store button. For example, the [`buttons`](/documentation/StoreKit/SubscriptionStoreControlStyle/buttons) style creates a `SubscriptionStoreButton` instance for each subscription option.

> Tip:
> Within the scope of your type conforming to ``doc://com.apple.storekit/documentation/StoreKit/SubscriptionStoreControlStyle``, you can spell `SubscriptionStoreButton` as `SubscribeButton` through the ``doc://com.apple.storekit/documentation/StoreKit/SubscriptionStoreControlStyle/SubscribeButton`` type alias.

In iOS, macOS, visionOS and watchOS you can configure the button’s label by modifying it with `subscriptionStoreButtonLabel(_:)`. Some button label configurations cause the button to have a caption, for example .`displayName.singleLine`.

Because the `SubscriptionStoreButton` is composed of a SwiftUI <doc://com.apple.documentation/documentation/SwiftUI/Button>, you can also configure the button using other built-in view modifiers such as <doc://com.apple.documentation/documentation/SwiftUI/View/buttonStyle(_:)-66fbx>.

To create a `SubscriptionStoreButton`, provide a value of [`SubscriptionStoreControlStyleConfiguration.Option`](/documentation/StoreKit/SubscriptionStoreControlStyleConfiguration/Option) to the [`init(_:)`](/documentation/StoreKit/SubscriptionStoreButton/init(_:)) method. Get an option value from the required [`makeBody(configuration:)`](/documentation/StoreKit/SubscriptionStoreControlStyle/makeBody(configuration:)) method on your [`SubscriptionStoreControlStyle`](/documentation/StoreKit/SubscriptionStoreControlStyle) implementation.

> Important:
> Use `SubscriptionStoreButton` 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 `SubscriptionStoreButton` in other contexts is not supported.

## Topics

### Creating a subscription store button

[`init(SubscriptionStoreControlStyleConfiguration.Option)`](/documentation/StoreKit/SubscriptionStoreButton/init(_:))

Creates a button with an automatic label that describes the subscription option and starts a subscribe interaction when someone selects the button.

## Relationships

### Conforms To

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

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

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

---

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)