diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/updatescreen/UpdateScreenPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/updatescreen/UpdateScreenPatch.kt
new file mode 100644
index 000000000..a98488657
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/updatescreen/UpdateScreenPatch.kt
@@ -0,0 +1,79 @@
+package app.revanced.patches.youtube.misc.updatescreen
+
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.CompatiblePackage
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patcher.util.smali.ExternalLabel
+import app.revanced.patches.youtube.misc.updatescreen.fingerprints.AppBlockingCheckResultToStringFingerprint
+import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH
+import app.revanced.patches.youtube.utils.settings.SettingsPatch
+import app.revanced.util.exception
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
+import com.android.tools.smali.dexlib2.util.MethodUtil
+
+@Patch(
+ name = "Disable update screen",
+ description = "Adds an option to disable the \"Update your app\" screen that appears when using an outdated client.",
+ dependencies = [SettingsPatch::class],
+ compatiblePackages = [
+ CompatiblePackage(
+ "com.google.android.youtube",
+ [
+ "18.25.40",
+ "18.27.36",
+ "18.29.38",
+ "18.30.37",
+ "18.31.40",
+ "18.32.39",
+ "18.33.40",
+ "18.34.38",
+ "18.35.36",
+ "18.36.39",
+ "18.37.36",
+ "18.38.44",
+ "18.39.41",
+ "18.40.34",
+ "18.41.39",
+ "18.42.41",
+ "18.43.45",
+ "18.44.41",
+ "18.45.43"
+ ]
+ )
+ ]
+)
+@Suppress("unused")
+object UpdateScreenPatch : BytecodePatch(
+ setOf(AppBlockingCheckResultToStringFingerprint)
+) {
+ private const val INTEGRATIONS_CLASS_DESCRIPTOR =
+ "$MISC_PATH/UpdateScreenPatch;"
+
+ override fun execute(context: BytecodeContext) {
+ AppBlockingCheckResultToStringFingerprint.result?.mutableClass?.methods?.first { method ->
+ MethodUtil.isConstructor(method)
+ && method.parameters == listOf("Landroid/content/Intent;", "Z")
+ }?.addInstructions(
+ 1, """
+ invoke-static {}, $INTEGRATIONS_CLASS_DESCRIPTOR->disableUpdateScreen(Landroid/content/Intent;)Landroid/content/Intent;
+ move-result-object p1
+ """
+ ) ?: throw AppBlockingCheckResultToStringFingerprint.exception
+
+ /**
+ * Add settings
+ */
+ SettingsPatch.addPreference(
+ arrayOf(
+ "SETTINGS: DISABLE_UPDATE_SCREEN"
+ )
+ )
+
+ SettingsPatch.updatePatchStatus("Disable update screen")
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/updatescreen/fingerprints/AppBlockingCheckResultToStringFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/updatescreen/fingerprints/AppBlockingCheckResultToStringFingerprint.kt
new file mode 100644
index 000000000..376fac4f7
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/updatescreen/fingerprints/AppBlockingCheckResultToStringFingerprint.kt
@@ -0,0 +1,8 @@
+package app.revanced.patches.youtube.misc.updatescreen.fingerprints
+
+import app.revanced.patcher.fingerprint.MethodFingerprint
+
+object AppBlockingCheckResultToStringFingerprint : MethodFingerprint(
+ returnType = "Ljava/lang/String;",
+ strings = listOf("AppBlockingCheckResult{intent=")
+)
diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml
index 422edc11c..5d22f53b8 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -136,6 +136,8 @@ Note: Disabling the speed overlay restores the 'Slide to seek' behavior of the o
Shorts player is enabled at app startup.
Shorts player is disabled at app startup.
Disable shorts player at app startup
+ Disables the \"Update your app\" screen that appears when using an outdated client.
+ Disable update screen
The amount of seconds the double press back to exit.
Double back timeout
Entering fullscreen when swiping down below the video player is disabled.
diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index ee31bb186..b6189eddd 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -315,6 +315,9 @@
SETTINGS: AMBIENT_MODE_SWITCH -->
+
+
@@ -443,6 +446,7 @@
+