diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt
new file mode 100644
index 000000000..a9c6a92e5
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/CronetEngineBuilderFingerprint.kt
@@ -0,0 +1,11 @@
+package app.revanced.patches.youtube.misc.quic.fingerprints
+
+import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
+import org.jf.dexlib2.AccessFlags
+
+object CronetEngineBuilderFingerprint : MethodFingerprint(
+ returnType = "L",
+ access = AccessFlags.PUBLIC.value,
+ parameters = listOf("Z"),
+ customFingerprint = { it.definingClass == "Lorg/chromium/net/CronetEngine\$Builder;" && it.name == "enableQuic" }
+)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt
new file mode 100644
index 000000000..bd47cb0a3
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/fingerprints/ExperimentalCronetEngineBuilderFingerprint.kt
@@ -0,0 +1,11 @@
+package app.revanced.patches.youtube.misc.quic.fingerprints
+
+import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
+import org.jf.dexlib2.AccessFlags
+
+object ExperimentalCronetEngineBuilderFingerprint : MethodFingerprint(
+ returnType = "L",
+ access = AccessFlags.PUBLIC.value,
+ parameters = listOf("Z"),
+ customFingerprint = { it.definingClass == "Lorg/chromium/net/ExperimentalCronetEngine\$Builder;" && it.name == "enableQuic" }
+)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/quic/patch/QUICProtocolPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/patch/QUICProtocolPatch.kt
new file mode 100644
index 000000000..d19424925
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/quic/patch/QUICProtocolPatch.kt
@@ -0,0 +1,58 @@
+package app.revanced.patches.youtube.misc.quic.patch
+
+import app.revanced.extensions.toErrorResult
+import app.revanced.patcher.annotation.Description
+import app.revanced.patcher.annotation.Name
+import app.revanced.patcher.annotation.Version
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.addInstructions
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.PatchResult
+import app.revanced.patcher.patch.PatchResultSuccess
+import app.revanced.patcher.patch.annotations.DependsOn
+import app.revanced.patcher.patch.annotations.Patch
+import app.revanced.patches.shared.annotation.YouTubeCompatibility
+import app.revanced.patches.youtube.misc.quic.fingerprints.*
+import app.revanced.patches.youtube.misc.settings.resource.patch.SettingsPatch
+import app.revanced.util.integrations.Constants.MISC_PATH
+
+@Patch
+@Name("disable-quic-protocol")
+@Description("Disable CronetEngine's QUIC protocol.")
+@DependsOn([SettingsPatch::class])
+@YouTubeCompatibility
+@Version("0.0.1")
+class QUICProtocolPatch : BytecodePatch(
+ listOf(
+ CronetEngineBuilderFingerprint,
+ ExperimentalCronetEngineBuilderFingerprint
+ )
+) {
+ override fun execute(context: BytecodeContext): PatchResult {
+
+ arrayOf(
+ CronetEngineBuilderFingerprint,
+ ExperimentalCronetEngineBuilderFingerprint
+ ).forEach {
+ it.result?.mutableMethod?.addInstructions(
+ 0, """
+ invoke-static {p1}, $MISC_PATH/QUICProtocolPatch;->disableQUICProtocol(Z)Z
+ move-result p1
+ """
+ )?: return it.toErrorResult()
+ }
+
+ /*
+ * Add settings
+ */
+ SettingsPatch.addPreference(
+ arrayOf(
+ "SETTINGS: DISABLE_QUIC_PROTOCOL"
+ )
+ )
+
+ SettingsPatch.updatePatchStatus("disable-quic-protocol")
+
+ return PatchResultSuccess()
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml
index 25dc963f2..a43f5cd14 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -173,6 +173,8 @@ Is it ready to submit?"
Zoom haptic feedback is enabled
Zoom haptic feedback is disabled
Disable zoom haptic feedback
+ "Disable CronetEngine's QUIC protocol"
+ Disable QUIC protocol
The amount of seconds the double press back to exit
Double back timeout
is not installed. Please install it.
@@ -485,6 +487,7 @@ In the app settings, the YouTube version may be marked as v17.28.35"
If you enable this setting, the following features are available:
- Community Posts
- Hide Mix playlist"
+ It is recommended not to use it if your internet speed is not fast enough
"If you enable this setting, the following features are not available:
- Ambient mode"
"Tricks the dpi to change some layouts to tablet layouts.
diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index 9bb389e91..82631e040 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -377,6 +377,8 @@
SETTINGS: LAYOUT_SWITCH -->
+
@@ -465,6 +467,7 @@
+