When performing simulator in-app purchase testing from Xcode, the purchase flow is canceled before the purchase sheet pops up in the simulator. Then, the macOS crash reporter pops up and indicates a crash in a service called PassbookServiceUI!

Here’s what it looks like:

In addition, if you inspect the error responses from StoreKit you’ll see messages like this:

SKPaymentQueue: Payment completed with error: Error Domain=ASDErrorDomain Code=907 "Unhandled exception" UserInfo={NSUnderlyingError=0x60000009e5b0 {Error Domain=AMSErrorDomain Code=6 "Payment Sheet Failed" UserInfo={NSLocalizedDescription=Payment Sheet Failed,

The crash is in a service called PassbookServiceUI, which sounds like it has nothing to do with in-app purchases. Unfortunately, it makes it impossible to perform Xcode StoreKit purchase testing.

This occurs when triggering purchases with either StoreKit 1 or StoreKit 2 APIs. It happens even if a valid StoreKit Configuration file (.storekit) file is assigned to the build target.

The Crash Environment

The PassbookServiceUI crash occurs with the following environment as of this writing:

  • macOS 13.0 Ventura
  • Xcode 14.0.1
  • Simulators iPhone 14 Pro running iOS 16
  • App code utilizing either StoreKit 1 or StoreKit 2 APIs
  • A valid StoreKit Configuration file

Solutions to the PassbookServiceUI crash

This error can be resolved by altering the simulator device, as many are known to function correctly.

  1. For iOS 16 testing - Use iPhone 14, iPhone 14 Plus, or iPhone 14 Pro Max.
  2. For iPhone 14 Pro form factor testing - Use iPhone 13 Pro (with either iOS 15 or iOS 16)

That’s it! While this is an annoying bug that hopefully Apple fixes in a future version of Xcode, the workaround is quite simple.

Level Up Your App Revenue

Nami is a complete solution for growing your app revenue. Here’s what we have to offer:

  • A proven StoreKit implementation, covering all tricky edge cases
  • An easy to adopt SDK, no server-side code is required
  • Built-in no-code paywall templates, A/B testing, and analytics
  • Our generous free tier provides reasonable limits and lots of features not found in homegrown implementations.

Now you can focus on building a great app experience that is built for generating revenue. Get started for free here.