<!--
{
  "documentType" : "article",
  "framework" : "watchOS Release Notes",
  "identifier" : "/documentation/watchOS-Release-Notes/watchos-8-release-notes",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "watchOS 8 Release Notes"
}
-->

# watchOS 8 Release Notes

Update your apps to use new features, and test your apps against API changes.

## Discussion

The watchOS 8 SDK provides support to develop watchOS apps for Apple Watch devices running watchOS 8. The SDK comes bundled with Xcode 13, available from the Mac App Store. For information on the compatibility requirements for Xcode 13, see <doc://com.apple.documentation/documentation/Xcode-Release-Notes/xcode-13-release-notes>.

### General

#### Known Issues

- Your watch might repeatedly disconnect unexpectedly from your phone. (80733338)
  
  **Workaround:** Restart your phone.

### App Store

#### New Features

- <doc://com.apple.documentation/documentation/StoreKit> 2 introduces a modern Swift-based API that takes advantage of new language features like Swift concurrency. Use this API to load product information, display in-app purchases in your store, allow customers to make purchases, manage access to content and subscriptions, and receive transaction information signed by the App Store in JSON Web Signature (JWS) format. (66587964)

- The `request(with:)` type method on <doc://com.apple.documentation/documentation/StoreKit/Product> has been renamed to <doc://com.apple.documentation/documentation/StoreKit/Product/products(for:)>. (79410910)

- The <doc://com.apple.documentation/documentation/StoreKit/Transaction> `listener` type properties on <doc://com.apple.documentation/documentation/StoreKit/Product/SubscriptionInfo/Status-swift.struct> and <doc://com.apple.documentation/documentation/StoreKit/Storefront> are now <doc://com.apple.documentation/documentation/StoreKit/Transaction/updates> and <doc://com.apple.documentation/documentation/StoreKit/Storefront/updates>, respectively. The nested <doc://com.apple.documentation/documentation/Swift/AsyncSequence> conforming structures are now <doc://com.apple.documentation/documentation/StoreKit/Transaction/Transactions>, <doc://com.apple.documentation/documentation/StoreKit/Product/SubscriptionInfo/Status-swift.struct/Statuses>, and <doc://com.apple.documentation/documentation/StoreKit/Storefront/Storefronts>. Both `TransactionSequence` and `TransactionListener` are now <doc://com.apple.documentation/documentation/StoreKit/Transaction/Transactions>. (79034347)

- `StoreKitError.userDidNotAuthenticate` is no longer available; use <doc://com.apple.documentation/documentation/StoreKit/StoreKitError/userCancelled> instead. (78270199)

- You can now access <doc://com.apple.documentation/documentation/StoreKit/Product> raw JSON data for custom decoding:
  - Multiple <doc://com.apple.documentation/documentation/StoreKit/Product/PurchaseOption> methods are now allowed. `.custom(_:)` is replaced with several new type methods, namely <doc://com.apple.documentation/documentation/StoreKit/Product/PurchaseOption/custom(key:value:)-80cvh>, <doc://com.apple.documentation/documentation/StoreKit/Product/PurchaseOption/custom(key:value:)-3g3nc>, <doc://com.apple.documentation/documentation/StoreKit/Product/PurchaseOption/custom(key:value:)-8tjim>, and <doc://com.apple.documentation/documentation/StoreKit/Product/PurchaseOption/custom(key:value:)-7rju9>.
  - Subscript operators on <doc://com.apple.documentation/documentation/StoreKit/Product>, <doc://com.apple.documentation/documentation/StoreKit/Transaction>, and <doc://com.apple.documentation/documentation/StoreKit/Product/SubscriptionInfo/Status-swift.struct/renewalInfo> are removed, along with the nested `Key` enumerations.
  - `BackingValue` and extensions adding initializers from `BackingValue` are removed. (79101606)

- A new <doc://com.apple.documentation/documentation/StoreKit/Product/PurchaseOption/onStorefrontChange(shouldContinuePurchase:)> is available in StoreKit 2. You can use this purchase option to determine whether the transaction continues if the App Store storefront changes during a transaction. The default is `true` if this option isn’t added. (70757789)

- `VerificationResult.unverified(SignedType)` is now `VerificationResult.unverified(SignedType, VerificationError)` to provide a reason for unverified signed values. <doc://com.apple.documentation/documentation/StoreKit/Transaction/jsonRepresentation> is available on <doc://com.apple.documentation/documentation/StoreKit/Transaction> and <doc://com.apple.documentation/documentation/StoreKit/Product/SubscriptionInfo/RenewalInfo/jsonRepresentation> is available on <doc://com.apple.documentation/documentation/StoreKit/Product/SubscriptionInfo/Status-swift.struct/renewalInfo>; both properties provide the payload JSON as `Data`. <doc://com.apple.documentation/documentation/StoreKit/VerificationResult/payloadValue> and <doc://com.apple.documentation/documentation/StoreKit/VerificationResult/unsafePayloadValue> properties are available on <doc://com.apple.documentation/documentation/StoreKit/VerificationResult> as a convenience to access the signed value. (80701792)

