App Store review 1.2.2: the reviewer's store got a test charge, but billing.check ran with isTest:false and ignored it, so the approved plan never registered. Checks now count test subscriptions too, and cancel uses each subscription's own test flag. Uninstall resets the stored plan to free (Shopify cancels the subscription), so a reinstall asks for approval again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
billing.request throws a 401 with the approval URL in X-Shopify-API-Request-Failure-Reauthorize-Url for App Bridge to follow, but a React Router form submission rendered it as an error page. The action now returns the URL and the page opens it at the top level. Invalid-session retries are still rethrown for App Bridge.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- /auth/login no longer asks for a myshopify domain (App Store 2.3.1). With
?shop= it still hands off to OAuth; otherwise it points to Shopify.
- Billing API charges are test charges outside production and on partner
development stores (shop.plan.partnerDevelopment), so reviewers can pick a
paid plan. Real shops are charged as before.
- SCREENCAST.md matches the recording.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shopify deletes an app's validation and delivery/payment customizations on
uninstall. Datewise now remembers which ones were on (settings.checkoutFunctions,
kept in sync with Shopify whenever Settings loads) and switches them back on
when a shop reinstalls.
LISTING.md and alt text updated to what the listing form accepted (5 features,
20-char search terms, 64-char alt text, no "plan" outside pricing).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>