effector / effector/farfetched

createJsonQuery returns null result in React Native 0.81 (New Architecture) while network request succeeds

Open
#571 1 comment 0 reactions 0 assignees View on GitHub
needs triage scope:react-native
Dominant language
TypeScript
Stars
221
Forks
36
PR merge metrics
No merged PRs in 30d

Description

**Description:**
After upgrading to React Native 0.81.5 (which includes React 19 and uses the new C++ Networking stack via JSI), all queries created via createJsonQuery return null as the result, even though the underlying network request is successful (Status 200) and contains a valid JSON body.

**Environment:**
React Native: 0.81.5

React: 19.1.0

Farfetched: 0.14.1

Architecture: New Architecture (RCTNewArchEnabled=true)

Platform: iOS (Simulator/Device)

**Steps to Reproduce:**
Create a query using createJsonQuery.

Execute the query against a GraphQL/JSON endpoint.

Observe the result in contract.isData or mapData.

**Observed Behavior:**
The network request is visible in Reactotron or Flipper with Status 200 and a correct JSON body.

Inside createJsonQuery, the raw result passed to contract.isData is null.

The validate function receives null.

Error logs show: Response was considered as invalid against a given contract.

**Root Cause Analysis:**
It appears that Farfetched's internal response parsing (specifically handling of response.json()) fails to consume the native ReadableStream provided by the new C++ networking layer in RN 0.81.

Even when using custom converters like:

TypeScript

converters: [
{
isContentType: (type) => type.includes('json'),
parse: (res) => res.text().then((text) => JSON.parse(text)),
},
]
The result remains null, suggesting the response body is either pre-consumed or incorrectly handled by the internal fetch wrapper in the new architecture.

**Attempted Fixes:**
Upgraded web-streams-polyfill to v4.

Removed all legacy fetch/blob polyfills (react-native-polyfill-globals, etc.).

Set credentials: 'include' and 'omit'.

Explicitly set Accept-Encoding: identity to bypass GZIP issues.

**Expected Behavior:**
The query should correctly parse the JSON body from the native fetch response and pass it to the contract/mapData functions.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.