1648 Commits
Author SHA1 Message Date
Sam Zhou 5880e42ce8 Deploy 0.333.0 to xplat
Summary:
[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D121669551

fbshipit-source-id: cb1baae809941e0c970bfe80209db284623fade0
2026-09-24 17:03:47 -07:00
Peter Abbondanzo 88b9c3fb7c Retry suite-level runtime failures (#58631)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58631

Fantom's CI retries use Jest's `--onlyFailures` mode. Jest 29's default sequencer caches suite-level runtime errors as passing because they contain no failed test cases, so retries select no suites.

See https://github.com/react/react-native/actions/runs/35630015753/job/106440689782?pr=58624 of an example of this, where retries didn't actually do anything

Add a Fantom-specific sequencer that marks runtime-error suites as failed only for cache bookkeeping. This preserves the original test reporting while ensuring targeted retries rerun the crashed suite.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D121063351

fbshipit-source-id: e24737cc247ea0e11aa04dac74d557a3f41f9db6
2026-09-24 06:58:58 -07:00
Sam Zhou 6019ea14b2 Deploy 0.332.0 to xplat (#58608)
Summary:
X-link: https://github.com/react/metro/pull/1955

Pull Request resolved: https://github.com/react/react-native/pull/58608

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D120845480

fbshipit-source-id: ccaa780e12d3ca033941de770f0ba31f90c7ad28
2026-09-19 14:49:02 -07:00
Nicola Corti 30b4c7e947 Add Swift to yarn format (#58463)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58463

Add `yarn format-swift` and `yarn format-check-swift` using Apple swift-format, and compose them into the repository-wide commands. The wrapper selects a repository-provided formatter when available or uses swift-format 6.3 or newer from the Swift toolchain. Missing tools produce environment-specific setup guidance before Swift is skipped.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D119487615

fbshipit-source-id: 4da9939aa7ddf400e810cd17aeec12aa6118023b
2026-09-15 11:23:27 -07:00
Nicola Corti 2334bf755d Add Python to yarn format (#58465)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58465

Add `yarn format-python` and `yarn format-check-python` using Ruff, and compose them into the repository-wide commands. The wrapper selects a repository-provided Ruff binary when available or bootstraps pinned Ruff through Python 3 and pip. Missing tools produce environment-specific setup guidance before Python is skipped.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D119487614

fbshipit-source-id: 4801ae3e565fcaa86a860cc5b8bb3b2d823d48df
2026-09-15 11:23:27 -07:00
Nicola Corti c9c293d061 Add Java to yarn format (#58466)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58466

Add `yarn format-java` and `yarn format-check-java` using the npm `google-java-format` package, which bundles google-java-format 1.23.0. This removes the Gradle build dependency and adds the offline package mirror and workspace lock entries. The wrapper discovers a suitable JDK when available and otherwise prints environment-specific Java 17 setup guidance before skipping Java.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D119487613

fbshipit-source-id: e5ed299cc19f64bd5aceefd90c6160852be8ba37
2026-09-15 11:23:27 -07:00
Nicola Corti 07e4bf34d0 Add Kotlin to yarn format (#58462)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58462

Add `yarn format-kotlin` and `yarn format-check-kotlin` using the npm `ktfmt` package and its bundled formatter jar. This adds the offline package mirror and workspace lock entry without changing existing Kotlin source formatting or Gradle configuration. The wrapper discovers a suitable JDK when available and otherwise prints environment-specific Java 17 setup guidance before skipping Kotlin.

allow-large-files: The npm package intentionally contains the upstream ktfmt executable jar so offline and public installs use the same formatter.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D119487612

fbshipit-source-id: cb699a1286cffbf461ef69ed66f694e3f69415d0
2026-09-15 11:23:27 -07:00
Nicola Corti ec9952a62d Check all C-family sources with clang-format (#58461)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58461

Add npm-driven clang-format commands for exported C-family sources. Expose `yarn format-cpp` and `yarn format-check-cpp`, and compose them into the repository-wide commands. The wrapper automatically selects the repository-provided formatter for its environment.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D119487611

fbshipit-source-id: 9d2e4267ce0d80f2002c0d3648e62e53bd3284af
2026-09-15 11:23:27 -07:00
Nicola Corti 7d7b585725 Match Prettier coverage with arc f (#58460)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58460

Use the public Prettier configuration for the complete OSS JavaScript and documentation surface. Expose `yarn format-javascript` and `yarn format-check-javascript`, and compose them into the repository-wide commands.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D119487610

fbshipit-source-id: 32e98182f6dce16285f59418775764f15bbbc880
2026-09-15 11:23:27 -07:00
Rubén Norte b0b71421c1 React 19.3.0 sync int React Native OSS (#58446)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58446

Sync of React 19.3.0 into React Native

Changelog: [General][Changed] - Sync React 19.3.0 into React Native

jest_e2e[run_all_tests] bypass-github-export-checks

Reviewed By: fabriziocucci

Differential Revision: D119490598

fbshipit-source-id: 4a00bd01fd1a4b1c48ffcae182f1b88cd0cf9e06
2026-09-10 17:03:25 -07:00
Rob Hogan 9a49fc2a99 Bump flow-{api-translator,eslint,parser} to 0.331.0 (#58391)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58391

Regenerate API snapshots after the bump. `flow-api-translator` picks up the fix in https://github.com/facebook/flow/pull/9486, which stops treating `async` functions with no explicit return annotation as `void` — updating `DependencyGraph#end` and `MetroServer#end` to their correct `Promise<void>` return type in `packages/metro/API.md`.

Changelog: [Internal]

Changelog: **[Types]**: `DependencyGraph#end` and `MetroServer#end` are now correctly declared as returning `Promise<void>` rather than `void`

X-link: https://github.com/react/metro/pull/1909

Test Plan:
```
yarn typecheck
yarn lint
yarn build
yarn run verify-api-snapshots
```
All pass.

Reviewed By: mweststrate

Differential Revision: D119090467

Pulled By: javache

fbshipit-source-id: 21b65f90ed511e0cb035917eaf1b0ca399ece855
2026-09-08 07:17:37 -07:00
Sam Zhou f072ddb17c Deploy 0.331.0 to xplat (#58332)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58332

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D118823256

fbshipit-source-id: 11d1e53dad7985686fd97a2aa771cd5c5ece7e09
2026-09-04 12:16:47 -07:00
Panos Vekris ebdd848017 Deploy 0.330.0 to xplat (#58268)
Summary:
X-link: https://github.com/facebook/relay/pull/5404

Pull Request resolved: https://github.com/react/react-native/pull/58268

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D118220097

fbshipit-source-id: e110cdb854e49a3539ac95c472048957bf53f9c7
2026-09-01 15:06:32 -07:00
anupamme fea5e11d9c fix: upgrade shell-quote to 1.8.4 (CVE-2026-9277) (#57663)
Summary:
Upgrade shell-quote from 1.8.2 to 1.8.4 to fix CVE-2026-9277.

## Vulnerability
| Field | Value |
|-------|-------|
| **ID** | CVE-2026-9277 |
| **Severity** | CRITICAL |
| **Scanner** | trivy |
| **Rule** | `CVE-2026-9277` |
| **File** | `yarn.lock` (dependency: `shell-quote`) |
| **Assessment** | Present in dependency tree, not confirmed reachable |

**Description**: shell-quote: shell-quote: Arbitrary code execution via command injection due to unescaped line terminators

## Evidence

**Scanner confirmation**: trivy rule `CVE-2026-9277` flagged this pattern.

## Changes
- `package.json`
- `yarn.lock`

## Behavior Preservation
The change is scoped to 2 files on the vulnerable path; it only tightens handling of untrusted input and leaves valid inputs unaffected.

 ---
*This change addresses a pattern flagged by static analysis. The code path handles user-influenced input and the fix reduces the attack surface against both manual and automated exploitation.*

 ---
*Automated security fix by [OrbisAI Security](https://orbisappsec.com)*

Pull Request resolved: https://github.com/react/react-native/pull/57663

Reviewed By: christophpurrer

Differential Revision: D117534144

Pulled By: cortinico

fbshipit-source-id: 75a032df0851c98517eedf880664f023778c6464
2026-08-27 07:13:26 -07:00
George Zahariev e47416c73c Deploy 0.329.0 to xplat (#58082)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58082

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: SamChou19815

Differential Revision: D117138586

fbshipit-source-id: 8b0ca9349cf2ec9e7f94f447e8d9774416886adf
2026-08-24 01:21:49 -07:00
Peter Abbondanzo 22e0eaf4e7 Pin clang-format 21.1.2 for OSS formatting (#58001)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58001

The existing npm `clang-format` wrapper bundles LLVM 15, causing `yarn clang-format` to disagree with the formatting of checked-in headers.

Replace it with checksum-pinned DotSlash artifacts for `clang-format` 21.1.2 across Linux, macOS, and Windows. Add a chunked formatting runner and remove the obsolete npm dependency. The runner skips generated sources and ignores dirsynchronized or vendored subtrees that maintain their own formatting.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D116500359

fbshipit-source-id: 2141bee22ed2b712aae1637a1f052db23535bbb0
2026-08-19 09:41:46 -07:00
Sam Zhou 88043334e3 Remove unused babel-plugin-syntax-hermes-parser (#57958)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57958

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D115933669

fbshipit-source-id: beb16a462472effcdcc2f9aea3d1baae5fd075b8
2026-08-13 17:58:27 -07:00
Sam Zhou 704c2b1954 Bump flow-{estree,parser,eslint,transform,api-translator} to latest (#57932)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57932

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D115802149

fbshipit-source-id: aa4c730e47ab9b362f7a6e1a16c8127117b09c08
2026-08-13 12:21:06 -07:00
Sam Zhou aeee662b62 Deploy 0.327.0 to xplat (#57927)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57927

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D115751796

fbshipit-source-id: 0d60967ea1f0556616a9f918410f4105404488dd
2026-08-12 14:17:00 -07:00
Sam Zhou 727e87ed26 Fully replace hermes-(estree|parser|eslint|transform) packages with flow-* counterparts in react-native (#57851)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57851

The flow-* packages have support for all latest syntax and is better maintained.

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D115064040

fbshipit-source-id: 7265eb722910a460c76d0dbde0603cf962fe4e4e
2026-08-10 07:21:52 -07:00
Sam Zhou bf14b94352 Deploy 0.326.0 to xplat (#57845)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57845

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D114988411

fbshipit-source-id: a3809c915226a4253eb529647cccb7213e1beda8
2026-08-06 05:30:01 -07:00
Sam Zhou 7b5d1bc971 Switch over to flow-parser/babel-plugin for compilation (#57770)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57770

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D114240152

fbshipit-source-id: 7d292d33f75cf548b89e6427684fc3a5994c4b3f
2026-07-30 17:10:20 -07:00
Sam Zhou aadcadeec7 Deploy 0.325.0 to xplat (#57767)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57767

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D114222503

fbshipit-source-id: a8fbc12e138ec838fb81e7ea37a6acbe17f8c57d
2026-07-30 12:29:46 -07:00
Sam Zhou 3365667479 Install flow-{estree,eslint,parser,transform} counterparts to the hermes-* packages (#57769)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57769

Eventually, we will replace the hermes ones with the `flow-{estree,eslint,parser,transform}` packages. This diff first installs the flow ones.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D114226573

fbshipit-source-id: a693cdac57d2ce77c002a8ac455aceabaadbcf20
2026-07-30 10:37:48 -07:00
George Zahariev c1843c4db7 Deploy 0.324.0 to xplat (#57689)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57689

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: SamChou19815

Differential Revision: D113605655

fbshipit-source-id: 800e8f92d943a8f32d9a6aeff75ff9bfa6527827
2026-07-25 13:40:31 -07:00
Alex Hunt 89300acb9c Migrate Node.js builtin imports to node: scheme (#57611)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57611

Directly follows D112733139 (Metro).

**Motivation**

- New Node builtins are *only* available under the prefix (e.g. `node:sqlite`), as this allows Node to introduce them without ecosystem-breaking changes, so this is the direction of travel and the only choice that'll allow consistency.
- Encouraging them and grouping them separately makes it easier to reason about a module's 3rd party dependencies.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D112803684

fbshipit-source-id: 40668d746a7151b3aa4800ff8af997902a18d198
2026-07-21 09:01:41 -07:00
Sam Zhou dd5dc6b231 Uninstall prettier-plugin-hermes-parser (#57569)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57569

Changelog: [internal]

Reviewed By: robhogan

Differential Revision: D112136508

fbshipit-source-id: 6a12da17a24a837856aa147c364e40c983dd2f37
2026-07-15 12:18:57 -07:00
Sam Zhou 30d9593c7b Update hermes-parser and related packages in fbsource to 0.37.0 (#57567)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57567

Bump hermes-parser and related packages to [0.37.0](https://github.com/facebook/hermes/blob/static_h/tools/hermes-parser/js/CHANGELOG.md).

Changelog: [internal]

Reviewed By: panagosg7

Differential Revision: D112000723

fbshipit-source-id: e2851d8c48d19c4f64e8f9ea278fcb31654cdcd1
2026-07-15 08:57:22 -07:00
Christian Falch 47fad096a4 feat(iOS) swiftpm support in iOS (#57332)
Summary:
⚠️  This is a stacked PR — review/merge the base PRs first

Builds on, and should land after (bottom-up):

1. https://github.com/react/react-native/issues/57285 — Remove the Clang VFS overlay / modularize React headers (base of the stack). <React/…> via the framework module map; lowercase namespaces (react/, yoga/, jsi/, …) via the ReactNativeHeaders module map.
2. https://github.com/react/react-native/issues/57305 — Prebuilt artifact resources + ReactNativeHeaders.xcframework. Ships the prebuilt core artifacts (incl. ReactNativeHeaders in the tarball + embedded React.framework resources) and the CocoaPods React-Core-prebuilt facades.
3. https://github.com/react/react-native/issues/57440 — Self-serving prebuilt ReactNativeDependencies + dependency-only facades. The deps pod becomes the single header authority for the third-party namespaces (RCT-Folly/glog/boost/…); community `s.dependency "RCT-Folly"` resolves to local facades instead of trunk source pods.
4. https://github.com/react/react-native/issues/57442 — ReactNativeDependenciesHeaders sidecar + pure-RN ReactNativeHeaders (immediate base). The deps prebuild emits a headers-only LIBRARY-type sidecar (the binary deps xcframework is framework-type — invisible to SwiftPM binaryTargets), ReactNativeHeaders drops the third-party namespaces, and both headers artifacts publish standalone to Maven.

The whole stack is rebased onto current main (2026-07-06).

This PR consumes the final **five-artifact set**: React, ReactNativeHeaders (pure-RN), ReactNativeDependencies, ReactNativeDependenciesHeaders, hermes-engine.

Adds npx react-native spm and the package-generation tooling that turns an app into a SwiftPM-integrated RN app using the base stack's prebuilt XCFrameworks. CocoaPods stays supported — additive, opt-in, no Ruby toolchain. Integration is injected into the existing .xcodeproj in place (nothing generated/renamed/replaced), recorded in .spm-injected.json so it reverses exactly.

### What this PR adds

- The spm CLI (add/update/deinit/scaffold + hidden sync/codegen/download), zero-arg auto-resolution, --deintegrate for CocoaPods→SwiftPM.
- SwiftPM package generation (scripts/spm/): autolinking→Package.swift, Codegen→React-GeneratedCode, core XCFramework binary targets, artifact download/cache, surgical pbxproj inject/remove.
- ReactNativeDependenciesHeaders wired as the 5th binaryTarget: the headers-only companions (ReactNativeHeaders from the core tarball, the deps sidecar from the deps tarball) are staged automatically out of their parent tarballs — no --headers-tarball priming; REQUIRED_ARTIFACTS covers all five.
- Community-library scaffolding from podspecs (incl. root-level-source podspecs via generated include/<SwiftName>/ shims, sibling wiring for transitive spm.dependencies, self-ingestion guards).
- In-place Xcode integration (XCLocalSwiftPackageReference + Sync build phase + scheme pre-action + auto-sync; ${PODS_ROOT}-anchored REACT_NATIVE_PATH replaced on --deintegrate with exact deinit rollback).
- rn-tester + helloworld SwiftPM consumption + test library; npm-packaging hygiene; a small RNCoreFacades.podspec_dir fix.

## Documentation

- **Tool docs** (usage, quick start, architecture): [`scripts/spm/__doc__/spm-scripts.md`](https://github.com/react/react-native/blob/chrfalch/swift-package-manager/packages/react-native/scripts/spm/__doc__/spm-scripts.md)
- **Header-paths contract** (how the five artifacts serve headers): [`scripts/spm/__doc__/spm-header-paths-contract.md`](https://github.com/react/react-native/blob/chrfalch/swift-package-manager/packages/react-native/scripts/spm/__doc__/spm-header-paths-contract.md)
- **RFC** (updated): [react-native-community/discussions-and-proposals#994](https://github.com/react-native-community/discussions-and-proposals/pull/994)

## Changelog:

[IOS] [ADDED] - `npx react-native spm` command + SwiftPM package-generation tooling (opt-in; CocoaPods stays supported)

Pull Request resolved: https://github.com/react/react-native/pull/57332

Test Plan:
350 scripts/spm unit tests (incl. byte-identical add→deinit round-trip); manual E2E against the five-artifact set: fresh app via `cli init`→`spm add --deintegrate`→build (artifact resources verified in the app), rn-tester in-place migration (RNTesterPods.xcodeproj, test libraries + spmModules), helloworld in-place migration — all BUILD SUCCEEDED. Verified `npx react-native spm <cmd>` from the command line in each journey.

## Scope & limitations

iOS, prebuilt-only (no build-from-source yet); full spm.xcframework/spm.source library metadata not yet (app-local spm.modules + scaffolding are); Expo not yet.

## Follow-ups

Remote-mode ReactNative Package.swift must vend the ReactNativeDependenciesHeaders product (spm-distribution repo); library self-containment for repo-portable manifests; build-from-source.

Reviewed By: mdvacca

Differential Revision: D111449548

Pulled By: cipolleschi

fbshipit-source-id: 87a873bf5c8be2d60f7893611e16924bfa730a46
2026-07-15 05:08:52 -07:00
Sam Zhou cb0cf07c21 Deploy 0.322.0 to xplat (#57538)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57538

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D111826645

fbshipit-source-id: c3eb44de4c2d6bc12374814996740a05e1f2b5d5
2026-07-14 00:43:40 -07:00
Rob Hogan fe511aba7c Bump Metro to 0.87.0 (#57534)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57534

Bump Metro to 0.87.0

Changelog:
[General][Changed] Bump Metro to 0.87.0

Reviewed By: huntie

Differential Revision: D111711509

fbshipit-source-id: 800fa83127d88db77948dab20b3edb574ecb5fc0
2026-07-13 11:06:41 -07:00
Alex Hunt c948b61c05 Enable Strict TS API by default (#57490)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57490

See [**RFC0894: Removing deep imports from react-native**](https://github.com/react-native-community/discussions-and-proposals/pull/894)

This is the **big switch** to enable the Strict TypeScript API (generated types + single index entry point) by default in React Native.

**Opt-in → opt-out**

After this change, the main `react-native` package resolves its `"types"` entry points only to `types_generated/index.d.ts` — with no other subpaths available.

The new `"react-native-legacy-deep-imports"` condition maps to legacy `types/` and `Libraries/*.d.ts` sources.

**Impact limitation**: For this stage of rollout, the `"default"` condition continues to resolve to source files. Only TypeScript is affected.

**How to opt out**

Opposite of today's opt-in, which we will update in [the docs](https://reactnative.dev/docs/strict-typescript-api). Again, the only impact area today is **TypeScript**.

```json5
// tsconfig.json
{
  "extends": "react-native/typescript-config",
  "compilerOptions": {
    ...
    "customConditions": ["react-native-legacy-deep-imports"]
  }
}
```

**Other changes**

- Drop `react-native/typescript-config/strict` entry point, update README.
- Update `__typetests__`.

**Rollout plan**

**Target release: 0.87**. This and the contributing stack will be cherry picked for RC1.

- We've conducted testing against 100+ real Expo codebases, giving us the confidence that we've reduced breaking changes enough that the vast majority of RN codebases can migrate.
- The Strict API includes a number of **intentional breaking changes**, and docs have been kept up to date.
- We're shipping a `/migrate-to-strict-api` skill to migrate via agents, see https://github.com/react-native-community/skills/pull/3.

**What's improved since 0.80?**

Since the initial opt-in launch of the Strict API in 0.80, we've been making continuous improvements over the last year to get our generated types into a widely launchable state.

Most notably:

- 21+ new/updated root APIs and fixes due to community feedback ([discussion](https://github.com/react-native-community/discussions-and-proposals/discussions/893), [PRs](https://github.com/react/react-native/pulls?q=is%3Apr%20label%3A%22JS%20API%20stabilization%20(1.0)%22%20is%3Aclosed)).
- Upstream encapsulation blocker in TypeScript, fixed in 6.0 (https://github.com/react/react-native/issues/53565).
- Tailwind/Uniwind compatibility (`interface` types for props).
- `*Instance` ref type exports for all built-in components (https://github.com/react-native-community/discussions-and-proposals/pull/1003).
- Fixes to previously mistyped, high impact APIs, such as `Appearance`.
- New subpath entry points for `asset-registry`, `setup-env`, and others.
- Refinements to doc comments/type translation build.

**Rollback plan**

Revert this diff.

IMPORTANT: We'll adopt a policy of **super-eager rollback**, if there are any unsolvable issues during the RC phase.

Changelog:
[General][Breaking] - React Native's default JavaScript API is now the [Strict TypeScript API](https://reactnative.dev/docs/strict-typescript-api). Use `customConditions: ["react-native-legacy-deep-imports"]` to opt out.

Reviewed By: cortinico

Differential Revision: D110458670

fbshipit-source-id: 4b0e0b458a5f895f783d6d936e7b11ccff2df076
2026-07-10 09:28:17 -07:00
Sam Zhou 537d867316 Bump to latest prettier (#57473)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57473

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D110952668

fbshipit-source-id: a2278dbe978b42d42f57ddea10a947703a181797
2026-07-08 05:24:04 -07:00
Rob Hogan 2b0107e0aa Bump Metro to 0.86.0 (#57453)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57453

Metro release notes:

https://github.com/react/metro/releases/tag/v0.86.0

Changelog:
[General][Changed] Metro to 0.86.0

Reviewed By: huntie

Differential Revision: D110789092

fbshipit-source-id: 4b999bf533c3c61b7915a73366ff3ca13257c3dc
2026-07-07 02:20:23 -07:00
Rubén Norte 2bb7dbb499 Add an interactive REPL for Fantom (yarn fantom-cli) (#57387)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57387

Adds `yarn fantom-cli`, an interactive REPL that evaluates JavaScript against the same native tester binary and Hermes runtime that Fantom tests run in. State persists across lines, input goes through Metro/Babel (so `import`, JSX and Flow all work), and the environment is set up the same way tests set it up — `React`, `ReactNative` and the `Fantom` API are available globally, so you can render surfaces and drive them interactively from the prompt.

The native tester gains an `--interactive` mode that loads a warm-up bundle without running tests and then evaluates length-prefixed snippets read from stdin, reporting results, console output and errors back as newline-delimited JSON. A Node driver hosts a Metro server, builds the warm-up bundle, spawns the binary, and bridges each line of input into the live runtime (top-level declarations persist across evaluations).

Features:

- Console-style output: results are printed with an inspector similar to the Chrome DevTools / Node.js consoles (nested objects/arrays up to a depth limit, quoted strings, functions/classes, `Map`/`Set`/`RegExp`/`Date`/`Error`, class instances, circular references, multi-line wrapping), colorized by type when stdout is a terminal. Inspecting a property never aborts the result or leaks into later evaluations: a property whose getter fails renders as `[Thrown: <error>]`, including getters that fail asynchronously through the runtime's global error handler (e.g. accessing a `react-native` export backed by a TurboModule that isn't registered).
- Autocompletion: pressing Tab completes global identifiers, in-scope bindings and object properties (property names are listed without invoking getters).
- Node-like CLI: with no arguments it starts the REPL; `-e <code>` evaluates a snippet and exits; a filename runs that script and exits. In the non-interactive modes the value of a trailing expression is not printed (use `console.log`) and a thrown error exits with a non-zero status code.

Also documents the REPL in the Fantom README.

Changelog: [Internal]

Reviewed By: javache, sammy-SC

Differential Revision: D110187712

fbshipit-source-id: 3e76c498ae04b8b1ce9e0e27e5ce6b6a0cd11e09
2026-07-01 08:18:34 -07:00
Alex Hunt fa371d156d Add macOS 26 icon for RNDT (#57310)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57310

Add `AppIcon.icon` file (Icon Composer) for macOS 26 Tahoe. Also rename previous `.icns` file for consistency.

`electron/packager` is updated to `^20.0.0` (`.icon` support was added in `18.4.0`).

**Notes**

- This change ensures the Icon Composer source is part of the codebase (following above Electron packager support which came in March).

Changelog:
[General][Changed] - **React Native DevTools**: Add macOS 26/27 app icon

Reviewed By: robhogan

Differential Revision: D97292364

fbshipit-source-id: ba1c34175a95da8c2860142d9db0c4d98d3f6de0
2026-06-29 03:08:17 -07:00
Alex Hunt ae6a3afb22 Upgrade Metro to ^0.85.0 (#57335)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57335

Changelog: [Internal] - Node 22 requirement is synchronised with RN for 0.87

Reviewed By: robhogan

Differential Revision: D109699796

fbshipit-source-id: 642373a6babc37ce3e9bc83676abd0aa09f54a85
2026-06-25 10:31:30 -07:00
Sam Zhou 9ab5dd857b Deploy 0.319.0 to xplat (#57256)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57256

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D108885686

fbshipit-source-id: b31fc3f2987ddb08cbe52daa5e8eef437541c8df
2026-06-17 11:30:47 -07:00
Sam Zhou 2c2d24d415 Deploy 0.318.0 to xplat (#57163)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57163

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D108172771

fbshipit-source-id: 9e3bc0d869e297b3b92713783356d0af58d07b91
2026-06-10 12:14:39 -07:00
Nicola Corti 284035b21d Fix security vulnerabilities in transitive dependencies (#57066)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/57066

Add yarn resolutions and update lockfiles to fix security vulnerabilities in five transitive dependencies:

- `xmldom/xmldom` 0.8.10 → 0.8.13 (CVE-2026-41672, XML injection)
- `fast-xml-parser` 4.5.4 → 4.5.6 (CVE-2026-33349, CVE-2026-33036, entity expansion bypass)
- `yaml` 2.5.0/2.8.1 → 2.9.0 (CVE-2026-33532, stack overflow via deep nesting)
- `fast-uri` 3.0.6 → 3.1.2 (CVE-2026-6322, host confusion; CVE-2026-6321, path traversal)
- `addressable` 2.8.5/2.8.7 → 2.9.0 (CVE-2026-35611, ReDoS)

All bumps are within semver range of their parent constraints and are patch or minor version updates.

- Fixes https://github.com/facebook/react-native/pull/56364
- Fixes https://github.com/facebook/react-native/pull/56365
- Fixes https://github.com/facebook/react-native/pull/56570
- Fixes https://github.com/facebook/react-native/pull/56393
- Fixes https://github.com/facebook/react-native/pull/56231
- Fixes https://github.com/facebook/react-native/pull/56741

Changelog:
[General][Security] - Fix security vulnerabilities in `xmldom/xmldom`, `fast-xml-parser`, `yaml`, `fast-uri`, and `addressable` transitive dependencies

Reviewed By: andrewdacenko

Differential Revision: D107405946

fbshipit-source-id: f7af5573a418c973c57d582217ac8bf7f330ba4c
2026-06-04 08:44:29 -07:00
Sam Zhou eedfdefaa2 Deploy 0.317.0 to xplat (#57072)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/57072

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: bherila

Differential Revision: D107466486

fbshipit-source-id: b42ee310dc6672a7a1b0d7f55201ac4ceba0817c
2026-06-03 21:00:28 -07:00
Sam Zhou be6a7a545e Resolve babel-plugin-syntax-hermes-parser from metro-babel-register to latest (#57033)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/57033

We have [this revert](https://github.com/facebook/react-native/commit/833144fcecf8be72a372c655933a5496b8775d60) because the metro is stuck on an old version of of hermes-parser. The parser is already bumped in the metro source code. Instead of waiting for a new release that's tied to the react native release cycle, let's just bump it here and now via yarn resolution. It can be removed once a new version is cut.

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D107165685

fbshipit-source-id: 0076418b8062c13f13b2a2c1306fec511a866d11
2026-06-01 21:17:52 -07:00
George Zahariev 57d44a806d Deploy 0.316.0 to xplat (#57012)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/57012

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: SamChou19815

Differential Revision: D106964682

fbshipit-source-id: 4c87a48ef0a4f626ec603e065975525ccdcb2444
2026-05-31 18:09:05 -07:00
George Zahariev 622941d9dc Deploy 0.315.0 to xplat (#56993)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56993

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: marcoww6

Differential Revision: D106733740

fbshipit-source-id: baf8a8ab52ca413aa3acfbd3e139675cc2f9d044
2026-05-29 05:10:25 -07:00
Ivor Zhou ef38dbb28d Update hermes-parser and related packages in fbsource to 0.36.1 (#56806)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56806

Pull Request: https://github.com/facebook/react-native/pull/56806

Bump hermes-parser and related packages to 0.36.1.

Changelog: [internal]

Reviewed By: SamChou19815

Differential Revision: D104122338

fbshipit-source-id: 7e938ec114355cf517ff2e76ffbb941f6352d213
2026-05-14 22:13:53 -07:00
Sam Zhou 668ca295ca Deploy 0.314.0 to xplat (#56810)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56810

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D105015188

fbshipit-source-id: e224f3112fa1c4b707fb1485c9474df5c5f6e53a
2026-05-13 10:36:36 -07:00
Alex Hunt 2991a97731 Upgrade TypeScript to ^6.0.3 (#56772)
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
2026-05-12 17:53:54 -07:00
Riccardo Cipolleschi ac48b56a1a Rename try-set-nightly-hermes-compiler.js (#56758)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56758

Rename scripts/try-set-nightly-hermes-compiler.js to
scripts/try-set-hermes-compiler-prebuilt.js. The script sets the hermes-compiler
version to the latest prebuilt (latest-v1 on npm), not a nightly build.
Update the preinstall script reference in the root package.json.

## Changelog:
[Internal] -

Reviewed By: cortinico

Differential Revision: D104649635

fbshipit-source-id: 8375d0518ea8c9ca99a59fd65366210eeea91e50
2026-05-11 12:55:12 -07:00
Rob Hogan 783f45746e Bump packages to 0.87.0-main following 0.86 cut (#56716)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56716

Now that we've cut 0.86, bump all versions on `main` ready for the 0.87 cut.

Changelog: [Internal]

Reviewed By: cortinico, fabriziocucci

Differential Revision: D104219534

fbshipit-source-id: 86f2ebe5b44f67608a7a9495bf9840f2cdd52e5b
2026-05-07 07:23:06 -07:00
Panos Vekris dd03f889ef Deploy 0.313.0 to xplat (#56712)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56712

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: SamChou19815, marcoww6

Differential Revision: D104101843

fbshipit-source-id: 57316144950b66c27884c1858645d87ce23ba633
2026-05-06 18:55:49 -07:00