#### Resolved Issues

- Fixed an issue where purchases performed in the Sandbox environment returned `VerificationResult.unverified(_:_:)`. (71949674)

Resolved Issues
Fixed issue where `jwsRepresentation` and other validation related properties were not available on `VerificationResult`. (81517650)

#### Known Issues

- The <doc://com.apple.documentation/documentation/StoreKit/Transaction/unfinished> property might return `VerificationResult<Transaction>` for transactions that have already finished. (81346114)

### Focus

#### Known Issues

- Apps installed only on your watch aren’t available in the Focus settings allow list. (76064919)

#### Deprecations

- <doc://com.apple.documentation/documentation/MapKit/MKPinAnnotationView> and <doc://com.apple.documentation/documentation/MapKit/MapPin> are marked as deprecated in this beta. (78536295)

### Music

#### New Features

- The Radio app has merged into the Music app. (67836373)

#### Known Issues

- When using Watch apps, <doc://com.apple.documentation/documentation/MusicKit> might be unable to generate a developer token. (78478620)
  
  **Workaround:** Register the bundle identifier of your <doc://com.apple.documentation/documentation/WatchKit> Extension target as a separate App ID in the Developer portal, and enable the MusicKit App Service for the new App ID.

### Networking

#### New Features

- The default `Accept-Language` header that <doc://com.apple.documentation/documentation/Foundation/URLSession> sends has an updated format and corrected values for multiple locales. In addition to the preferred language, the header also includes the current system language as a fallback if it differs from the preferred language. This behavior affects apps that link against macOS 12, iOS 15, tvOS 15, and watchOS 8 SDKs. (38772422)

#### Deprecations

- Support for cleartext HTTP URL schemes for Proxy Automatic Configuration (PAC) is now deprecated. Use only HTTPS URL schemes for PAC. This affects all PAC configurations, including, but not limited to, configurations set via Settings, System Preferences, profiles, and `URLSession` APIs such as <doc://com.apple.documentation/documentation/Foundation/URLSessionConfiguration/connectionProxyDictionary> and <doc://com.apple.documentation/documentation/CFNetwork/CFNetworkExecuteProxyAutoConfigurationURL(_:_:_:_:)>. If you configure a cleartext HTTP PAC URL, the system may upgrade it to HTTPS during PAC file loads. Web Proxy Auto-Discovery (WPAD) Protocol via DNS isn’t affected. Dynamic Host Configuration Protocol (DHCP) Option 252 WPAD may attempt to upgrade cleartext HTTP URLs to HTTPS during PAC file loads. (61981845)

### Pairing

#### Known Issue

- The Watch app might crash when pairing through the camera. (80804790)
  
  **Workaround:** Pair the Watch using the “Pair Manually” button.

### Shazam

#### Known Issues

- <doc://com.apple.documentation/documentation/ShazamKit> might be unable to generate a developer token in apps using Shazam Catalog. (78589082)
  
  **Workaround:** Register the bundle identifier of your <doc://com.apple.documentation/documentation/WatchKit> Extension target as a separate App ID in the developer portal, then enable the ShazamKit App Service for this new App ID.

### SwiftUI

#### New Features

- <doc://com.apple.documentation/documentation/SwiftUI/LocalizedStringKey> can now contain Markdown syntax. The system parses Markdown strings when you create a <doc://com.apple.documentation/documentation/SwiftUI/Text> view from a `LocalizedStringKey`, including `Text` views created with a string literal. The system styles `Text` according to Markdown constructs. (74515884)

- You can create <doc://com.apple.documentation/documentation/SwiftUI/Text> from an <doc://com.apple.documentation/documentation/Foundation/AttributedString> structure. `Text` respects the styles you provide through attributes within the SwiftUI attribute scope; these styles take precedence over styles you provide through view modifiers. (74841755)

