ITMS-90338: Non-public API usage automatic refuse

Hello,


We contacted Apple Developer Support due to an automatic message we receive when trying to publish a new version of our app



Dear Developer,
We identified one or more issues with a recent delivery for your app. Please correct the following issues, then upload again. 
ITMS-90338: Non-public API usage - The app references non-public selectors in Idealys: applicationWillTerminate,
 ddSetLogLevel:, localTarget, newSocketQueueForConnectionFromAddress:onSocket:, setOrientation:animated:,
 socket:didConnectToHost:port:, socket:didReadPartialDataOfLength:tag:, socket:didReceiveTrust:completionHandler:,
 socket:didWritePartialDataOfLength:tag:, socket:shouldTimeoutReadWithTag:elapsed:bytesDone:, 
socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:, socketDidCloseReadStream:, socketDidSecure:,
 terminateWithSuccess, webSocket:didReceiveMessage:, webSocketDidOpen:

 If method names in your source code match the private Apple APIs listed above,
 altering your method names will help prevent this app from being flagged in future submissions.
 In addition, note that one or more of the above APIs may be located in a static library that was included with your app.
 If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/ 

Best regards,

The App Store Team


The problem is we do not understand what the issue is even when reading your automatic message.


How can we debug this ?

How can we identify the source of the problem ?

Do you have any idea of what the problem is ?


What we tried :

  1. We tried to re-publish the application we currently have on your store (production) with different build number => App rejected with the same automatic message ;
  2. We tried to disable one by one every cordova plugin (see the list below) => App rejected with the same automatic message ;
  3. We tried to look for every reference listed in the automatic message using XCode and grep => We found none of those ;
  4. We tried to upgrade cordova-ios => App rejected with the same automatic message ;


XCode version : 11.0

MacOS version : 10.14.6

Cordova-ios version : 4.5.5

Ionic version : 1


Best regards,

Answered by App Store Connect Engineer in 715975022

The issue has been resolved on the app validation backend. Please try resubmitting. Sorry for the trouble.

Hi,

I have the same error now:

ITMS-90338: Non-public API usage - The app references non-public selectors in Frameworks/JXWebViewController.framework/JXWebViewController: isMainFrame, setNavigationDelegate:, targetFrame. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed

Any solution?

Having the same issue today, worked fine yesterday. Nothing has been changed...

i'm having the same error as everyone else. seems like they must've released something new to the api that checks build uploads.

hopefully they can submit a fix soon as I don't have a clue how to resolve by changing anything on my end. seems crazy!

I've also experiencing the same issue, minor changes, all was good 2 hours ago and a sudden error happens. i think there's something related to the xcode backend for performing SPI check which might be broken at this time and giving us a false alarm.

Same here. Just began today and everything is working fine until last night!

same for me. only minor changes for some code logic but same frameworks than 3 days ago when it worked for me (Testflight build) without any issues. After 1 hour of troubleshooting I found this thread :D

App.app/Frameworks/Capacitor.framework/Capacitor: __swift_objectForKeyedSubscript:, applicationNameForUserAgent, initWithFrame:configuration:, isMainFrame, setNavigationDelegate:, targetFrame With error code STATE_ERROR.VALIDATION_ERROR.50 inline-code

Same here. I even tried with a git reset head to make sure it was exactly the same version. I'm using the latest version of capacitor, nothing else.

ITMS-90338: Non-public API usage - The app references non-public selectors in Frameworks/Capacitor.framework/Capacitor: applicationNameForUserAgent, initWithFrame:configuration:, isMainFrame, setNavigationDelegate:, targetFrame.

I'm also experiencing this issue this morning. A simple search of my project reveals many uses of these WKWebView APIs that are clearly public.

I suspect the issue is due to an issue with App Store builds linking against the freshly announced iOS16/Mac updates this morning. Unless those APIs have been outright banned today with no warning (unlikely), I'd put money on it being an Apple issue which they will resolve ASAP.

Sadly, we go through this every once in a while when a silly bug is introduced into the private API string compare list. My team is now blocked as well and it's not a good time for such a bug. Usually, this gets worked out by someone filing a RADAR. Given the blast radius, I'm assuming this has already been filed and hoping for a quick resolution. The longest I've seen was in 2020 for 10 days though.

I have the same problem with a project that was successfully built and published a couple of days ago. I know my comment does not help but just wanted to pitch it to get visibility that this issue is affecting many projects.

My project is on React Native and the new build that is failing is only a few lines different (and Javascript lines, not even native iOS). No new or upgraded dependences.

If it helps, there is this issue in the React Native project: https://github.com/facebook/react-native/issues/33789 It seems that the problem is not with a specific framework but with Apple, but that thread became quite active today so any news there might help.

I'm also seeing this issue as of today without adding any new packages.

Having this problem with instabug. Please fix apple that I need to do hotfixes

