App Store Server API: > 4 second latency

We're currrently migrating from the deprecated /verifyReceipt endpoint to the new App Store Server API.

Context: We use Storekit 2 on the client. Even though it validates transactions client-side, our app also persists subscription data (Original Transaction ID + Product ID) to our DB, so it's necessary to validate the purchases server-side as well.

When calling the new endpoints (for example, Get All Subscription Statuses or Get Transaction History ), I'm currently seeing 4+ second latency.

This is the case when passing in only a Transaction ID and hitting the Production endpoint, even for Transaction IDs that don't exist in Production (eg, Sandbox transactions).

Are there any plans to improve the performance of this API? As it currently stands, we're holding off on the migration -- 4 seconds is far too impactful on both our user experience and our backend system versus the existing 300-400ms latency of /verifyReceipt.

Thank you for reaching out. That does not sound typical, the latency we observe on our side for Get All Subscription Status on our end is average about 100ms, for example. Please file a ticket in Feedback Assistant with more information. Also, as you mention you use StoreKit 2 client side. Generally you should be able to pass the jwsRepresentation directly from the client and not need to call verifyReceipt or the API in the regular case, not that the API shouldn't also be performant.

Thank you for the quick response here! I've been experiencing this consistently for last 24 hours - I just filed a Feedback Assistant ticket to escalate.

To clarify - we're migrating to a StoreKit 2 solution, so wanting to move away from verifyReceipt on our backend at the same time.

2 questions:

  1. Does VerificationResult.jwsRepresentation on the client matches up with JWSTransaction in the App Store API?

  2. If I sent the client jwsRepresentation to our server, is there a way to verify that the transaction's underlying subscription is also active without hitting the App Store API?

It does seem like we can get transaction-related info with jwsRepresentation, but the reason I was using Get All Subscription Status endpoint is because subscription status is also included in that response.

Quick update - after more testing, this seems to be isolated to only when non-existent Transaction IDs are sent to the Production endpoint.

With a Production Transaction ID on Production endpoint, seeing ~200-300ms latency.

Sandbox Transaction ID = 3-4 second latency on Production, 200ms latency on Sandbox.

Using a nonexistent transaction ID = 3-4 second latency on Production, 300-500ms latency on sandbox.

App Store Server API: > 4 second latency
 
 
Q