ITMS-90809: UIWebView API Deprecation (followed all instructions, however I'm getting the deprecation message)

When I’m uploading a build to AppStoreConnect (to test it via TestFlight for example), I’m getting the well known deprecation message:

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of new apps that use UIWebView APIs starting from April 2020. See UIWebView | Apple Developer Documentation for more information.

However I have followed all the instructions (e.g. from the official Ionic Blog) and don’t know what I could have missed.

What I did:

  1. Updated all cordova plugins to the latest version (e.g. cordova-plugin-ionic-webview is now on v4.1.3; cordova-plugin-inappbrowser is on v3.2.0)
  2. Checked Cordova Platform (it is ios 5.1.1 )
  3. Made sure that I have <preference name="WKWebViewOnly" value="true"/> in my config.xml
  4. Ran ionic cordova prepare ios and ionic cordova build ios

I still get the deprecation message, I already tried removing the whole ios platform and adding it again afterwards, that didn’t help.

List of cordova plugins I’m using:

card.io.cordova.mobilesdk 2.1.0 "CardIO"
com-badrit-base64 0.2.0 "Base64"
com.paypal.cordova.mobilesdk 3.5.0 "PayPalMobile"
cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-camera-with-exif 1.3.1 "cordova-plugin-camera-with-exif"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-file 6.0.2 "File"
cordova-plugin-file-opener2 2.2.1 "File Opener2"
cordova-plugin-file-transfer 1.7.1 "File Transfer"
cordova-plugin-filepath 1.5.6 "cordova-plugin-filepath"
cordova-plugin-ftp 1.1.1 "Ftp"
cordova-plugin-google-analytics 1.8.6 "Google Universal Analytics Plugin"
cordova-plugin-inappbrowser 3.2.0 "InAppBrowser"
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.1.3 "cordova-plugin-ionic-webview"
cordova-plugin-nativegeocoder 3.2.2 "NativeGeocoder"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-taptic-engine 2.1.0 "Taptic Engine"
cordova-plugin-vibration 3.1.1 "Vibration"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-sqlite-storage 3.4.0 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version"
cordova.plugins.diagnostic 5.0.1 "Diagnostic"

Ionic Info:

Ionic:

   Ionic CLI                     : 5.4.16 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.11.10
   @angular-devkit/build-angular : 0.803.21
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.0.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : ios 5.1.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 17 other plugins)

Utility:

   cordova-res (update available: 0.11.0) : 0.8.1
   native-run                             : 0.3.0

System:

   ios-deploy : 1.9.4
   ios-sim    : 8.0.2
   NodeJS     : v10.16.3 (/usr/local/bin/node)
   npm        : 6.14.4
   OS         : macOS Mojave
   Xcode      : Xcode 11.2.1 Build version 11B500

Does anybody have an idea what could cause the issue?
I’m about to release an app in the next couple of days/weeks.

Thank you so much in advance!

Solved.

The deprecataion message comes from the Cordova PayPal plugin: com.paypal.cordova.mobilesdk

Hi,

As mentioned here https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation, I have updated cordova-ios to 5.1.1 latest version and updated all my Cordova plugins. Still, I got the same warning message from the Apple side. Do you have any idea, which plugin throws the deprecation message?

updated plugins list

call-number 0.0.2 “Cordova Call Number Plugin”
cordova-android-play-services-gradle-release 4.0.0 “cordova-android-play-services-gradle-release”
cordova-plugin-app-version 0.1.9 “AppVersion”
cordova-plugin-background-mode 0.7.3 “BackgroundMode”
cordova-plugin-badge 0.8.8 “Badge”
cordova-plugin-camera 4.1.0 “Camera”
cordova-plugin-device 2.0.3 “Device”
cordova-plugin-email-composer 0.9.2 “EmailComposer”
cordova-plugin-file 6.0.2 “File”
cordova-plugin-file-opener2 2.2.1 “File Opener2”
cordova-plugin-file-transfer 1.7.1 “File Transfer”
cordova-plugin-firebase 2.0.5 “Google Firebase Plugin”
cordova-plugin-globalization 1.11.0 “Globalization”
cordova-plugin-inappbrowser 3.2.0 “InAppBrowser”
cordova-plugin-ionic 5.4.6 “cordova-plugin-ionic”
cordova-plugin-ionic-keyboard 2.1.3 “cordova-plugin-ionic-keyboard”
cordova-plugin-ionic-webview 4.1.3 “cordova-plugin-ionic-webview”
cordova-plugin-local-notification 0.9.0-beta.2 “LocalNotification”
cordova-plugin-mauron85-background-geolocation 3.0.3 “CDVBackgroundGeolocation”
cordova-plugin-network-information 2.0.2 “Network Information”
cordova-plugin-safariviewcontroller 1.6.0 “SafariViewController”
cordova-plugin-splashscreen 5.0.3 “Splashscreen”
cordova-plugin-statusbar 2.4.3 “StatusBar”
cordova-plugin-touch-id 3.3.1 “Touch ID”
cordova-plugin-whitelist 1.3.4 “Whitelist”
cordova-sqlite-storage 3.4.1 “Cordova sqlite storage plugin - cordova-sqlite-storage plugin version”