Same problem here. I was pushing app updates (small incremental changes) to testflight. I didn't do any change in packages. I was pushing OK until some time today.

The exact wording of the error message:

The app references non-public selectors in Payload/App.app/Frameworks/Capacitor.framework/Capacitor: __swift_objectForKeyedSubscript:, applicationNameForUserAgent, initWithFrame:configuration:, isMainFrame, setNavigationDelegate:, targetFrame With error code STATE_ERROR.VALIDATION_ERROR.50 for id 24e410ba-55a9-443c-bc9a-0e20ae7f76b2

Also the app validates just fine.

Hi, I got an email with this exact error, but my build is showing on App Store connect as ready to publish, all looks fine. Maybe they've just fixed this issue?

same here, this didn't start for us until today - no library/pod changes and all of the sudden apple is complaining about methods/selectors that are being used by pods we've used for years and successfully submitted app review

ITMS-90338: Non-public API usage - The app references non-public selectors in XXXXXXX: estimatedProgress, initWithFrame:configuration:, isMainFrame, navigationType, newSocketQueueForConnectionFromAddress:onSocket:, onSuccess:, setNavigationDelegate:, setProcessPool:, socket:didAcceptNewSocket:, socket:didConnectToHost:port:, socket:didConnectToUrl:, socket:didReadData:withTag:, socket:didReadPartialDataOfLength:tag:, socket:didReceiveTrust:completionHandler:, socket:didWriteDataWithTag:, socket:didWritePartialDataOfLength:tag:, socket:shouldTimeoutReadWithTag:elapsed:bytesDone:, socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:, socketDidCloseReadStream:, socketDidDisconnect:withError:, socketDidSecure:, targetFrame, userContentController, websiteDataStore. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

Same here... I uploaded a build to testFlight on Friday, but today i get this error too when build my app using cross-platform framework Titanium.

The app references non-public selectors in Payload/Caixa Previdência.app/Caixa Previdência: callWithArguments:, dataChanged, estimatedProgress, frameInfo, initWithFrame:configuration:, initWithURL:configuration:, initWithURL:entersReaderIfAvailable:, initialURL, isMainFrame, isNumber, isObject, matchFound, navigationType, setException:, setNavigationDelegate:, setProcessPool:, targetFrame, toArray, toDictionary, toObject, userContentController, websiteDataStore With error code STATE_ERROR.VALIDATION_ERROR.50 for id ...

Having the same issue with react 0.65.1 with one of my apps and the other (same rn version) is not experiencing issue. It's also happening after minor updates (only chaging litterally one character and the version number)

We started having the same issue today.

Adding my specific error message here, which seems to be duplicated above, so that hopefully we are notified once the issue has been resolved:

ITMS-90338: Non-public API usage - The app references non-public selectors in ibble: __swift_objectForKeyedSubscript:, authorizedScopes, createRequest, estimatedProgress, isMainFrame, isPassthrough, newSocketQueueForConnectionFromAddress:onSocket:, onSuccess:, relativeSize, removeValuesForKeys:completion:, setNavigationDelegate:, setProcessPool:, setRequestedOperation:, setRequestedScopes:, socket:didAcceptNewSocket:, socket:didConnectToHost:port:, socket:didConnectToUrl:, socket:didReadData:withTag:, socket:didReadPartialDataOfLength:tag:, socket:didReceiveTrust:completionHandler:, socket:didWriteDataWithTag:, socket:didWritePartialDataOfLength:tag:, socket:shouldTimeoutReadWithTag:elapsed:bytesDone:, socket:shouldTimeoutWriteWithTag:elapsed:bytesDone:, socketDidCloseReadStream:, socketDidDisconnect:withError:, socketDidSecure:, spanArray, spanArray_Count, toggleEditing:, underline, userContentController, websiteDataStore. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

Like many we were good w/ a build and minutes later w/ no change other than meta-data things started to fail.

Same here after just a version bump.

Having a similar issue here. I last updated my Unity app less than one month ago, I've made very few changes to my code in that time.

Here's my error:

ITMS-90338: Non-public API usage - The app references non-public selectors in Frameworks/UnityFramework.framework/UnityFramework: applicationWillFinishLaunchingWithOptions:, callWithArguments:, didReceiveRemoteNotification:, estimatedProgress, frameInfo, initWithFrame:configuration:, isMainFrame, loadPlugin, navigationType, setNavigationDelegate:, setProcessPool:, toDouble, toString, userContentController.

Seems like I'm not alone, hopefully Apple is on this...

Thanks.

Also experiencing this issue as of today without any changes to my build process or code

Same problem. It seems to be something related to Apple itself.

Same here, I guess we all gotta wait for Apple to resolve this.

Everything was working normally just before WWDC. Now I'm getting the same "The app references non-public selectors" error message other folks are mentioning.

Same here just started happening this morning after a successful upload of the exact same bits earlier. Very strange.

ITMS-90338: Non-public API usage automatic refuse
 
 
Q