Transaction.unfinished not getting unfinished transactions

I am testing auto renewing subscriptions for a macOS program in Xcode with a local Storekit file.

I have renewals set to occur every minute for testing.

I quit the app, and watch renewals appear in the Debug transaction manager window. Each is marked unfinished.

When I start the app, I call a function that is supposed to get unfinished transactions and finish them. In one of those "I swore it worked the other day", I am now finding it isn't working. The unfinished transaction remain marked as unfinished.

func getUnfinished() async {
    for await verificationResult in Transaction.unfinished {
        guard case .verified(let transaction) = verificationResult else {
            continue
        }
        
        await transaction.finish()
    }
}

If I add an AppStore.sync() right before looping on Transaction.unfinished, it works (i.e., cleans up unfinished transactions), but I get an alert I have to click through.

do {
        try await AppStore.sync()
    } catch {
        print("DEBUG UNFINISHED: AppStore.sync() failed: \(error)")
    }

Any idea why Transaction.unfinished isn't fetching unfinished transactions for me (without the AppStore.sync)?

Please file a feedback assistant with a sysdiagnose and screen recording.



How to File Feedback assistant ticket? https://feedbackassistant.apple.com/

  • Login with your developer account,
  • Choose "iOS & iPadOS”
  • Choose AppStore
  • “Incorrect & Unexpected behavior"
  • Input the issue description and title.
  • Upload attachements
  • Click “Submit”
  • Copy the Ticket ID “FBxxxxxxx” and let us know.

To capture a system diagnose log. https://developer.apple.com/bug-reporting/profiles-and-logs/?platform=ios

Hello, I can confirm that there is a bug in iOS 26.4.2 when testing local StoreKit 2 in Xcode. The Transaction.unfinished loop has nothing inside, although the transaction manager clearly shows there are unfinished transactions.

If testing it on iOS 18.6 (only on simulator), it will loop through unfinished and successfully clear any unfinished transactions.

Also it might be possible that the local storekit daemon is out of sync, I have filed a bug report for that under:

Transaction.currentEntitlements sometimes does not emit a result until device is reboot (FB22349195)

Transaction.unfinished not getting unfinished transactions
 
 
Q