diff --git a/packages/quick_actions/quick_actions_ios/CHANGELOG.md b/packages/quick_actions/quick_actions_ios/CHANGELOG.md
index e002bd7..31fe438 100644
--- a/packages/quick_actions/quick_actions_ios/CHANGELOG.md
+++ b/packages/quick_actions/quick_actions_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Migrates `RunnerUITests` to Swift.
+
 ## 1.0.1
 
 * Removes custom modulemap file with "Test" submodule and private headers for Swift migration. 
diff --git a/packages/quick_actions/quick_actions_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/quick_actions/quick_actions_ios/example/ios/Runner.xcodeproj/project.pbxproj
index 47360fe..c853a19 100644
--- a/packages/quick_actions/quick_actions_ios/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/packages/quick_actions/quick_actions_ios/example/ios/Runner.xcodeproj/project.pbxproj
@@ -10,13 +10,13 @@
 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 		2632072169FF635893D8EB4D /* libPods-RunnerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 436668746754BEEA28B76E55 /* libPods-RunnerTests.a */; };
 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
-		686BE83025E58CCF00862533 /* RunnerUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 686BE82F25E58CCF00862533 /* RunnerUITests.m */; };
 		6A841C2B6AED5CF8DB2A1894 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C35AD3650AB6BF850E016715 /* libPods-Runner.a */; };
 		978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
 		97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
 		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+		E092A7F628D128EB005C7F67 /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E092A7F528D128EB005C7F67 /* RunnerUITests.swift */; };
 		E0C09C29289C729D00E6977E /* FLTQuickActionsPluginTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C09C28289C729D00E6977E /* FLTQuickActionsPluginTests.m */; };
 		E0C09C32289DBFCA00E6977E /* FLTShortcutStateManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C09C31289DBFCA00E6977E /* FLTShortcutStateManagerTests.m */; };
 /* End PBXBuildFile section */
@@ -60,7 +60,6 @@
 		436668746754BEEA28B76E55 /* libPods-RunnerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RunnerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
 		5278439583922091276A37C9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
 		686BE82D25E58CCF00862533 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		686BE82F25E58CCF00862533 /* RunnerUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerUITests.m; sourceTree = "<group>"; };
 		686BE83125E58CCF00862533 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
 		7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@@ -76,6 +75,7 @@
 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		9D27FE1F0F21D4D47DDA16DE /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
 		C35AD3650AB6BF850E016715 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		E092A7F528D128EB005C7F67 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = "<group>"; };
 		E0C09C28289C729D00E6977E /* FLTQuickActionsPluginTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLTQuickActionsPluginTests.m; sourceTree = "<group>"; };
 		E0C09C31289DBFCA00E6977E /* FLTShortcutStateManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLTShortcutStateManagerTests.m; sourceTree = "<group>"; };
 		F0609304FBCAEC2289164BD5 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
@@ -121,8 +121,8 @@
 		686BE82E25E58CCF00862533 /* RunnerUITests */ = {
 			isa = PBXGroup;
 			children = (
-				686BE82F25E58CCF00862533 /* RunnerUITests.m */,
 				686BE83125E58CCF00862533 /* Info.plist */,
+				E092A7F528D128EB005C7F67 /* RunnerUITests.swift */,
 			);
 			path = RunnerUITests;
 			sourceTree = "<group>";
@@ -281,6 +281,7 @@
 					};
 					686BE82C25E58CCF00862533 = {
 						CreatedOnToolsVersion = 12.4;
+						LastSwiftMigration = 1330;
 						ProvisioningStyle = Automatic;
 						TestTargetID = 97C146ED1CF9000F007C117D;
 					};
