diff --git a/Buildsystem/Testing/UI/VLCTestMenu.swift b/Buildsystem/Testing/UI/VLCTestMenu.swift
index 86caa920f8388762813a41483b5468e50647d036..168d9e730a5172c639ac364ab595fcd41ad06a58 100644
--- a/Buildsystem/Testing/UI/VLCTestMenu.swift
+++ b/Buildsystem/Testing/UI/VLCTestMenu.swift
@@ -78,6 +78,5 @@ class VLCTestMenu: XCTestCase {
         helper.tapTabBarItem(VLCAccessibilityIdentifier.settings)
         app.navigationBars.buttons[VLCAccessibilityIdentifier.about].tap()
         XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.done])
-        XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.contribute])
     }
 }
diff --git a/Sources/App/iOS/main.m b/Sources/App/iOS/main.m
index 3bee5576cbc50fd1a9a48523e729822c0b091df6..59e5092e4a06552bce56daf444d92fffc2d8f189 100644
--- a/Sources/App/iOS/main.m
+++ b/Sources/App/iOS/main.m
@@ -17,6 +17,11 @@
 int main(int argc, char *argv[])
 {
     @autoreleasepool {
-        return UIApplicationMain(argc, argv, nil, NSStringFromClass([VLCAppDelegate class]));
+        // Avoid launching the app during testing.
+        if (NSClassFromString(@"XCTestCase") != nil) {
+            return UIApplicationMain(argc, argv, nil, nil);
+        } else {
+            return UIApplicationMain(argc, argv, nil, NSStringFromClass([VLCAppDelegate class]));
+        }
     }
 }
