ITMS-90809: Deprecated API Usage

Our app submission is being rejected with the following error message: TMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.

We have thoroughly scanned our code and all dependent libraries for references to UIWebView and found none.

looking for help, on how to address this issue

Answered by DTS Engineer in 790506022

Coming across messages about deprecated API usage can be quite perplexing, especially when you lack references to the affected API.

Please noticed that there was a deprecation warning for an extension until December 2020. All iOS apps should have been migrated to using WKWebView by now to avoid any compatibility problems. Given that you are receiving this message after four years, it's puzzling and we'll get to the bottom of it. Or is this your first submission to the App Store for that particular app?

Here are some steps you can take to investigate:

  1. Review Recent Changes: Check if you've added any new references or third-party libraries to your app in recent updates. Deprecated APIs might be lurking within these dependencies.
  2. Xcode and Third-Party Tools: Clarify whether you are using Xcode and any additional third-party tools or libraries for your development. A list of these would be greatly appreciated.
  3. App Store Link: If possible, provide a link to your published App Store app. We'll need to inspect the project dependencies thoroughly, including third-party tools, frameworks, and libraries, to track down the source of the deprecation.

This issue might have been caused by a recent update to a third-party library that has not been fully compliant with Apple's deprecation guidelines.

Did you previously update your app without encountering this deprecation notice?

Here is a related post that might provide some additional insight: https://forums.developer.apple.com/forums/thread/122114

Your help in providing the requested information will be invaluable in resolving this problem.

Related Links:

https://developer.apple.com/news/?id=12232019b

https://developer.apple.com/news/?id=edwud51q

Coming across messages about deprecated API usage can be quite perplexing, especially when you lack references to the affected API.

Please noticed that there was a deprecation warning for an extension until December 2020. All iOS apps should have been migrated to using WKWebView by now to avoid any compatibility problems. Given that you are receiving this message after four years, it's puzzling and we'll get to the bottom of it. Or is this your first submission to the App Store for that particular app?

Here are some steps you can take to investigate:

  1. Review Recent Changes: Check if you've added any new references or third-party libraries to your app in recent updates. Deprecated APIs might be lurking within these dependencies.
  2. Xcode and Third-Party Tools: Clarify whether you are using Xcode and any additional third-party tools or libraries for your development. A list of these would be greatly appreciated.
  3. App Store Link: If possible, provide a link to your published App Store app. We'll need to inspect the project dependencies thoroughly, including third-party tools, frameworks, and libraries, to track down the source of the deprecation.

This issue might have been caused by a recent update to a third-party library that has not been fully compliant with Apple's deprecation guidelines.

Did you previously update your app without encountering this deprecation notice?

Here is a related post that might provide some additional insight: https://forums.developer.apple.com/forums/thread/122114

Your help in providing the requested information will be invaluable in resolving this problem.

Related Links:

https://developer.apple.com/news/?id=12232019b

https://developer.apple.com/news/?id=edwud51q

Hi,

Thank you for your message and guidance.

Recent Changes: We've thoroughly reviewed recent updates. No new references or third-party libraries containing deprecated APIs were found.

Xcode and Third-Party Tools: We primarily use Visual Studio on Mac, Xamarin, and Xamarin.iOS frameworks, minimizing reliance on additional tools or libraries.

App Store Link: Here's the link to our published App Store app: All My Contacts https://apps.apple.com/app/allmycontacts/id1588844877

This is our first submission for this app. We're dedicated to resolving this swiftly.

Best regards, Johnny

Our software versions are as follows: macOS: 14.5.0 VS for Mac: 17.6.12 Xamarin forms: 5.0.0.2515 Xamarin.iOS: 16.4.0.23 Xcode 15.4.22622 SDK: 17.5

Our software versions are as follows: macOS: 14.5.0 VS for Mac: 17.6.12 Xamarin forms: 5.0.0.2515 Xamarin.iOS: 16.4.0.23 Xcode 15.4.22622 SDK: 17.5

Thanks for the update. My apologies for the delay in responding. It would be beneficial to involve Xamarin support as there was an issue with Xamarin.Forms reported before. As for third-party development tools, I’m not sure about their specific use, but I can recommend checking the directory level for UIWebview references using the command ‘grep -r UIWebview’. This will list all the references and their respective libraries, providing a clearer idea of their whereabouts.

For example,

cd ~/Library/Developer/Xcode/Archives/2020-03-09/SampleApp 3-9-20, 11.47 AM.xcarchive

  1. To search for UIWebView, type the following on the command-line:

grep -R UIWebView *

If there are references to UIWebView, you will get a list of files that contain the reference. You may find references in your app’s nib files, dSYM file, or even a ReadMe or other documentation. For example,

% grep -R UIWebView * Binary file Products/Applications/SampleApp.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib matches Binary file dSYMs/SampleApp.app.dSYM/Contents/Resources/DWARF/SampleApp matches

Once you’ve identified where the references to UIWebView are, you can start the process of removing those references. You can start by searching the project for where the occurrences of the UIWebView exist. 

  1. Go to the folder where your project source files are located. For example:

cd ~/src/SampleApp

  1. Now run the same grep command for UIWebView to determine if there are any occurrences in the project source files:

grep -R UIWebView *

If there are no results, it means it’s not referenced in project source files.

If you do find results, you’ll need to remove those references. Note that a reference in a comment such as “Replaced UIWebView with WKWebView” may trigger the ingest warning or rejection.

(If you find this to be the case, I encourage you to file a bug report via Feedback Assistant, and upload a copy of the archive that failed the ingest. Please send me the Feedback Number if you do so.)

  1. Now run a search for webView that will show up in storyboards (note: “webView” here, not “UIWebView”).

grep -R webView *

If there are no results, it means it’s not referenced in your storyboards.

If you do get results, they will be in this form:

SampleApp/Base.lproj/Main.storyboard: <webView contentMode=“scaleToFill” fixedFrame=“YES” translatesAutoresizingMaskIntoConstraints=“NO” id=“xsA-nw-Njb”> SampleApp/Base.lproj/Main.storyboard: </webView>

This tells us that the Main storyboard has a UIWebView in it. Each storyboard has a unique ID. Copy the ID for this storyboard (in this example, it’s xsA-nw-Njb).

  1. In Xcode, perform a project-wide search for that value by going to Find > Find In Project… and searching for the storyboard ID.

  2. In the returned results, click on the ID and it will take you to the specific scene in the storyboard that contains the UIWebView.

You will need to remove the UIWebView from the storyboard and replace it with WKWebView or another alternative.

If you find references to UIWevView in third-party libraries or frameworks your app uses, you’ll need to contact the support channel for those libraries or frameworks for help in removing UIWebView.

If you believe your app does not include any references to UIWebView please file a bug report via Feedback Assistant, and upload a copy of the archive that failed the ingest. Also include your app’s 9- or 10-digit Apple ID, along with detailed information about why you believe the API was incorrectly flagged.

Hope this helps.

ITMS-90809: Deprecated API Usage
 
 
Q