Yesterday I was facing an issue when submitting my application to App Store. Not long after my submission, I got an email from Apple with title as you can see in the top of this article. It said that my application has an issue—i.e., ITMS-90809: Deprecated API Usage.
This issue happened because my app uses UIWebView class which is already deprecated. And they suggest developers to use WKWebView instead.
Actually I had been facing this issue since my first submission in early February. But I was too lazy to solve the issue 😬. At that time the issue was just a warning. Apple still accepted our app.
However, this time I couldn’t escape anymore. I ought to solve this issue in order the app to be accepted.
I searched the solutions for this matter in the internet. Actually the solution is pretty obvious. UIWebView must be replaced with WKWebView. The problem is I didn’t remember (or know 😝) which codes that use UIWebView.
Thanks to this thread that gives me some hints. There are possibilities that our dependency modules use UIWebView. To find out which files that contain UIWebView, we can run command
grep -r UIWebView node_modules/* in the root of the project. After executing that command, I got this following:
Most of the words of “UIWebView” which are found are located in comments. But apparently in my case there is one line of code that uses UIWebView. That line of code is from module “react-native-device-info”.
Then I also tried to search it directly in XCode just to double-check. XCode also gave quite similar result.
So, in my case the culprit was the “react-native-device-info” module. I was still using v2 at that time. After reading its documentation in this link, I needed to upgrade it to minimum v3. Then I upgraded it to v3.
Boom! The issue was solved. I then submitted my app to Apple Store and it has been successfully accepted. 😃