Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56772
Upgrades to TypeScript 6.0.3 and updates `typescript-eslint/*` for TS 6.0 compatibility across `react-native` and `metro`.
#### Motivation
TypeScript 6.0 (Mar 2026) will resolve https://github.com/facebook/react-native/issues/53565. Before updating in the React Native CLI template, align in RN and Metro source for consistency.
This is an internal change since:
- This upgrade only applies to TS analysis of these repos' source code.
- Edits to `react-native/typescript-config/tsconfig.json` (which *is* distributed) maintain backwards compatibility.
#### Changes
**react-native**
- Bump `typescript` from `^5.8.3` to `^6.0.3`
- Bump `typescript-eslint/*` from `^8.24.0` to `^8.59.2`
- Replace deprecated `moduleResolution: "node"` with `"node16"` and `target: "es5"` with `"es2015"` in codegen-typescript-test
- Add explicit `types: ["jest", "node"]` where needed (TS 6.0 defaults `types` to `[]`)
- Set `strict: false` in configs that only enable specific strict flags (TS 6.0 defaults `strict` to `true`)
- Update `ModuleResolutionKind.NodeJs` to `Node16` in build config
**metro**
- Bump `typescript` from `5.8.3` to `^6.0.3`
- Bump `typescript-eslint/*` from `^8.36.0` to `^8.59.2`
- No tsconfig changes needed (`tsconfig/node20` preset is already TS 6.0 compatible)
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D104658690
fbshipit-source-id: 9a2feeb257d5783431941a911b17065fcd0389a5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56450
Changelog: [internal]
Update the `stripPrivateProperties` Flow transform to also remove
computed properties and methods from type definitions. These are
implementation details that should not be part of the public API.
Previously only underscore-prefixed identifiers were stripped. Now
`PropertyDefinition` and `MethodDefinition` nodes with
`node.computed === true` are also removed.
Reviewed By: huntie
Differential Revision: D100969511
fbshipit-source-id: 7eb1dfde99b56e9c460d83f6b12b7c31c3b04c92
Summary:
Two documentation errors in `scripts/js-api/README.md`:
1. **Wrong link text** (line 22): The link for the Flow-to-TypeScript converter reads `[flow-api-extractor](https://www.npmjs.com/package/flow-api-translator)` but the package name is `flow-api-translator`, not `flow-api-extractor`. The link URL was correct but the visible text was misleading.
2. **Wrong filename** (line 76): The Public API snapshot section refers to the file as `ReactNative.d.ts`, while the actual file committed to the repo is `ReactNativeApi.d.ts`. The correct name is already used earlier in the same document (line 16 and line 41).
Fixes https://github.com/facebook/react-native/issues/55667
Fixes https://github.com/facebook/react-native/issues/55668
## Changelog:
[General] [Fixed] - Fix incorrect package name and output filename in scripts/js-api/README.md
Pull Request resolved: https://github.com/facebook/react-native/pull/56362
Test Plan: Documentation-only change. Verified the link URL and the actual file name at `packages/react-native/ReactNativeApi.d.ts`.
Reviewed By: huntie
Differential Revision: D100761759
Pulled By: cortinico
fbshipit-source-id: 8a30ca1a5f35c9491c2ad4c94ae20da4621cb5a7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55233
X-link: https://github.com/facebook/metro/pull/1640
Re-sync Flow Babel types with the latest version from npm to unbreak no-lockfile CI.
Metro only: Also `yarn-deduplicate` other deps
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D90986684
fbshipit-source-id: 332acd66c2ca1b3396388b383f1c940b19b899ce
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55136
Stacking another diff on top of hermes release. Let's see if there's still any CI failures.
` js1 flow-runner codemod flow/transformUtilityType --format-files=false --legacy-type='$Values' xplat/js`
drop-conflicts
Reviewed By: gkz
Differential Revision: D90549059
fbshipit-source-id: e07faa80b5ed0a675a2bc9bcc45d4084aaae9eda
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54901
At present, we're only using a rough heuristic for whether a code change to `ReactNativeApi.d.ts` is a breaking change. Introduce `POTENTIALLY_BREAKING` result level and update Danger warnings box.
Changelog: [Internal]
Reviewed By: cipolleschi
Differential Revision: D89287801
fbshipit-source-id: aced7911ecde37a1ad2c355d56ef0f0edde88fd4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54822
Updates hash generation in `versionExportedApis.js` to track changes to `declare const` type declarations like `AccessibilityInfo_default`.
Previously, changes to APIs (e.g., `AccessibilityInfo`) would not always update their hashes in `ReactNativeApi.d.ts`, causing the breaking change detection to miss actual API changes.
Three issues prevented proper hash tracking:
1. **`VariableDeclaration` types weren't tracked** - `declare const X: {...}` was not in the list of tracked declaration types
2. **Duplicate declarations caused overwrites** - `declare type X = typeof X` would overwrite `declare const X: typeof X_default` in the declarations map, losing the dependency on `X_default`
3. **`typeof X` queries weren't extracting dependencies** - references via `typeof` weren't being added to the dependency graph
## Fix
- Add `t.isVariableDeclaration(node)` to tracked types with proper name extraction
- Prevent overwriting existing declarations (first declaration wins)
- Handle `TSTypeQuery` nodes to extract `typeof X` dependencies
### Note on Hash Changes
This PR causes many hashes to change, even for types that haven't been modified. This is expected because the hash computation now includes `declare const` dependencies that were previously ignored.
**Before:** `AccessibilityInfo` hash only included `declare type AccessibilityInfo = typeof AccessibilityInfo` (self-reference)
**After:** Hash now includes `declare const AccessibilityInfo: typeof AccessibilityInfo_default` + the full `AccessibilityInfo_default` type
## Changelog:
[GENERAL] [FIXED] - hash generation includes `declare const` types in API snapshot
Reviewed By: huntie
Differential Revision: D88653322
fbshipit-source-id: abdf9c5e11bf8ff9e6e2f17a743a2d5aa213ae1c
Summary:
This replaces `glob@^7.0.0` with `tinyglobby@^0.2.15`. `glob@7` has been deprecated for a while and some versions after had security notices released for them. The plan is to backport this PR to `0.81.x` and onwards.
> [!NOTE]
> This is a stopgap solution until `fs.glob` becomes generally available with the EOL of Node v20
Succeeds:
- https://github.com/facebook/react-native/issues/54669
- https://github.com/facebook/react-native/issues/48875
## Changelog:
[GENERAL] [SECURITY] - Replace `glob@^7.0.0` with `tinyglobby@^0.2.15`
Pull Request resolved: https://github.com/facebook/react-native/pull/54737
Test Plan:
- Ran all modified commands manually and `pod install in `rn-tester`
- NOTE: `ios-prebuild`-related scripts haven't been run manually yet
Reviewed By: robhogan
Differential Revision: D88069145
Pulled By: huntie
fbshipit-source-id: 0c455342a4c6d1d6605fd09fe47b418e5d751491
Summary:
In Flow 0.284, we will have a stricter version of `Array<T>.includes`. Instead of accepting `mixed`, we will only accept `T` to help catch logical errors. We did the same for `Array.indexOf` and `Array.lastIndexOf` as well.
This diff pre-suppresses newly discovered errors in part of the codebase.
Changelog: [Internal]
Reviewed By: marcoww6
Differential Revision: D82784398
fbshipit-source-id: 6cb11809844f964e0604d33b9f7a3989074cd1cc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52768
Prettier v3 has an async API. This diff adds in await ahead of the upgrade to prepare for the API change.
Changelog: [Internal]
Reviewed By: pieterv
Differential Revision: D78752354
fbshipit-source-id: c0d27a6c863747b71852e72a22687d1fe1d9f76f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52473
Shared utils that were located in the root of `scripts/` are now colocated closer to their dependencies or moved to `scripts/shared/` — simplifying the root directory layout.
Changelog: [Internal]
Reviewed By: robhogan
Differential Revision: D77873875
fbshipit-source-id: e04dba41a1ef811d32793931033fdfa93afad0cd