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 https://developer.apple.com/documentation/uikit/uiwebview 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!