- Specific kinds of animations now execute off the main thread, so there are new thread-safety requirements. (70524799)
  
  Ensure the following functions and types are thread-safe:
  - All methods and accessors of types conforming to these protocols: <doc://com.apple.documentation/documentation/SwiftUI/AlignmentID>, <doc://com.apple.documentation/documentation/SwiftUI/Animatable>, <doc://com.apple.documentation/documentation/SwiftUI/EnvironmentKey>, <doc://com.apple.documentation/documentation/SwiftUI/EnvironmentValues>, <doc://com.apple.documentation/documentation/Swift/Equatable>, <doc://com.apple.documentation/documentation/SwiftUI/GeometryEffect>, <doc://com.apple.documentation/documentation/Swift/Hashable>, <doc://com.apple.documentation/documentation/Swift/Identifiable>, <doc://com.apple.documentation/documentation/SwiftUI/PreferenceKey>, <doc://com.apple.documentation/documentation/SwiftUI/Shape>, <doc://com.apple.documentation/documentation/SwiftUI/VectorArithmetic>.
  - Any closures you pass to the following types and functions, but only if the views that created them don’t have references to <doc://com.apple.documentation/documentation/Combine/ObservableObject> types:
    <doc://com.apple.documentation/documentation/SwiftUI/ForEach>,
    <doc://com.apple.documentation/documentation/SwiftUI/GeometryReader>,
    `backgroundPreferenceValue(_:_:)`,
    `overlayPreferenceValue(_:_:)`,
    `transformPreference(_:_:)`,
    `anchorPreference(key:value:transform:)`,
    `transformAnchorPreference(key:value:transform:)`,
    `transformEnvironment(_:transform:)`,
    `transaction(_:)`.

- A <doc://com.apple.documentation/documentation/SwiftUI/TextField> provided an <doc://com.apple.documentation/documentation/Foundation/Formatter> now updates its binding as the user types. `NSFormatter` formats the text of the field when the user submits the field, or when focus moves away from the field. (67899823)

- You can now initialize <doc://com.apple.documentation/documentation/SwiftUI/Text> with a <doc://com.apple.documentation/documentation/Foundation/FormatStyle>. (72159423)

- While searching, if you tap a suggestion that uses the `searchCompletion(_:)` modifier, the suggestion list now disappears rather than displaying the single suggestion you selected. (76965399)

- You can now customize the prompt of a search field that a searchable modifier configures using the `prompt` parameter instead of the previous `title` parameter. (77988967)

- Added `buttonBorderShape`, which can be used to control the shape of bordered buttons. (79456465)

- New <doc://com.apple.documentation/documentation/Foundation/AttributedString> attributes <doc://com.apple.documentation/documentation/Foundation/AttributeScopes/SwiftUIAttributes/underlineStyle> and <doc://com.apple.documentation/documentation/Foundation/AttributeScopes/SwiftUIAttributes/strikethroughStyle> were added to <doc://com.apple.documentation/documentation/Foundation/AttributeScopes/SwiftUIAttributes>. (78437803)

- Types conforming to the <doc://com.apple.documentation/documentation/SwiftUI/Animatable> protocol and also conforming to either the <doc://com.apple.documentation/documentation/SwiftUI/View> or <doc://com.apple.documentation/documentation/SwiftUI/ViewModifier> protocols now apply animations when their values change. Consequently, the <doc://com.apple.documentation/documentation/SwiftUI/AnimatableModifier> protocol is soft-deprecated. Use `Animatable` directly when targeting the latest OS versions; for example, use `struct CustomModifier: ViewModifer, Animatable` rather than `struct CustomModifier: AnimatableModifier`. (76971100)

- The <doc://com.apple.documentation/documentation/SwiftUI/View/contentShape(_:eoFill:)> modifier now allows fine-grained control over different kinds of shapes. For drag previews, hover effects, and context menus, the matching `ContentShapeKinds` is required to affect the shape of previews when linked on iOS 15.0 or newer. The default behavior is to set the `interaction` kind. (60792377)

The <doc://com.apple.documentation/documentation/SwiftUI/EnvironmentValues/openURL> environment value can now be set and used to customize URL handling in the view hierarchy, including URL handling in <doc://com.apple.documentation/documentation/SwiftUI/Link> views and links embedded in <doc://com.apple.documentation/documentation/SwiftUI/Text> views. (78551237)

- <doc://com.apple.documentation/documentation/Swift/Task> allows you to pass the priority to be used when spawning a new `Task`. (80599258)

- <doc://com.apple.documentation/documentation/SwiftUI/Text> views that contain excessive line height characters now have a larger default size to avoid clipping or overlapping of oversized characters. (80665315)

#### Known Issues

- You can’t push to a third screen after popping from a third screen in the navigation stack. (79076444)

#### Deprecations

- `controlProminence` is deprecated. Use the new `.borderedProminent` <doc://com.apple.documentation/documentation/SwiftUI/ButtonStyle> instead. (78908460)

### TabularData

#### New Features

- <doc://com.apple.documentation/documentation/TabularData> is a new Swift framework you use to analyze and manipulate tabular data. You can use <doc://com.apple.documentation/documentation/TabularData/DataFrame> to read CSV and JSON files, as well as join, group, and aggregate data. (69982458)

### Xcode

#### Known Issues

- <doc://com.apple.documentation/documentation/MusicKit> functionality, such as loading content with music requests, doesn’t work in simulated devices. (78559381)
  
  **Workaround**: Test your app’s `MusicKit` functionality on a physical device.

---

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)