Skip to content

response.text() fails with "Unable to resolve data for blob" under concurrent fetch (Hermes, iOS device) #56884

Description

@xavi

Description

Many parallel fetch() calls, each using response.text() via a promise chain, intermittently fail with:

Error: Unable to resolve data for blob: <uuid>

Failures occur on the body read after HTTP succeeds, only when all of the following hold:

  • Release build (not Debug)
  • Physical iOS device (not simulator, or Android)
  • .then() on fetch / response.text() (not async/await for the same flow)

Code snippet

function fetchOne(url) {
  return fetch(url)
    .then(r => {
      if (!r.ok) throw new Error(`HTTP ${r.status}`);
      return r.text(); // ← fails here
    })
    .then(text => JSON.parse(text));
}

const urls = Array.from({length: 30}, (_, i) =>
  `https://dummyjson.com/todos/${(i % 200) + 1}`);

await Promise.all(urls.map(fetchOne)); // repeat burst several times after launch

Environment

  • React Native: 0.85.3
  • Hermes: enabled
  • Device: iPhone 13 mini
  • iOS: 26.4.2

Steps to reproduce

  1. Clone https://github.com/xavi/RnFetchBlobConcurrencyRepro
  2. Connect and unlock a physical iPhone (bug doesn't occur on the simulator).
  3. From the repo root:
npm install
cd ios && bundle install && bundle exec pod install && cd ..
npx react-native run-ios --device --mode Release
  1. Launch app, tap Run burst several times (often 2–5×). Log should show (N blob) with N > 0. With DEFAULT_BURST_COUNT of 30, roughly 1 in 4 bursts on iPhone 13 mini (iOS 26.4.2) — edit src/reproConfig.ts to tune.

React Native Version

0.85.3

Affected Platforms

Runtime - iOS

Output of npx @react-native-community/cli info

System:
  OS: macOS 26.4.1
  CPU: (8) arm64 Apple M2
  Memory: 116.31 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 24.13.1
    path: /Users/xavi/.nvm/versions/node/v24.13.1/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 11.8.0
    path: /Users/xavi/.nvm/versions/node/v24.13.1/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.16.2
    path: /Users/xavi/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.4
      - iOS 26.4
      - macOS 26.4
      - tvOS 26.4
      - visionOS 26.4
      - watchOS 26.4
  Android SDK:
    Android NDK: 27.1.12297006
IDEs:
  Android Studio: 2025.3 AI-253.32098.37.2534.15336583
  Xcode:
    version: 26.4.1/17E202
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 25.0.3
    path: /usr/bin/javac
  Ruby:
    version: 3.1.2
    path: /Users/xavi/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 20.1.0
    wanted: 20.1.0
  react:
    installed: 19.2.3
    wanted: 19.2.3
  react-native:
    installed: 0.85.3
    wanted: 0.85.3
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs

Unable to resolve data for blob: 7B4027AD-B4E0-4D01-AD1E-82D231DB3359

MANDATORY Reproducer

https://github.com/xavi/RnFetchBlobConcurrencyRepro

Screenshots and Videos

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions