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
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
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
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/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
Summary:
Bumps Metro dependency from `^0.84.2` to `^0.84.3` across all packages.
Metro 0.84.3 adds `changeId` to HMR `update-done` messages, which is required by the `unstable_fastRefreshComplete` CDP event and the Fast Refresh performance marker to deduplicate events across multiple updates for the same file change.
## Changelog:
[Internal]
Pull Request resolved: https://github.com/facebook/react-native/pull/56638
Test Plan:
- CI
cc huntie
Reviewed By: cortinico
Differential Revision: D102810175
Pulled By: motiz88
fbshipit-source-id: b05bc522fd7815f2858ce645b03bdea86a8027ea
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56603
Upgrade transitive dependency lodash from 4.17.21 to 4.18.1 to remediate CVE-2026-4800 (Improper Control of Generation of Code / Code Injection).
- Added `"lodash": "4.18.1"` to `resolutions` in package.json to force all lodash ranges (including `~4.17.15`) to resolve to 4.18.1
- Updated yarn.lock entry to resolve all lodash ranges to 4.18.1
Without the resolution override, the `~4.17.15` range would stay at 4.17.21 (vulnerable) since `~` only allows patch-level updates and 4.18.1 is a minor bump.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D102273666
fbshipit-source-id: d3a17ba480b5d44c048b2b1d814bc3989abcd06a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56253
Renames flag for verifying that the C++ public API snapshot is with sync with the actual public API surface to match the JS API command.
Changelog:
[Internal]
Reviewed By: huntie
Differential Revision: D98484129
fbshipit-source-id: ec806353f263b00e5060d9e7f0333bcf4cced148
Summary:
This diff reverts D97425290
issue with this version
Depends on D97425290
Changelog: [Internal]
Reviewed By: marcoww6, panagosg7
Differential Revision: D97534385
fbshipit-source-id: b76be68b58c891ce553f96b79c3fbf157085cf08
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55907
Github OSS CI is failing because of D95055797.
Reverting the diff to fix the OSS CI
## Changelog:
[Internal] -
Reviewed By: lenaic
Differential Revision: D95204543
fbshipit-source-id: ef9d7b871baa00ae86bd0d619b151e5f8abc7782
Summary:
Maintainer of https://github.com/theoludwig/markdownlint-rule-relative-links/
Didn't know (until now) that this package was used by the react-native repository, and glad that you find it useful! 😄
Apparently, the package was downgraded in https://github.com/facebook/react-native/pull/50625 because of Node.js version requirement/mismatch, but now that (as far as I understand it), React Native uses Node.js v22+, it's fine to upgrade.
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[Internal] [Changed] - Update markdownlint-rule-relative-links to v5.1.0
Pull Request resolved: https://github.com/facebook/react-native/pull/55866
Test Plan: `lint-markdown` script still work.
Reviewed By: NickGerleman
Differential Revision: D95055797
Pulled By: cipolleschi
fbshipit-source-id: 60837b2efffdf20cf43fd9a174e40e6077f8a313
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55543
@public
This diff updates several Babel packages to their latest versions:
- `babel/code-frame`: 7.29.0
- `babel/generator`: 7.29.1
- `babel/parser`: 7.29.0
- `babel/template`: 7.28.6
- `babel/traverse`: 7.29.0
- `babel/types`: 7.29.0
Not bumping `core` or `runtime` here because they're a bit more involved, and I'm mainly interested in `traverse`. The packages here are the closure of traverse's dependency graph.
Changelog: [Internal]
Reviewed By: yungsters
Differential Revision: D92983519
fbshipit-source-id: 9f2e71fb5d453606c697d52539f0056b7a29bc45