diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
index bad900d..058e864 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.7.3
+
+* Removes two occurrences of the compiler warning: "'RequiresUserActionForMediaPlayback' is deprecated: first deprecated in ios 10.0".
+
 ## 2.7.2
 
 * Fixes an integration test race condition.
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FlutterWebView.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FlutterWebView.m
index 61f1120..5bb81fc 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FlutterWebView.m
+++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FlutterWebView.m
@@ -449,19 +449,14 @@
 }
 
 - (void)clearCache:(FlutterResult)result {
-  if (@available(iOS 9.0, *)) {
-    NSSet *cacheDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
-    WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore];
-    NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
-    [dataStore removeDataOfTypes:cacheDataTypes
-                   modifiedSince:dateFrom
-               completionHandler:^{
-                 result(nil);
-               }];
-  } else {
-    // support for iOS8 tracked in https://github.com/flutter/flutter/issues/27624.
-    NSLog(@"Clearing cache is not supported for Flutter WebViews prior to iOS 9.");
-  }
+  NSSet *cacheDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
+  WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore];
+  NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
+  [dataStore removeDataOfTypes:cacheDataTypes
+                 modifiedSince:dateFrom
+             completionHandler:^{
+               result(nil);
+             }];
 }
 
 - (void)onGetTitle:(FlutterResult)result {
@@ -571,24 +566,20 @@
     case 0:  // require_user_action_for_all_media_types
       if (@available(iOS 10.0, *)) {
         configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeAll;
-      } else if (@available(iOS 9.0, *)) {
-        configuration.requiresUserActionForMediaPlayback = true;
       } else {
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
-        configuration.mediaPlaybackRequiresUserAction = true;
+        configuration.requiresUserActionForMediaPlayback = true;
 #pragma clang diagnostic pop
       }
       break;
     case 1:  // always_allow
       if (@available(iOS 10.0, *)) {
         configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
-      } else if (@available(iOS 9.0, *)) {
-        configuration.requiresUserActionForMediaPlayback = false;
       } else {
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
-        configuration.mediaPlaybackRequiresUserAction = false;
+        configuration.requiresUserActionForMediaPlayback = false;
 #pragma clang diagnostic pop
       }
       break;
@@ -658,11 +649,7 @@
 }
 
 - (void)updateUserAgent:(NSString *)userAgent {
-  if (@available(iOS 9.0, *)) {
-    [_webView setCustomUserAgent:userAgent];
-  } else {
-    NSLog(@"Updating UserAgent is not supported for Flutter WebViews prior to iOS 9.");
-  }
+  [_webView setCustomUserAgent:userAgent];
 }
 
 /**
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
index 2a4a7a4..e52d1df 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control.
 repository: https://github.com/flutter/plugins/tree/main/packages/webview_flutter/webview_flutter_wkwebview
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22
-version: 2.7.2
+version: 2.7.3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
