From ebb6978d0104b287eafdd3e8d6e07bd99ef4a34c Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Wed, 17 Dec 2025 06:35:36 -0800 Subject: [PATCH] Fix binary FormData uploads on Android Summary: https://github.com/facebook/react-native/pull/54804 was a late pick into 0.83 following RC feedback, but was insufficiently tested. In https://github.com/facebook/react-native/issues/54881, users report failing requests attributed to this code path when performing image uploads. Functionally revert this change, as this breaks runtime behaviour. Changelog: [Internal] Changelog (0.83): [Android][Fixed] - Fix Network error that could occur for `FormData` uploads with binary data Differential Revision: D89373824 --- .../modules/network/ProgressRequestBody.kt | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt index f935b7309b86..c5eb0b9a054e 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt @@ -23,10 +23,6 @@ internal class ProgressRequestBody( ) : RequestBody() { private var contentLength = 0L - companion object { - private const val MAX_BODY_PREVIEW_SIZE = 1024 * 1024 // 1MB - } - override fun contentType(): MediaType? { return requestBody.contentType() } @@ -84,18 +80,7 @@ internal class ProgressRequestBody( } fun getBodyPreview(): String { - return try { - val buffer = okio.Buffer() - requestBody.writeTo(buffer) - val size = buffer.size() - if (size <= MAX_BODY_PREVIEW_SIZE) { - buffer.readUtf8() - } else { - buffer.readUtf8(MAX_BODY_PREVIEW_SIZE.toLong()) + - "\n... [truncated, showing $MAX_BODY_PREVIEW_SIZE of $size bytes]" - } - } catch (e: Exception) { - "" - } + // TODO: Safely implement request body previews + return "[Preview unavailable]" } }