diff --git a/Buildsystem/Testing/UI/Helpers/VLCAccessibilityIdentifier.swift b/Sources/Helpers/VLCAccessibilityIdentifier.swift
similarity index 100%
rename from Buildsystem/Testing/UI/Helpers/VLCAccessibilityIdentifier.swift
rename to Sources/Helpers/VLCAccessibilityIdentifier.swift
diff --git a/VLC.xcodeproj/project.pbxproj b/VLC.xcodeproj/project.pbxproj
index 4f743280f4f004331d3647178a63a614cc99cd41..d16cc9dc8b6233b42010fd251e10fa71c18c0ac6 100644
--- a/VLC.xcodeproj/project.pbxproj
+++ b/VLC.xcodeproj/project.pbxproj
@@ -1899,6 +1899,7 @@
 			isa = PBXGroup;
 			children = (
 				419A2C651F37A4B70069D224 /* VLCStringsForLocalization.m */,
+				8DD6516E208C89BC0052EE68 /* VLCAccessibilityIdentifier.swift */,
 				4152F1611FEF19BD00F1908B /* KeychainCoordinator.swift */,
 				7D0C209A28C89F5400CCFFEF /* Network */,
 				7D8986D7278B0C30005396AA /* Thumbnail Cache */,
@@ -3321,7 +3322,6 @@
 		CAC0AFE720CF8A6900EDB035 /* Helpers */ = {
 			isa = PBXGroup;
 			children = (
-				8DD6516E208C89BC0052EE68 /* VLCAccessibilityIdentifier.swift */,
 				CAF76D9320709C9500E2AD7B /* XCUIElement+Helpers.swift */,
 				CAD925802075613100F88496 /* SnapshotHelper.swift */,
 				CAA0B0F620726A0E00B9274E /* TestHelper.swift */,
@@ -3515,7 +3515,7 @@
 				CLASSPREFIX = VLC;
 				DefaultBuildSystemTypeForWorkspace = Original;
 				LastSwiftUpdateCheck = 1500;
-				LastUpgradeCheck = 1200;
+				LastUpgradeCheck = 1620;
 				ORGANIZATIONNAME = VideoLAN;
 				TargetAttributes = {
 					4133CADB22CCB0620047A4EC = {
@@ -3634,10 +3634,10 @@
 			targets = (
 				7D94FCDA16DE7D1000F2623B /* VLC-iOS */,
 				7D13293C1BA1F10100BE647E /* VLC-tvOS */,
+				7D50C5D52BBD20DF00B9F1A0 /* VLC-visionOS */,
 				41B0BC851F73ED7D0063BA26 /* VLC-iOSUITests */,
-				41533C90211338D500EC3ABA /* VLC-iOSTests */,
 				4133CADB22CCB0620047A4EC /* VLC-iOS-Screenshots */,
-				7D50C5D52BBD20DF00B9F1A0 /* VLC-visionOS */,
+				41533C90211338D500EC3ABA /* VLC-iOSTests */,
 			);
 		};
 /* End PBXProject section */
@@ -5123,7 +5123,7 @@
 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				INFOPLIST_FILE = Buildsystem/Testing/Unit/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 11.4;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -5166,7 +5166,7 @@
 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				INFOPLIST_FILE = Buildsystem/Testing/Unit/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 11.4;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -5208,7 +5208,7 @@
 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				INFOPLIST_FILE = Buildsystem/Testing/Unit/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 11.4;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -5229,7 +5229,6 @@
 		41B0BC8D1F73ED7D0063BA26 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CLANG_ANALYZER_NONNULL = YES;
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_ENABLE_MODULES = YES;
@@ -5262,7 +5261,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -5282,7 +5281,6 @@
 		41B0BC8E1F73ED7D0063BA26 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CLANG_ANALYZER_NONNULL = YES;
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_ENABLE_MODULES = YES;
@@ -5316,7 +5314,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -5337,7 +5335,6 @@
 		41B0BC8F1F73ED7D0063BA26 /* Distribution */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CLANG_ANALYZER_NONNULL = YES;
 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 				CLANG_ENABLE_MODULES = YES;
@@ -5371,7 +5368,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -5749,7 +5746,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_MODULE_NAME = VLC;
@@ -5796,7 +5793,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_MODULE_NAME = VLC;
@@ -5945,7 +5942,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_MODULE_NAME = VLC;
diff --git a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Screenshots.xcscheme b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Screenshots.xcscheme
index 1eb5789aa22def0cd72db1ec342d4607670eb69e..a180085b725bb1824abb126ff1e5e187b01cd539 100644
--- a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Screenshots.xcscheme
+++ b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Screenshots.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1200"
+   LastUpgradeVersion = "1620"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Tests.xcscheme b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Tests.xcscheme
index bc376ffeb70fc2074ddc791d5fdd08de9e18580e..a62a24bdcc0e5c6d4ebba1a4939ec55b93f40f46 100644
--- a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Tests.xcscheme
+++ b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-Tests.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1200"
+   LastUpgradeVersion = "1620"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
@@ -51,6 +51,15 @@
       savedToolIdentifier = ""
       useCustomWorkingDirectory = "NO"
       debugDocumentVersioning = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "7D94FCDA16DE7D1000F2623B"
+            BuildableName = "VLC for iOS.app"
+            BlueprintName = "VLC-iOS"
+            ReferencedContainer = "container:VLC.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
    </ProfileAction>
    <AnalyzeAction
       buildConfiguration = "Debug">
diff --git a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-UITests.xcscheme b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-UITests.xcscheme
index c874063023dc94ec3e9605c8186f581ce0048744..ebda1aedf76d2b3e0d7e1d59107f8639464c4dbb 100644
--- a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-UITests.xcscheme
+++ b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS-UITests.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1200"
+   LastUpgradeVersion = "1620"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS.xcscheme b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS.xcscheme
index cbe0d72eba77e46a44b4d777dc8d02e452bd67ee..b8947e0e7a5e2a9fbeef68f7f92a0c934734e958 100644
--- a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS.xcscheme
+++ b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1200"
+   LastUpgradeVersion = "1620"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-tvOS.xcscheme b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-tvOS.xcscheme
index 9db00bc6ac154263218f2b2ef65b98c4b8970a21..1153195a2f589e9ce2be6bf15820ed8f8b1b9424 100644
--- a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-tvOS.xcscheme
+++ b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-tvOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1200"
+   LastUpgradeVersion = "1620"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
diff --git a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-visionOS.xcscheme b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-visionOS.xcscheme
index 7db1c2ab1d3b20836d3339e478be0c219da05f59..2f91af2ff355be550f9f1a392846330d5bc9dfee 100644
--- a/VLC.xcodeproj/xcshareddata/xcschemes/VLC-visionOS.xcscheme
+++ b/VLC.xcodeproj/xcshareddata/xcschemes/VLC-visionOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1530"
+   LastUpgradeVersion = "1620"
    version = "1.7">
    <BuildAction
       parallelizeBuildables = "YES"