config.xml

    <access origin="http://localhost:8080/*" />
    <allow-navigation href="http://localhost:8080/*" />
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="WKWebViewOnly" value="true" />

Ionic Info:

Ionic:

Ionic CLI : 6.3.0 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : @ionic/angular 4.11.4
@angular-devkit/build-angular : 0.803.21
@angular-devkit/schematics : 8.3.0
@angular/cli : 8.3.0
@ionic/angular-toolkit : 2.0.0

Cordova:

Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.1.0, ios 5.1.0
Cordova Plugins : cordova-plugin-ionic 5.4.6, cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.1.3, (and 20 other plugins)

Utility:

cordova-res (update available: 0.11.0) : 0.6.0
native-run (update available: 0.3.0) : 0.2.8

System:

Android SDK Tools : 26.1.1 (/Users/sys-user/Library/Android/sdk)
ios-deploy : 1.9.4
ios-sim : 8.0.2
NodeJS : v10.16.1 (/usr/local/bin/node)
npm : 6.9.0
OS : macOS Catalina
Xcode : Xcode 11.2.1 Build version 11B500

Unfortunately I can’t tell which of your plugins is responsible for the deprecation message.

My best bet would be one of the “non-Ionic” or even deprecated plugins you’re using.

What I did was:

  1. Do a research if one of your plugins is referencing to UiWebView.
  2. Check the plugin’s repositories and check the latest updates (plugins which haven’t been updated for three years probably won’t have a fix for the UiWebView.)
  3. Create a new Ionic app and install the plugins you have used one by one (or maybe five at once), submit them and identify which is causing the issue.

I know it’s annoying and takes time, but I fear there’s no quicker way.

Good luck!

@keber Can you please tell how it solved I used Cordova PayPal plugin: com.paypal.cordova.mobilesdk and I am getting this warning and can’t upload build as well to iTunes.

Unfortunately the Cordova PayPal plugin is deprecated, therefore don’t expect a fix.
Currently there’s no solution other than switching to a different payment provider such as BrainTree (which supports PayPal) or Stripe.

1 Like

BrainTree cordova plugin also outdated and not active, I will never prefer ionic when there is payment integration in app.

Oh, that doesn’t sound good. I didn’t try BrainTree yet but it’s praised as a working solution (at least in the Ionic docs). Let’s hope there are updates very soon!
As of December 2020, we can’t even update applications using the deprecated UiWebView.

Does Cordova razorpay plugin causes the same deprecation issue?

I don’t know this plugin, sorry.
Try to remove it and see if the deprecation issue disappears or try to search the source code.

Thanks for the reply… I found out that… this plugin dose not cause UIWebView deprecation warning.

This is my cordova plugin list with its version. can you please help me to find the UIWebView using plugin. I am trying to solve from last 3 days but not getting success. Thanks in advance
“cordova-admob-sdk”: “^0.24.1”,
“cordova-android”: “^8.1.0”,
“cordova-ios”: “^5.1.1”,
“cordova-plugin-admob-free”: “^0.27.0”,
“cordova-plugin-appavailability”: “^0.4.2”,
“cordova-plugin-apprate”: “^1.5.0”,
“cordova-plugin-dialogs”: “^2.0.2”,
“cordova-plugin-geolocation”: “^4.0.2”,
“cordova-plugin-inappbrowser”: “^4.0.0”,
“cordova-plugin-ionic-webview”: “^5.0.0”,
“cordova-plugin-market”: “^1.2.0”,
“cordova-plugin-nativestorage”: “^2.3.2”,
“cordova-plugin-network-information”: “^2.0.2”,
“cordova-plugin-wkwebview-engine”: “^1.2.1”,
“cordova-plugin-x-socialsharing”: “^5.6.8”

In case you still need help, cordova-plugin-firebase 2.0.5 is the issue in here, but it’s also the latest plugin.
I don’t know what to do.