Repository navigation
The published types reference src/types/globals.d.ts, whose globals conflict with TypeScript's DOM library under skipLibCheck: false #59649
Description
Description
types_generated/index.d.ts, the declaration file the package's exports name for react-native, starts with /// <reference path="../src/types/globals.d.ts" />. That file (globals.d.ts) declares its own fetch, Headers, Request, Response, FormData, XMLHttpRequest, URL, URLSearchParams, WebSocket, Blob, File, FileReader, AbortController, AbortSignal and timers as globals, and they differ from the declarations TypeScript's lib.dom.d.ts makes of the same names. So a project that type-checks its dependencies' declarations (skipLibCheck: false) and includes the DOM library, as a project sharing code with the web does, gets 69 errors in globals.d.ts from a plain import {View} from 'react-native'.
The generated declarations themselves import the Blob, FormData and ErrorUtils types they use by path, so the reference only adds these globals.
Steps to reproduce
- Clone https://github.com/YevheniiKotyrlo/react-native-typescript-declarations and run
yarn installinReproducerApp. It runsreact-native@0.89.0-nightly-20261029-25b05acd7with TypeScript 7.0.2 and@types/react19.3.0. - Run
yarn check:dom. It type-checksdeclarations/import-react-native.ts, which isimport {View} from 'react-native', withstrict: true,skipLibCheck: falseandlib: ["ES2024", "DOM", "DOM.Iterable"].
Expected: no errors from react-native's declarations.
Seen: 72 errors, 69 of them from the globals in src/types/globals.d.ts (TS2300, TS2403, TS2687, TS2717) and three from types_generated itself, which I reported in #59647. 0.88.1 prints the same 72.
React Native Version
0.88.1, and 0.89.0-nightly-20261029-25b05acd7
Affected Platforms
Other (please specify)
Output of npx @react-native-community/cli info
System:
OS: Windows 11 10.0.26300
Binaries:
Node:
version: 26.12.1
Yarn:
version: 1.22.22
npmPackages:
"@react-native-community/cli":
installed: 20.2.0
wanted: 20.2.0
react:
installed: 19.3.0
wanted: 19.3.0
react-native:
installed: 0.89.0-nightly-20261029-25b05acd7
wanted: 0.89.0-nightly-20261029-25b05acd7
The defect is in the published TypeScript declarations, so it shows on every platform; the reproducer only runs tsc.
Stacktrace or Logs
The first errors of yarn check:dom, cut at 200 characters:
node_modules/react-native/src/types/globals.d.ts(218,8): error TS2300: Duplicate identifier 'EndingType'.
node_modules/react-native/src/types/globals.d.ts(219,8): error TS2300: Duplicate identifier 'BlobPart'.
node_modules/react-native/src/types/globals.d.ts(220,8): error TS2300: Duplicate identifier 'BufferSource'.
node_modules/react-native/src/types/globals.d.ts(238,7): error TS2403: Subsequent variable declarations must have the same type. Variable 'Blob' must be of type '{ new (blobParts?: BlobPart[] | undef
node_modules/react-native/src/types/globals.d.ts(252,7): error TS2403: Subsequent variable declarations must have the same type. Variable 'File' must be of type '{ new (fileBits: BlobPart[], fileName
node_modules/react-native/src/types/globals.d.ts(273,9): error TS2300: Duplicate identifier 'FormData'.
node_modules/react-native/src/types/globals.d.ts(338,5): error TS2717: Subsequent property declarations must have the same type. Property 'body' must be of type 'BodyInit | null | undefined', but her
node_modules/react-native/src/types/globals.d.ts(347,5): error TS2717: Subsequent property declarations must have the same type. Property 'signal' must be of type 'AbortSignal | null | undefined', bu
node_modules/react-native/src/types/globals.d.ts(357,14): error TS2717: Subsequent property declarations must have the same type. Property 'signal' must be of type 'AbortSignal', but here has type 'A
node_modules/react-native/src/types/globals.d.ts(361,7): error TS2403: Subsequent variable declarations must have the same type. Variable 'Request' must be of type '{ new (input: URL | RequestInfo, i
node_modules/react-native/src/types/globals.d.ts(366,8): error TS2300: Duplicate identifier 'RequestInfo'.
node_modules/react-native/src/types/globals.d.ts(385,7): error TS2403: Subsequent variable declarations must have the same type. Variable 'Response' must be of type '{ new (body?: BodyInit | null | u
node_modules/react-native/src/types/globals.d.ts(465,5): error TS2717: Subsequent property declarations must have the same type. Property 'abort' must be of type 'ProgressEvent<XMLHttpRequestEventTar
node_modules/react-native/src/types/globals.d.ts(466,5): error TS2717: Subsequent property declarations must have the same type. Property 'error' must be of type 'ProgressEvent<XMLHttpRequestEventTar
MANDATORY Reproducer
https://github.com/YevheniiKotyrlo/react-native-typescript-declarations
Screenshots and Videos
None: the failure is the type checker's output above.
Activity
Rishabhmk25 commentedon Oct 30, 2026
Hey, I'd like to pick this up.
I reproduced the 69 errors. The cause is the /// to globals.d.ts at the top of index.d.ts (it gets copied from index.js.flow). Taking that line out fixes the DOM case, but apps without the DOM lib would lose fetch, URL, timers, etc.
I tried keeping the globals behind a
react-native-globalsexport condition that @react-native/typescript-config turns on. With that, the DOM project goes from 72 errors to 3 (the 3 are #59647), and apps on the updated config are unchanged. The downside is that apps with their own tsconfig, or ones that upgrade react-native without the config, would lose the globals, so it's a breaking change.Does that trade-off work for you, or would you rather I rework globals.d.ts so it merges with lib.dom instead? I can open a PR either way.
YevheniiKotyrlo commentedon Oct 30, 2026
This is the patch I apply to the published 0.88.0 package until a fix lands:
index.d.tsreferences a globals file that declares only what no TypeScript library declares, so the DOM library,@types/nodeandbun-typeskeep their ownfetch,URL,Bloband timers.