Rejection 1 — Guideline 2.1(a)
Crash
EXC_BREAKPOINTdispatch_assert_queue_fail
Cause
Empty completionHandler closure inferred @MainActor by Swift 6, but called on com.apple.launchservices.open-queue. Sequoia added a runtime assertion.
Fix
Remove the completionHandler parameter entirely. No closure, no annotation, no assertion.
Rejection 2 — Guideline 2.1(b)
Symptom
Tip jar sheet appears empty during App Store review. No products, no error message.
Cause
Product.products(for:) returns [] for IAPs with "Waiting for Review" status. The review sandbox cannot see unapproved products.
Fix
Detect empty array, show explanatory message instead of a blank sheet.