About Guideline 2.1 - Performance in-app purchase functionality is not present

Over two months ago, one of my apps (My desktop web) was rejected during its first submission due to 2.1 - App Completeness. The reviewer said that the in-app purchase information was not visible, and that the purchase button showed “null(null)”. However, during both Xcode debugging and TestFlight testing, I was able to see all the in-app purchase information correctly.

After multiple rounds of communication with the reviewer, the app was finally approved — although I never figured out why. It might be because I submitted the in-app purchase for review first, and then submitted the app itself. In any case, it was eventually approved.

Now, I’m facing the exact same issue with my new app. The in-app purchase code is exactly the same (except for the Product IDs), but again, the reviewer cannot see the product information. The relevant line of code is very straightforward — I can successfully retrieve one product, but the reviewer sees zero:

self.products = try await Product.products(for: [productId])

I’ve already contacted DTS, and they said: “You should make sure that StoreKit 2 effectively returns the display price and name of your product object and that these values still exist when you are about to display them.” Yes, I’ve verified that — I can see the in-app purchase information. But the reviewer cannot.

I even scheduled a call and spoke with a reviewer based in San Jose, California. She confirmed that everything looks normal from the submission process side, and suggested I either check the app’s implementation again or continue working with DTS.

One more thing I noticed: throughout the entire review process, the in-app purchase product always remains in the “Waiting for Review” state, no matter how the app's status changes. The reviewer said that’s expected behavior.

At this point, I honestly don’t know what’s wrong anymore — I’m completely overwhelmed. Everything works perfectly in both Xcode and TestFlight, and I have no idea what else I can do to test or verify it.

Xcode and TestFlight screenshot:

Reviewer screenshot:

Appstore connect:

Can someone tell me where my possible mistakes or problems might be?

Thank you for your post. We're investigating and will contact you in App Store Connect to provide further assistance. If you continue to experience issues during review, please contact us.

After testing(Reviewer), it was found that the in-app purchase information that can be obtained using Storekit1 cannot be obtained using Storekit2.

Is it related to this?

TN3188: Troubleshooting In-App Purchases availability in the App Store | Apple Developer Documentation#Review-the-status-of-your-In-App-Purchases

I contacted the Code Technical Support (DTS) and it has been 5 days. But received no response.

I contacted the Code Technical Support (DTS) and it has been 8 days. But received no response.

8 days after the App was rejected

The in-app purchase review status changed from "Waiting for Review" to "Developer Action Needed"

Just now, the reviewer responded to me again, as shown in the picture.

He reiterated:

The in-app purchases do not need to have been previously approved to confirm they function correctly in review.

Although I know that I can pass the review if I change the code to StoreKit1.

I still want to know why this is happening.

Why can't the reviewer see the in-app purchase information when I use StoreKit2?

A few minutes after I responded to the reviewer, the reviewer sent a new response. He said that the in-app purchase information can be seen, but it is in Arabic.

I guess it may be that Arabic starts with A and is listed in the first line of AppStore Localization.

I did not submit a new binary file or do anything on appstoreconnect.

Day 9 of waiting for DTS.

Summarize yesterday's communication with the reviewer.

Yesterday, the in-app purchase information of the app quietly became "Developer Action Needed", and the reviewer replied with a message a few hours later.

  1. The reviewer said that the in-app purchase information can be displayed, but the Arabic label is displayed on the machine with the US language setting. And after pressing the purchase button, the in-app purchase is not completed. Users still cannot purchase IAP.
  2. I replied: My language has also become Arabic, but the purchase can be made.
  3. I asked: I did not submit a new binary file, nor did I do anything on AppStore Connect. Why can the reviewer see the in-app purchase information now? Instead of the original null (null).
  4. The reviewer replied that they were not sure what the problem was, and since I contacted DTS, I would wait for a response.

After several urgings, the DTS engineer finally replied to my email.

His reply was simple, asking me to look at a technical document, namely TN3186.

I replied: We have carefully read these, including TN3188, etc., and these documents cannot solve my problem.

I hope the DTS engineer can look at the post in the forum.

Regarding the issue of in-app purchase labels showing Arabic in the US, it is because after the in-app purchase is rejected, Apple will display the first localized label by default, which is Arabic. This is also consistent with my guess.

After testing, it was found that it was like this (I modified a localized label and it became "Ready to Submit"), and then the in-app purchase information was not displayed in Arabic.

Because the communication time with DTS was tooooooo long, I could no longer wait.

So, today I changed the in-app purchase function to Storekit1 and submitted it for review.

Latest progress: As I expected, I used Storekit1 and the App passed the review. I will change to Storekit2 later.

DTS gave me a new reply, still asking me to look through TN3186. And mentioned that IAP will become "In review" during the review, which is obviously not the case. This is the key problem.

DTS still did not read my post in the forum.

About Guideline 2.1 - Performance in-app purchase functionality is not present
 
 
Q