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.

This is a common problem with 3rd party, cross-platform frameworks. Apparently, they are full of private APIs. They may be configured to be enabled only in debug builds. Check your build settings to see if you have debug builds enabled. However, this would mean that the version you submit to the store is radically different than the version you are developing and testing. The problem could be something other than a DEBUG/RELEASE setting.


I'll end with the question I always ask and that has never, to this day, received a response: What does Cordova and Ionic support say when you contact them and ask about this problem? They are the ones giving you code that is being rejected. Why are they never have any responsibility to fix these problems? It's a mystery.

Hello,
I am experiencing the same problem. I only made some basic code change to my App so I can release a new build. Minor changes after I submitted the App, I got an email with these errors also.
Portion of the error msg:
ITMS-90338: Non-public API usage :
 behaviorTypes, convolutionState, discoverAllContactUserInfosWithCompletionHandler:, discoverAllContactsCompletionBlock, discoverUserInfoWithEmailAddress:completionHandler:, discoverUserInfoWithUserRecordID:completionHandler:, discoverUserInfosCompletionBlock, displayContact, drawableResizesAsynchronously, encodeToCommandBuffer:sourceImage:convolutionState:, encodeToCommandBuffer:sourceImage:destinationImage:state:, getProperty:onChannel:responseHandler:, hasProperty:onChannel:responseHandler:, initWithEmailAddresses:userRecordIDs:, initWithMIDIEntity:dataReadyHandler:

This happens to me too only since some hours ago for two of my projects. I submitted one of them this morning successfully already - only made (really) minor changes since then.

Did something change? Maybe it has something to do with iOS 16 being revealed some hours ago? Is anyone experiencing similar problems out of the blue since today?

I have this error in my project today and need to push out a new version today? Anyone have any ideas?

Same here. Just began today (for seamlingly no reason)

Also having the same issue, just started seeing this when I attempted to deploy today. Super frustrating, it's nearly impossible to understand or debug.

I am experiencing the same issue. I was able to push a build to TestFlight this morning and made changes (no new libraries/packages were added) to the code that I wrote. Hope it will get fixed soon.

Same issue using Flutter deployment, got

  • ITMS-90338: Non-public API usage - The app references non-public selectors in Frameworks/webview_flutter.framework/webview_flutter: initWithFrame:configuration:, isMainFrame, setNavigationDelegate:, userContentController.

Tried to deploy to TestFlight but was unable to. Hopefully this gets resolved.

Having the same issue with flutter as Bleik_Urrego

I'm also experiencing the same issue as of only a few hours ago. I was able to successfully submit builds to the app store as of this morning but something changed a few hours ago.

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

Same issue here, nothing has changed in the app in the area they are complaining about.

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

Any solution for this?? Thx!

Having the same issue with expo (eas-build).

We are also seeing this issue using ionic 5 builds that were working well until this afternoon:

The app references non-public selectors in Payload … id 499c2121-51c7-4b83-8238-5ffaa2ab58a8

Same here, an app that has been releasing updates without issues for months. Even 2 days ago, a testflight version successfully uploaded, but today it just failed after simple (non native) changes.

TMS-90338: Non-public API usage - The app references non-public selectors in zinspector3: estimatedProgress, initWithFrame:configuration:, isMainFrame, isPassthrough, navigationType, onSuccess:, removeValuesForKeys:completion:, setNavigationDelegate:, setProcessPool:, targetFrame, userContentController, websiteDataStore.

Did apple turn on a setting that bans all these out of the blue? Or did someone add a "not" condition in their code and now everything is flagged?

I'm with you guys. Didn't change any dependencies but started getting this error while uploading...

Same here, ony minor code changes, no third party added since my last successfully uploaded testflight 3 days ago, using React Native here. Can't help thinking it's wwdc22 or ios16 related ...

I have literally the same problem...

Same issue here

Same here on Expo (43) + EAS

Having the same issue with a Flutter build. Was submitting fine on Friday with only very minor code changes.

I will add my voice to the chorus here, we literally uploaded a build less than twelve hours ago, and now this. I'm digging around in the linked libraries to see if there's anything new and different from this archive to the last, but it doesn't look like it so far.

Same here -- trying all day to fix it.. glad it's not just me!

Here are the errors I'm getting:

App Store Connect Operation Error Your app contains non-public API usage. Please review the errors, correct them, and resubmit your application.

App Store Connect Operation Error The app references non-public selectors in Payload: applicationNameForUserAgent, initWithFrame:configuration:, isMainFrame, navigationDelegate, navigationType, setNavigationDelegate:, setProcessPool:, targetFrame, userContentController I've removed any suspect plugins down to the core plugins: Camera, Device, File, and Geolocation, which are all established plugins, but no matter what, the exact same errors above persist every time I submit the app from XCode for validation. And all versions and tools are up to date.

Apple -- can I have a day's pay back that I've wasted on this?

Hi,

I have the same error. I put here: https://github.com/swordray/JXWebViewController/issues/1

And the message is:

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

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