First in-app purchases left out of a review are caught (pitfall 70): firstProductGaps in validate / release plan (blocker) and the apple submit plan (refuses to leave a never-approved first product out); apple status (WARN + firstProductGaps in --json), release status and the desktop checks warn while a version waits for or is in review without it; iap-review says 'ready, not submitted yet' instead of 'complete'

This commit is contained in:
CRTkafa 2026-10-15 19:31:26 +08:00
parent 1c35a625e1
commit b830a99a5f
16 changed files with 288 additions and 18 deletions

View file

@ -806,3 +806,19 @@ that fails without the fix (see CONTRIBUTING.md).
the template config type-checks against the packed entry in ES module and CommonJS projects under bundler,
node16, nodenext and node10 with no @types/node and skipLibCheck off; `import()` and `require()` of the package
load under Node.
## 70. The first in-app purchase was not in the version's review submission
- **Symptom:** the app version has been WAITING_FOR_REVIEW for days while its first in-app purchase (here a starter
pack) still says READY_TO_SUBMIT; the review submission's items hold only the appStoreVersion.
- **Cause:** Apple reviews the first in-app purchase of each type (and the first subscription of a group) only together
with an app version. A submission made without it (from the App Store Connect version page, or before the product
was ready) leaves it out, and the version is approved without it: the product is not sellable. storebound <= 0.8.6
printed the IAP and the submission states separately and called READY_TO_SUBMIT "complete".
- **Do:** before submitting, `storebound validate` (blocker `iap-first`) and `storebound release plan`; submit with
`storebound apple submit --build <n>`, which adds every ready product to the same submission and refuses to leave a
never-approved first product out. Already in review: withdraw the submission (`storebound apple status
--cancel-submission <id>`) and resubmit with the product, or add it with the next version.
- **Guard:** `firstProductGaps` (cli/lib/review-submit.ts) read by `cli/apple/first-products.ts`: `apple status` (WARN
and `firstProductGaps` in --json), `release status` and the desktop checks (`appleFirstProductWarnings`), `validate`
/ `release plan` (blocker), the `apple submit` plan (blocker); `iap-review` says "ready, not submitted yet";
`tests/first-products.test.ts`.