Skip to content

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

@xavi

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions