1

My last deployment of my application to apple store was on February 18, 2020. I also got a warning that time about the depracation but I ignored it since they still allowed it that time. Now, I am uploading again in Apple Store (September 25, 2020) and I got warning again and this time they are already blocking. So now I just need help with the following:

  1. How do I know which packages are using the depracated UIWebView?
  2. What do I do with those packages that are using the UIWebView?

Here are some information:

Email message:

ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.

react-native info:

System:
    OS: macOS 10.15.6
    CPU: (8) x64 Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz
    Memory: 91.77 MB / 8.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.10.0 - ~/.nvm/versions/node/v12.10.0/bin/node
    Yarn: 1.21.1 - /usr/local/bin/yarn
    npm: 6.10.3 - ~/.nvm/versions/node/v12.10.0/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.7, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
  IDEs:
    Android Studio: 3.6 AI-192.7142.36.36.6392135
    Xcode: 11.7/11E801a - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native: 0.61.5 => 0.61.5

package.json

{
  "name": "GMobileApp",
  "version": "0.0.1",
  "private": true,
  "rnpm": {
    "assets": [
      "./src/assets/fonts/"
    ]
  },
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-community/art": "^1.1.2",
    "@react-native-community/async-storage": "^1.7.1",
    "@react-native-community/geolocation": "^2.0.2",
    "@react-native-community/netinfo": "^5.3.3",
    "@react-native-community/push-notification-ios": "^1.0.3",
    "@react-native-firebase/admob": "^6.2.0",
    "@react-native-firebase/app": "^6.2.0",
    "@react-native-firebase/crashlytics": "^6.2.0",
    "@react-native-firebase/messaging": "^6.2.0",
    "@segment/analytics-react-native": "^1.1.0",
    "axios": "^0.19.0",
    "babel-runtime": "^6.26.0",
    "events": "^3.0.0",
    "moment": "^2.24.0",
    "react": "16.9.0",
    "react-native": "0.61.5",
    "react-native-android-keyboard-adjust": "^1.2.0",
    "react-native-animated-linear-gradient": "^1.2.0",
    "react-native-device-info": "^5.4.0",
    "react-native-elements": "^1.2.7",
    "react-native-fbsdk": "^1.1.1",
    "react-native-gesture-handler": "^1.5.2",
    "react-native-gifted-chat": "^0.12.0",
    "react-native-indicator": "^1.2.0",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-location": "^2.5.0",
    "react-native-map-link": "^2.7.0",
    "react-native-maps": "0.26.1",
    "react-native-modal-datetime-picker": "^7.6.1",
    "react-native-portal": "^1.3.0",
    "react-native-push-notification": "^3.1.9",
    "react-native-reanimated": "^1.4.0",
    "react-native-responsive-dimensions": "^3.0.0",
    "react-native-responsive-screen": "^1.3.0",
    "react-native-screens": "^2.0.0-alpha.15",
    "react-native-simple-toast": "^1.0.0",
    "react-native-splash-screen": "^3.2.0",
    "react-native-svg": "^9.13.3",
    "react-native-vector-icons": "^6.6.0",
    "react-navigation": "^4.0.10",
    "react-navigation-drawer": "^2.3.3",
    "react-navigation-stack": "^1.10.3",
    "react-navigation-tabs": "^2.6.0",
    "react-navigation-transitions": "^1.0.12",
    "react-redux": "^7.1.3",
    "redux": "^4.0.4",
    "redux-logger": "^3.0.6",
    "redux-persist": "^6.0.0",
    "redux-thunk": "^2.3.0",
    "twilio-chat": "^3.3.3"
  },
  "devDependencies": {
    "@babel/core": "^7.6.2",
    "@babel/runtime": "^7.6.2",
    "@react-native-community/eslint-config": "^0.0.5",
    "babel-jest": "^24.9.0",
    "eslint": "^6.5.1",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.56.0"
  },
  "jest": {
    "preset": "react-native"
  }
}
Vince Gonzales
  • 683
  • 1
  • 12
  • 26

1 Answers1

0

You can try searching for UIWebView in node_modules

grep -r UIWebView node_modules/*

or you can try

grep -r RCTWebView node_modules/*

The output will also include comments. So you can ignore it. Below are the output excluding comments.

node_modules/react-native-fbsdk/js/FBShareDialog.js:   * Displays the dialog in a UIWebView within the app.
Binary file node_modules/react-native-gifted-chat/node_modules/react-native-maps/.gradle/4.10.3/taskHistory/taskHistory.bin matches
Binary file node_modules/react-native-maps/.gradle/4.10.3/taskHistory/taskHistory.bin matches

From this I see that below 2 modules could be using UIWebView

  • react-native-gifted-chat
  • react-native-maps

Regarding the 2nd part of your question, you need to upgrade all the dependencies. There are possibility that it will break the code. You may need to update your code to fix those issues.

Sriram
  • 457
  • 6
  • 8
  • Hi Sriram, after knowing which modules uses the UIWebView, what should I do about it? Do I just upgrade these modules? – Vince Gonzales Sep 26 '20 at 06:53
  • You need to upgrade all the dependencies. There are possibility that it will break the code. You may need to update your code to fix the issue. Edited answer to add this text. – Sriram Sep 26 '20 at 07:00
  • Hi Sriram, I've already updated all my dependencies following this guide: https://stackoverflow.com/questions/16073603/how-do-i-update-each-dependency-in-package-json-to-the-latest-version. But if I run grep -r UIWebView node_modules/*, I still get output. – Vince Gonzales Sep 26 '20 at 07:29
  • Hi Vince, I checked for the UIWebView and looks like it is part of example used in the module. Try uploading it to App store with the upgraded packages. – Sriram Sep 26 '20 at 12:29