Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55696
Changelog: [Internal]
Unifies different methods of parsing doxygen text outputs into a single method, able to resolve nested references.
Reviewed By: cipolleschi
Differential Revision: D94077808
fbshipit-source-id: 494ee4da7380e17a60bbdae8e552f1c3827c1130
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55650
Changelog: [Internal]
Updates the C++ snapshot generation script to correctly handle brace-initialized values. It also adds `STORE_INITIALIZERS_IN_SNAPSHOT` which can be used to enable/disable presence of initializers in the API snapshot.
Reviewed By: cortinico
Differential Revision: D93845131
fbshipit-source-id: 06872e705305ced0c46779f4a97c674f26417ff5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55697
Changelog: [Internal]
Implements fallback name qualification for cases where doxygen doesn't extract the full qualified name, and instead passes on the string it found in the header file.
- Adds type_qualification.py with qualify_type_str(), qualify_arguments(), and qualify_parsed_type()
- Updates member.py with close() methods for VariableMember, FunctionMember, and TypedefMember to apply type qualification
- Updates main.py with get_doxygen_params() to extract structured parameter info
Reviewed By: cipolleschi
Differential Revision: D94077825
fbshipit-source-id: 2265f5573164af1af129014082fc44fb8fceb135
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55698
Changelog: [Internal]
Refactors utils.py into a proper package structure and adds comprehensive argument string parsing utilities.
- Converts utils.py to utils/ package with submodules
- Adds argument_parsing.py with parse_arg_string() and related utilities
- Adds qualified_path.py with parse_qualified_path moved from old utils.py
- Renames test_member.py to test_parse_arg_string.py with updated tests for the new 4-tuple Argument format
Reviewed By: cipolleschi
Differential Revision: D94077819
fbshipit-source-id: 460d7a44e6d3e55580d996877ca63fa0c777bc23
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55725
changelog: [internal]
By default, `yarn fantom` now excludes benchmark tests (`*-benchmark-itest.js` files) to speed up regular test runs.
Benchmark tests are typically slower and used for performance analysis rather than correctness testing. Excluding them by default improves the developer experience for everyday test runs.
To run benchmark tests, use the new `--benchmarks` flag:
```
yarn fantom --benchmarks
```
Reviewed By: andrewdacenko
Differential Revision: D92150163
fbshipit-source-id: 4c40ef1ba542c4856221373d8239ba603e8f6620
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55642
Changelog: [Internal]
Adds a configuration file for the snapshot generation, allowing to create multiple views of the API and different flavors.
It also adds option to include codegen in the snapshot generation. Codegen needs to be executed first, and the path to its output needs to be passed when running the generation.
Reviewed By: cipolleschi
Differential Revision: D92958731
fbshipit-source-id: 42780d25b2bc04f213e697cca0b6bde07d94ca59
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55695
Changelog: [Internal]
Adds support for handling concepts in the C++ API parser.
Reviewed By: NickGerleman
Differential Revision: D94074054
fbshipit-source-id: 5e8ef0b0d4d1eeb93554558bb7f80cd67d622a72
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55693
Changelog: [Internal]
Adds support for handling template params in the C++ API parser.
Reviewed By: cipolleschi
Differential Revision: D94074045
fbshipit-source-id: b758a8ceb7f95e8a1acf0983afa0c65aeec6b756
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55694
Changelog: [Internal]
Adds support for handling type aliases in the c++ API snapshot
Reviewed By: cipolleschi
Differential Revision: D94074032
fbshipit-source-id: 8af8bc88e884f4b1b7f7394d1316776cc9d50d6b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55692
Changelog: [Internal]
Adds support for handling functions and methods in the C++ API parser
Reviewed By: cipolleschi
Differential Revision: D94073981
fbshipit-source-id: 1c22a8cd4584868a220974335b321d523e6a3dc2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55691
Changelog: [Internal]
Adds support for handling enums in the C++ API parser.
Reviewed By: cipolleschi
Differential Revision: D94073960
fbshipit-source-id: 2c726f5ac5c33c66950463760e2592064d812400
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55640
Changelog: [Internal]
Adds a simple script going over the doxygen output and a test harness for snapshot testing.
Reviewed By: cipolleschi
Differential Revision: D90959837
fbshipit-source-id: fde0c1116b7c0fc10e43484e2b57ead79af706b8
Summary:
Recently added `react-native/jest-preset` package is an optional peer dep to the main `react-native` package. However, it's version dep is not updated correctly for nightly builds.
Peer dep version for [latest nightly](https://www.npmjs.com/package/react-native/v/0.85.0-nightly-20260219-44901aaf9?activeTab=code) is :
```
"peerDependencies": {
"eact-native/jest-preset": "0.84.0-main",
// ....
},
```
From my analysis this is because publishing scripts only update `deps` and `devDeps` but not `peerDeps`. Proposed change adds `peerDeps` to the list of potential deps locations to update
## 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] [FIXED] - Fix peer deps version to `react-native/jest-preset`.
Pull Request resolved: https://github.com/facebook/react-native/pull/55630
Reviewed By: cipolleschi
Differential Revision: D93850121
Pulled By: huntie
fbshipit-source-id: 9f24cf302aa93c5b3721ebfd571171ee9e5af712
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55420
After https://github.com/facebook/react-native/pull/54857 (use of the "publishConfig" field), this check is no longer necessary, since `yarn build` will no longer make changes to any checked in files.
In the (expectedly) rare case that `yarn build --prepack` changes are committed (only intended for CI), Flow will also fail independently.
Changelog: [Internal]
Reviewed By: cipolleschi
Differential Revision: D92397786
fbshipit-source-id: 872cc91b62295cdb6d8c2799cffb8a4cadc4106e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55415
Add optional flag to JS build setup that includes running the `"prepack"` script step after build — allowing the net behaviour before https://github.com/facebook/react-native/pull/54857 to be conveninently switched to if needed.
This is motivated by fixing our internal CI action for `xplat/js/react-native-github/scripts/debugger-shell/build-binary.js` — which depends on a locally built + package.json-written package state (the latter of which no longer happened for `yarn build` by default).
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D92395174
fbshipit-source-id: 28806b3f3872306f2529d4bb5870acde584caf10
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55342
This was the old fantom location and no longer used.
Changelog: [Internal]
Reviewed By: zeyap
Differential Revision: D91680127
fbshipit-source-id: d0015ed1668065487c156eabe535e35e75c52d3f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55271
Changelog: [Internal]
During research for the Stable C++ Api project, I've noticed that doxygen isn't able to handle anonymous structs, producing weird results.
The only occurence of this pattern in the codebase was in the `ReactNativeVersion.h` file. This diff updates this file not to use that pattern.
Reviewed By: cortinico
Differential Revision: D91220998
fbshipit-source-id: 9fd2ec5fb811111a0f3c75bf442f95df4b06a04b
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/55186
This is an AI-assisted change to align the Flow definitions for the `child_process` module with the Node.js docs as at v24.
**New v18+ Features:**
1. **AbortSignal Support** (v18.0.0) - Process cancellation
- Added `signal?: AbortSignal` option to all async functions (exec, execFile, fork, spawn)
- Enables cancellation of child processes using `AbortController`
- Example: `const controller = new AbortController(); spawn('cmd', [], {signal: controller.signal}); controller.abort();`
- https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback
2. **Enhanced Process Properties** (v20.x)
- `spawnargs: Array<string>` - Full command-line arguments used to launch the process
- `spawnfile: string` - Executable file name of the child process
- `signalCode: string | null` - Signal that terminated the child process
- https://nodejs.org/api/child_process.html#subprocessspawnargs
**ChildProcess Class Updates:**
3. **Improved Property Types**
- `stdio` is now a properly typed tuple array with readonly modifier
- `channel` changed from `Object` to `mixed` for better type safety
4. **Enhanced Method Signatures**
- `kill(signal?: string | number): boolean` - Now returns boolean and accepts numeric signals
- `send()` overloads properly typed with `child_process$Serializable` messages
- `send()` accepts `keepOpen` option: `Readonly<{keepOpen?: boolean}>`
- https://nodejs.org/api/child_process.html#subprocesskillsignal
**Option Type Improvements:**
6. **Modern Readonly Syntax** - All input options use `Readonly<{...}>`
- `execOpts`, `execFileOpts`, `forkOpts`, `spawnOpts`, `spawnSyncOpts`, etc.
- Allows passing readonly types safely
7. **Enhanced Environment Variables**
- Changed `env?: Object` to `env?: {[key: string]: string | void}`
- More precise typing for environment variable dictionaries
8. **New Fork Options** (IPC enhancements)
- `serialization?: 'json' | 'advanced'` - IPC serialization format
- `killSignal` and `timeout` options added to fork
- https://nodejs.org/api/child_process.html#child_processforkmodulepath-args-options
9. **Enhanced Spawn Options**
- Added `killSignal`, `timeout`, `serialization` to `spawnOpts`
- Better consistency across all spawn functions
**Return Type Fixes:**
10. **spawnRet/spawnSyncRet** - Made fields properly nullable:
- `status: number | null` - null if process never exited
- `signal: string | null` - null if not terminated by signal
- `error: Error | void` - void if no error occurred
- Removed spread operator for exact types
**Helper Types:**
11. **`child_process$Serializable`** - Union type for IPC messages:
- `string | number | boolean | bigint | {...} | Array<mixed>`
- Used in send() method signatures
12. **`child_process$SendHandle`** - Type for handle passing:
- `net$Server | net$Socket`
- Used for passing server/socket handles to child processes
**References:**
- Node.js child_process module docs: https://nodejs.org/api/child_process.html
- AbortSignal integration: https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback
Changelog: [Internal]
---
> Generated by [Confucius Code Assist (CCA)](https://www.internalfb.com/wiki/Confucius/Analect/Shared_Analects/Confucius_Code_Assist_(CCA)/)
[Confucius Session](https://www.internalfb.com/confucius?host=devvm45708.cln0.facebook.com&port=8086&tab=Chat&session_id=1a3aa26e-e5a9-11f0-8d47-71a4a90f0494&entry_name=Code+Assist), [Trace](https://www.internalfb.com/confucius?session_id=1a3aa26e-e5a9-11f0-8d47-71a4a90f0494&tab=Trace)
Reviewed By: vzaidman
Differential Revision: D89944331
fbshipit-source-id: 744ae04051c2214d97269c48c115060f5f30fb1f
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:
This change makes Hermes V1 the default engine for React Native for both platforms. This change needs to land before the branch cut of react native 0.84
bypass-github-export-checks
## Changelog:
[iOS][Changed] - Make Hermes V1 the default engine for iOS
Pull Request resolved: https://github.com/facebook/react-native/pull/54989
Test Plan:
1. Run `bundle exec pod install` and verified that Hermes V1 is used when building from source
<img height="480" alt="Simulator Screenshot - iPhone 17 Pro - 2025-12-29 at 11 28 44" src="https://github.com/user-attachments/assets/0889f16c-f2ee-4a0e-9a4d-529dd82c8283" />
2. Run `prebuild-ios -s` and verified that the scripts downloads the Hermes V1 tarball
<img width="831" height="324" alt="Screenshot 2025-12-29 at 10 37 53" src="https://github.com/user-attachments/assets/9a60565e-1e13-4967-a4a4-dd079e6b040f" />
3. GHA and nightlies
Reviewed By: vzaidman, cortinico, huntie
Differential Revision: D89881943
Pulled By: cipolleschi
fbshipit-source-id: 958b6d31bd4230ba4a5c7fee2bffc19e03dcbc89
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55034
Delete the `yarn print-packages` script.
- `yarn workspaces info` already exists.
- Since implementing lockstep versioning, all pkg versions are at a single version string (or `0.0.0` for private).
- This script also offers npm lookups for older versions — same assertion goes.
- Since adding the `private/` directory, the public/private package delineation is increasingly clear on its own (remaining exception: RNTester).
Changelog: [Internal]
Reviewed By: cortinico, cipolleschi
Differential Revision: D90106362
fbshipit-source-id: bbba97984a80473f92b331cb68d01b5ad00a2b55
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:
### Motivation
Updates the shared JavaScript build setup to use the modern `publishConfig` convention.
This:
- Simplifies the build script.
- Makes the production values for `"exports"` more understandable in place (especially by separating from exports conditions).
- Prevents us from creating a dirty file state when running `yarn build`.
### Changes
- Add `publishConfig` to each `package.json` listing production `"exports"` targets.
- Add `scripts/build/prepack.js` script to action `publishConfig` (now on `npm pack`, `npm publish` exclusively).
- Remove `"exports"` rewriting (and un-rewriting safeguards) from build script.
**Note on `"prepack"`**
Slightly unfortunately, `publishConfig` doesn't work consistently between package managers currently, including npm — so this does not work implicitly (but may in future).
We're instead following `publishConfig` as a convention, and explicitly implementing a full copy (theoretically forking us towards pnpm and Yarn v4's approach).
However, I believe this is:
- Worthwhile, for the motivations above — and in particular being able to understand the final shape of `"exports"` (independent from the dimension of conditional exports, which may come into play later).
- Completely inspectable/maintainable as an explicit implementation (`scripts/build/prepack.js`).
Changelog: [Internal]
Pull Request resolved: https://github.com/facebook/react-native/pull/54857
Test Plan:
### CI
✅ GitHub Actions
### End-to-end release test script
(Note: Rebased on `0.83-stable` when tested)
```
yarn test-release-local -t "RNTestProject" -p "iOS" -c $GITHUB_TOKEN
```
{F1984106139}
✅ Test script runs `npm publish` on packages to a local proxy.
{F1984106146}
✅ Installed packages have `publishConfig` `"exports"` values applied
NOTE: ⬆️ This is **exactly** the same output as before.
{F1984106148}
✅ `/tmp/RNTestProject` runs using built + proxy-published + proxy-installed packages
Reviewed By: cipolleschi
Differential Revision: D88963450
Pulled By: huntie
fbshipit-source-id: f328252cf93a1f1039b79d7f369d1e6e7e5b4b52
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:
Pull Request resolved: https://github.com/facebook/react-native/pull/54704
This class is coming from Legacy Architecture and is no longer used so can be cleaned up.
Changelog:
[Internal] [Changed] -
Reviewed By: mdvacca
Differential Revision: D87925037
fbshipit-source-id: 30faffef0da2b7055a6d381b41dc72bead2dd8de
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54684
This diff removes the `RCTTurboModuleSyncVoidMethodsEnabled` feature flag and all related code that allowed TurboModule void methods to execute synchronously.
Changelog: [Internal]
Reviewed By: philIip
Differential Revision: D87865883
fbshipit-source-id: fa64e8105e8329a0b20bb1718dbc01b17464cd06