Skip to content

feat(products): submit App Store products for Apple review - #128

Open
joshdholtz wants to merge 4 commits into
mainfrom
joshholtz/dx-975-store-submit
Open

feat(products): submit App Store products for Apple review#128
joshdholtz wants to merge 4 commits into
mainfrom
joshholtz/dx-975-store-submit

Conversation

@joshdholtz

@joshdholtz joshdholtz commented Aug 19, 2026

Copy link
Copy Markdown
Member

rc products store apply pushes desired state to App Store Connect, but nothing is actually submitted to Apple for review — products end up configured but not purchasable. This adds a submit command that starts Apple review for the App Store products you name.

You pass the product IDs you want submitted. They all have to belong to the same app. If a product isn't ready yet (not in App Store Connect, or Apple won't take the first IAP through this API), the backend skips it with a reason instead of failing the whole run, and the command reports each outcome plus a summary. It's App Store only; --store defaults to app_store and rejects anything else.

The endpoint is a beta product-catalog route that isn't in the public spec, so it's added to the beta overlay with a hand-written client method and response types next to the existing store-state code.

Tests cover the happy path, a skipped product, the App-Store-only rejection, and a submission failure exit code.

🤖 Generated with Claude Code


Note

Medium Risk
Starts real Apple review submissions (confirmation-gated, App Store only). Skips unready products instead of failing the batch; first-IAP-for-an-app still cannot go through this path.

Overview
Adds rc products store submit so products that were applied to App Store Connect can actually be sent for Apple review. Apply never submitted; this command does.

You pass one or more product IDs (same app, max 200). --store is App Store only. Unready products (not in ASC, or first IAP that must ship with a new app version) come back skipped with a reason; the run still succeeds. Confirmation is required (--yes / --no-input). Output is a per-product table plus a hint when anything was skipped.

Wires a development POST .../products/actions/submit_to_store overlay, a hand-written StoreState.SubmitToStore client, and tests for mixed outcomes, store rejection, API errors, and agent-schema variadic args.

Reviewed by Cursor Bugbot for commit 77c5935. Bugbot is set up for automated code reviews on this repo. Configure here.

@linear-code

linear-code Bot commented Aug 19, 2026

Copy link
Copy Markdown
DX-975 Add `rc products store submit` — submit App Store products for Apple review

Problem

rc products store apply pushes the desired state to App Store Connect, but nothing is submitted to Apple for review — the product sits configured-but-not-purchasable until someone submits it manually in ASC. This is the root cause of the "apply reported success but Apple never approved" issue found during the Product Catalog bug-bash: apply succeeding ≠ product is live.

The MCP/dashboard flow has a dedicated submit step (submit-products-to-store); the CLI has no equivalent. Store subcommands today are: list / sync / plan / show / apply / discard / screenshot.

What to build

rc products store submit — starts Apple review for products already in App Store Connect. Mirrors the canonical model in Rico's product-store-state skill:

  • Only submits products the user names, or the ones that just applied — never "everything that looks ready".
  • A product is submittable only once it's in ASC (apply_status: applied, or get-product-store-state reports it).
  • Report per-product outcomes including skips; on failure, report why and stop.
  • App Store only — skip for Play/RC Billing/Test Store.

Open question / dependency

The submit endpoint is not yet in our v2 spec/overlay. First step is to confirm the real API endpoint (check RevenueCat/agents' submit-products-to-store MCP tool for the endpoint it calls) and, if needed, add it to the beta overlay + a hand-written client method — same pattern as the store-state response-schema work.

Related

  • Slack thread (Product Catalog bug-bash, 2026-08-18) — Ricardo confirmed apply only writes ASC metadata; submit is separate.
  • Follows the store-state readiness + equalization work (DX-973 / DX-974).

Review in Linear

@joshdholtz
joshdholtz requested review from a team and popcorn August 19, 2026 16:46
@joshdholtz
joshdholtz marked this pull request as ready for review August 19, 2026 16:47
Copilot AI lite review requested due to automatic review settings August 19, 2026 16:47

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

joshdholtz and others added 3 commits August 20, 2026 13:10
Applying a store-state plan pushes desired configuration to App Store
Connect but never submits anything for review, so products sit
configured-but-not-purchasable. This adds `rc products store submit` to
start Apple review for the named App Store products.

Only the products passed as arguments are submitted, and the backend
skips any that aren't ready yet (with a reason) instead of failing the
whole run. The endpoint is a beta product-catalog route, so it's added
to the beta overlay with a hand-written client method and response
types alongside the existing store-state code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Non-submitted products now get a follow-up hint pointing at the DETAIL reason and
the apply-first remedy. Adds unit coverage for the ID validation (trim, empty,
>200 cap) and asserts a fully-skipped response still exits 0. Documents the
per-product result type (no per-product failure — hard failures are HTTP errors).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The first In-App Purchase or subscription for an app can't be submitted on its
own — App Store Connect requires it to be reviewed with a new app version, so
submit returns it skipped until the app has an approved product. Document that
in the command help and the command surface so it reads as expected, not a bug.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@joshdholtz
joshdholtz force-pushed the joshholtz/dx-975-store-submit branch from c521e95 to 532b61a Compare August 20, 2026 18:10
Comment thread internal/cli/products_store.go Outdated
The submit Use string was "<product-id>...", but parseArgsFromUse only
recognizes tokens fully enclosed in <> or [], so the trailing dots left
the positional args invisible to `rc schema` / `rc commands --schemas`
even though MinimumNArgs(1) requires them. Match the sibling attach/detach
convention: "<product-id> [product-id...]".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@joshdholtz

Copy link
Copy Markdown
Member Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 77c5935. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants