Mac App Store receipt validation exit(173) Not Available on Sequoia

I have 6 Mac App Store apps. They're all upfront paid, with no IAP, and they've all used the same on-device Mac App Store receipt validation code for years, which returns 173 in main() if there's not a valid receipt. Incidentally, the apps are entirely Objective-C.

I've just learned that if I compile an app with Xcode 16 and the macOS 15 SDK, I get the alert "exit(173) Not Available" when the app returns 173 on macOS 15 Sequoia. The rest of the alert text says, "The exit(173) API is no longer available. You can use Transaction.all or AppTransaction.shared to verify in-app purchases instead."

I have several questions:

  1. Why was this done?
  2. Where is this behavior change documented?
  3. What are my options, given the above description of my apps?

Good questions - The developer documentation says that the easiest way to do it is to use the Swift struct AppTransaction. If you can actually figure out how to do it, you are smarter than me and a whole lot of other developers. Please post your code if you figure this out.

Mac App Store receipt validation exit(173) Not Available on Sequoia
 
 
Q