If App Store Connect reports “ITMS-90809: Deprecated API Usage” when you upload an app, the app binary or one of its embedded SDKs may still reference an API that Apple has deprecated. A common historical cause is UIWebView. Apple recommends replacing UIWebView with WKWebView.
What ITMS-90809 means
App Store Connect scans the uploaded binary and may flag references to deprecated APIs. The reference does not have to come from your own source code. CocoaPods, Swift Package Manager dependencies, XCFrameworks, analytics SDKs, ad SDKs, or other embedded libraries can trigger the message as well.
Important: If the upload message names a specific deprecated API, use that API name as the starting point for your investigation. ITMS-90809 is a broad validation message rather than a single-cause error.
Typical situations
- Your app still uses
UIWebView. - A third-party SDK still references
UIWebView. - An old CocoaPod or XCFramework is still embedded.
- The source code was updated but an old build product remains in the archive.
- A storyboard or Objective-C file still references a deprecated class.
How to identify the source
1. Search your source code
Use Xcode’s Find Navigator to search for the API named in the App Store Connect message. For UIWebView, you can also search from Terminal.
grep -R "UIWebView" . --exclude-dir=.git --exclude-dir=Pods
2. Search dependencies
If your own code is clean, search Pods, packages, and embedded frameworks.
grep -R "UIWebView" Pods . 2>/dev/null
3. Inspect the archived binaries
If source searches do not reveal the problem, inspect the actual app and framework binaries inside the archive.
strings MyApp.app/MyApp | grep UIWebView
strings MyApp.app/Frameworks/*.framework/* | grep UIWebView
Fix 1: Replace UIWebView with WKWebView
If your code uses UIWebView, migrate to WebKit’s WKWebView.
import WebKit
let webView = WKWebView(frame: .zero)
let request = URLRequest(url: URL(string: "https://example.com")!)
webView.load(request)
WKWebView is not a drop-in replacement for UIWebView. Navigation callbacks, JavaScript messaging, cookies, authentication, and file uploads may require code changes.
Fix 2: Update outdated SDKs and libraries
If the deprecated API comes from a dependency, update it to a current version.
pod repo update
pod outdated
pod update
To update only one pod, use pod update LibraryName. For Swift Package Manager, update the package from Xcode’s Package Dependencies settings.
Fix 3: Replace abandoned dependencies
If the newest release of a dependency still contains deprecated APIs, the project may no longer be maintained. Consider replacing it with an actively maintained SDK or an Apple framework that provides the same feature.
Fix 4: Remove stale build artifacts
After updating dependencies, clear DerivedData, clean the build folder, and create a brand-new archive.
rm -rf ~/Library/Developer/Xcode/DerivedData/*
Fix 5: Check embedded frameworks
Review Build Phases and Frameworks, Libraries, and Embedded Content. Remove frameworks that are no longer used. If your project contains app extensions, verify each extension target because an outdated SDK may remain there even when the main app target is clean.
Important notes
- A deprecated API reference may exist inside a compiled static library or framework even if it is absent from your source files.
- Do not try to hide the warning by modifying binary strings. Update or replace the code that causes the reference.
- When migrating from
UIWebViewtoWKWebView, test cookies, sign-in flows, JavaScript bridges, navigation behavior, and file uploads. - App Store validation rules can change, so always prioritize the exact message shown for your current upload.
Summary
ITMS-90809 means that App Store Connect detected a deprecated API in your app or one of its dependencies. Start with the API name shown in the message, search your code and dependencies, and then inspect the archived frameworks if necessary. Replace UIWebView with WKWebView, update outdated SDKs, remove stale frameworks, rebuild from a clean state, and upload a new archive.