@@ -424,7 +425,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				686BE83025E58CCF00862533 /* RunnerUITests.m in Sources */,
+				E092A7F628D128EB005C7F67 /* RunnerUITests.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -512,6 +513,7 @@
 			buildSettings = {
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_WEAK = YES;
 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
@@ -529,6 +531,8 @@
 				MTL_FAST_MATH = YES;
 				PRODUCT_BUNDLE_IDENTIFIER = com.google.RunnerUITests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
 				TEST_TARGET_NAME = Runner;
 			};
@@ -539,6 +543,7 @@
 			buildSettings = {
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_WEAK = YES;
 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
@@ -555,6 +560,7 @@
 				MTL_FAST_MATH = YES;
 				PRODUCT_BUNDLE_IDENTIFIER = com.google.RunnerUITests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
 				TEST_TARGET_NAME = Runner;
 			};
diff --git a/packages/quick_actions/quick_actions_ios/example/ios/RunnerUITests/RunnerUITests.m b/packages/quick_actions/quick_actions_ios/example/ios/RunnerUITests/RunnerUITests.m
deleted file mode 100644
index 0bad57f..0000000
--- a/packages/quick_actions/quick_actions_ios/example/ios/RunnerUITests/RunnerUITests.m
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import <XCTest/XCTest.h>
-#import <os/log.h>
-
-static const int kElementWaitingTime = 30;
-
-@interface RunnerUITests : XCTestCase
-
-@end
-
-@implementation RunnerUITests {
-  XCUIApplication *_exampleApp;
-}
-
-- (void)setUp {
-  [super setUp];
-  self.continueAfterFailure = NO;
-  _exampleApp = [[XCUIApplication alloc] init];
-}
-
-- (void)tearDown {
-  [super tearDown];
-  [_exampleApp terminate];
-  _exampleApp = nil;
-}
-
-- (void)testQuickActionWithFreshStart {
-  XCUIApplication *springboard =
-      [[XCUIApplication alloc] initWithBundleIdentifier:@"com.apple.springboard"];
-  XCUIElement *quickActionsAppIcon = springboard.icons[@"quick_actions_example"];
-  if (![quickActionsAppIcon waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", springboard.debugDescription);
-    XCTFail(@"Failed due to not able to find the example app from springboard with %@ seconds",
-            @(kElementWaitingTime));
-  }
-
-  [quickActionsAppIcon pressForDuration:2];
-  XCUIElement *actionTwo = springboard.buttons[@"Action two"];
-  if (![actionTwo waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", springboard.debugDescription);
-    XCTFail(@"Failed due to not able to find the actionTwo button from springboard with %@ seconds",
-            @(kElementWaitingTime));
-  }
-
-  [actionTwo tap];
-
-  XCUIElement *actionTwoConfirmation = _exampleApp.otherElements[@"action_two"];
-  if (![actionTwoConfirmation waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", springboard.debugDescription);
-    XCTFail(@"Failed due to not able to find the actionTwoConfirmation in the app with %@ seconds",
-            @(kElementWaitingTime));
-  }
-  XCTAssertTrue(actionTwoConfirmation.exists);
-}
-
-- (void)testQuickActionWhenAppIsInBackground {
-  [_exampleApp launch];
-
-  XCUIElement *actionsReady = _exampleApp.otherElements[@"actions ready"];
-  if (![actionsReady waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", _exampleApp.debugDescription);
-    XCTFail(@"Failed due to not able to find the actionsReady in the app with %@ seconds",
-            @(kElementWaitingTime));
-  }
-
-  [[XCUIDevice sharedDevice] pressButton:XCUIDeviceButtonHome];
-
-  XCUIApplication *springboard =
-      [[XCUIApplication alloc] initWithBundleIdentifier:@"com.apple.springboard"];
-  XCUIElement *quickActionsAppIcon = springboard.icons[@"quick_actions_example"];
-  if (![quickActionsAppIcon waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", springboard.debugDescription);
-    XCTFail(@"Failed due to not able to find the example app from springboard with %@ seconds",
-            @(kElementWaitingTime));
-  }
-
-  [quickActionsAppIcon pressForDuration:2];
-  XCUIElement *actionOne = springboard.buttons[@"Action one"];
-  if (![actionOne waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", springboard.debugDescription);
-    XCTFail(@"Failed due to not able to find the actionOne button from springboard with %@ seconds",
-            @(kElementWaitingTime));
-  }
-
-  [actionOne tap];
-
-  XCUIElement *actionOneConfirmation = _exampleApp.otherElements[@"action_one"];
-  if (![actionOneConfirmation waitForExistenceWithTimeout:kElementWaitingTime]) {
-    os_log_error(OS_LOG_DEFAULT, "%@", springboard.debugDescription);
-    XCTFail(@"Failed due to not able to find the actionOneConfirmation in the app with %@ seconds",
-            @(kElementWaitingTime));
-  }
-  XCTAssertTrue(actionOneConfirmation.exists);
-}
-
-@end
diff --git a/packages/quick_actions/quick_actions_ios/example/ios/RunnerUITests/RunnerUITests.swift b/packages/quick_actions/quick_actions_ios/example/ios/RunnerUITests/RunnerUITests.swift
new file mode 100644
index 0000000..a59692e
--- /dev/null
+++ b/packages/quick_actions/quick_actions_ios/example/ios/RunnerUITests/RunnerUITests.swift
@@ -0,0 +1,96 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import XCTest
+
+private let elementWaitingTime: TimeInterval = 30
+
+class RunnerUITests: XCTestCase {
+
+  private var exampleApp: XCUIApplication!
+
+  override func setUp() {
+    super.setUp()
+    self.continueAfterFailure = false
+    exampleApp = XCUIApplication()
+  }
+
+  override func tearDown() {
+    super.tearDown()
+    exampleApp.terminate()
+    exampleApp = nil
+  }
+
+  func testQuickActionWithFreshStart() {
+    let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
+    let quickActionsAppIcon = springboard.icons["quick_actions_example"]
+    if !quickActionsAppIcon.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the example app from springboard with \(elementWaitingTime) seconds. Springboard debug description: \(springboard.debugDescription)"
+      )
+    }
+
+    quickActionsAppIcon.press(forDuration: 2)
+
+    let actionTwo = springboard.buttons["Action two"]
+    if !actionTwo.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the actionTwo button from springboard with \(elementWaitingTime) seconds. Springboard debug description: \(springboard.debugDescription)"
+      )
+    }
+
+    actionTwo.tap()
+
+    let actionTwoConfirmation = exampleApp.otherElements["action_two"]
+    if !actionTwoConfirmation.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the actionTwoConfirmation in the app with \(elementWaitingTime) seconds. Springboard debug description: \(springboard.debugDescription)"
+      )
+    }
+
+    XCTAssert(actionTwoConfirmation.exists)
+  }
+
+  func testQuickActionWhenAppIsInBackground() {
+    exampleApp.launch()
+
+    let actionsReady = exampleApp.otherElements["actions ready"]
+
+    if !actionsReady.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the actionsReady in the app with \(elementWaitingTime) seconds. App debug description: \(exampleApp.debugDescription)"
+      )
+    }
+
+    XCUIDevice.shared.press(.home)
+
+    let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
+    let quickActionsAppIcon = springboard.icons["quick_actions_example"]
+    if !quickActionsAppIcon.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the example app from springboard with \(elementWaitingTime) seconds. Springboard debug description: \(springboard.debugDescription)"
+      )
+    }
+
+    quickActionsAppIcon.press(forDuration: 2)
+
+    let actionOne = springboard.buttons["Action one"]
+    if !actionOne.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the actionOne button from springboard with \(elementWaitingTime) seconds. Springboard debug description: \(springboard.debugDescription)"
+      )
+    }
+
+    actionOne.tap()
+
+    let actionOneConfirmation = exampleApp.otherElements["action_one"]
+    if !actionOneConfirmation.waitForExistence(timeout: elementWaitingTime) {
+      XCTFail(
+        "Failed due to not able to find the actionOneConfirmation in the app with \(elementWaitingTime) seconds. Springboard debug description: \(springboard.debugDescription)"
+      )
+    }
+
+    XCTAssert(actionOneConfirmation.exists)
+  }
+}
