Skip to content

chore(0.85): merge up to 0.85.3 from upstream branch#3034

Draft
Saadnajmi wants to merge 77 commits into
microsoft:0.85-mergefrom
Saadnajmi:0.85/release
Draft

chore(0.85): merge up to 0.85.3 from upstream branch#3034
Saadnajmi wants to merge 77 commits into
microsoft:0.85-mergefrom
Saadnajmi:0.85/release

Conversation

@Saadnajmi

Copy link
Copy Markdown
Collaborator

Summary

Merge the pinned React Native 0.85-stable tip 2049278a5a76fbebf27b2b86f58ce865b673ba14 (0.85.3) into the certified React Native macOS 0.85 result dcd3d60324c220393aae7729bb538235f3c70416.

This is the separate 0.85 release line. It does not merge stable into mainline. Keep the PR based on temporary 0.85-merge; after the 0.85 merge lands, retarget optimistically to the future 0.85-stable.

Topology

  • Final head: c0432521ee7f67ac6082270a6e7d429a7c33f36d
  • Mechanical merge: f46b40d88327b1f8e2b24e863f022b17ff6a0309
  • Ordered parents: dcd3d60324c220393aae7729bb538235f3c70416, then 2049278a5a76fbebf27b2b86f58ce865b673ba14
  • Stable range: 59 commits after b5c815c1ca794ae5d1c0cb8b23e94418b7a4b140
  • Remote drift: none; fork and Microsoft 0.85-merge both remained at the certified parent

Conflict resolution

Initial Jujutsu state: 28 paths / 56 sides / 84 terms / 102 textual hunks / 0 deletion conflicts.

Class Paths Decision
Mechanical package/version metadata 20 Semantic three-way merge; preserve fork identities/workspace links and accept stable dependency changes.
Independent combine 2 Combine stable SwiftPM/WebSocket behavior with macOS platform source selection and nil-URL safety.
Generated 4 Hold the local lock baseline at the mechanical boundary, then regenerate Yarn/CocoaPods; take exact stable Hermes pins.
Structural rename/delete 1 Accept the stable RedBox split, then port AppKit behavior into extracted controllers and gate new UIKit-only V2 code.
Stale local 1 Remove redundant fmt tags and the duplicate Folly source now owned upstream.

Meaningful follow-ups:

  • Seed react-native-macos and @react-native-macos/virtualized-lists at 0.85.0-rc0; add a patch Changeset and exact react-native: 0.85.3 peers.
  • Preserve stable WebSocket provider injection inside the macOS nil-URL guard.
  • Port legacy RedBox AppKit UI to extracted files; disable UIKit-only RedBox V2/frame timing on macOS.
  • Pin Hermes V1 to 250829098.0.10 and recompose the standalone macOS framework into the universal XCFramework.
  • Restore Codegen absolute-path portability and exact release workspace/Metro versions under strict pnpm linking.
  • Compile exactly one legacy interop coordinator implementation per target.

Layered commits

  1. f46b40d8 mechanical two-parent merge
  2. d5e99e14 extracted RedBox macOS port
  3. 6864d743 Changesets release preparation
  4. d17d2200 Yarn regeneration
  5. 0097d30f Hermes CocoaPods V1 mapping
  6. 5c41fcaa CocoaPods regeneration
  7. 77274e27 API snapshot regeneration
  8. d01cf317 diff-tag correction
  9. ea061efa release workspace versions
  10. d3eb3f72 stable Apple feature gates
  11. 2618ca41 release dependency refresh
  12. f4d0b4bc codegen snapshot regeneration
  13. 1538f9be Changesets base remote fix
  14. 2b57c6c8 Codegen path portability
  15. 87e71425 Metro stable alignment
  16. 0ed40f89 Metro lock refresh
  17. ee2661e3 pinned/recomposed Hermes V1 prebuild
  18. c0432521 legacy interop platform ownership

Validation

All final gates passed from a fresh exported Git checkout:

  • immutable Yarn install, constraints, yarn change:check, and yarn changeset status --since=upstream/0.85-merge
  • generated types/API and snapshots clean
  • 282 Jest suites, 5,631 tests, and 1,826 snapshots
  • Flow, ESLint, Prettier, TypeScript, and generated TypeScript
  • iOS prebuild tests/syntax
  • Bundler/CocoaPods with deterministic lock topology
  • both Swift package dumps
  • isolated prebuild setup plus iOS, iOS simulator, macOS, visionOS, and visionOS simulator slices
  • RNTester macOS, iOS simulator, and visionOS simulator builds
  • exact DAG/parents, unique Change IDs, object connectivity, marker scan, trailers, and clean export

Evidence is under artifacts/release-stack/0.85-stable/, including the command transcript, per-hunk resolution ledger, layered commit map, diff-tag inventory, multiline-condition capture, and per-gate logs.

Diff-tag gate

The canonical guide remains byte-identical (79f533c26acf8e23bc2ea09d74d744aa16a1ed0b0ceecd026665af4a0f7d4d4c). The final scoped audit covers 72 paths: 29 tagged, 37 metadata/generated exemptions, 6 upstream-equal, and zero pairing, preprocessor-pattern, or macOS-file marker issues.

Independent judge requirement: re-audit the actual retained/new fork differences and full multiline conditions. Fail this execution for any untagged or mistagged difference, stale tag, missing file-level marker, or non-minimal rewrite of an upstream condition.

Complete conflict-path inventory

  1. package.json
  2. packages/babel-plugin-codegen/package.json
  3. packages/community-cli-plugin/package.json
  4. packages/dev-middleware/package.json
  5. packages/eslint-config-react-native/package.json
  6. packages/eslint-plugin-specs/package.json
  7. packages/jest-preset/package.json
  8. packages/metro-config/package.json
  9. packages/react-native/Package.swift
  10. packages/react-native/React/CoreModules/RCTRedBox.mm
  11. packages/react-native/React/CoreModules/RCTWebSocketModule.mm
  12. packages/react-native/gradle/libs.versions.toml
  13. packages/react-native/package.json
  14. packages/react-native/sdks/.hermesv1version
  15. packages/react-native/sdks/.hermesversion
  16. packages/react-native/third-party-podspecs/RCT-Folly.podspec
  17. packages/react-native/third-party-podspecs/fmt.podspec
  18. packages/react-native-babel-preset/package.json
  19. packages/react-native-babel-transformer/package.json
  20. packages/react-native-compatibility-check/package.json
  21. packages/react-native-popup-menu-android/package.json
  22. packages/rn-tester/Podfile.lock
  23. packages/rn-tester/package.json
  24. packages/virtualized-lists/package.json
  25. private/helloworld/package.json
  26. private/react-native-codegen-typescript-test/package.json
  27. scripts/releases/ios-prebuild/configuration.js
  28. yarn.lock

alanleedev and others added 30 commits March 2, 2026 09:40
The build_android workflow was incorrectly using for dry-run
builds on stable branches (e.g., 0.85-stable), causing it to append  suffix
to the Hermes version. This resulted in trying to fetch non-existent SNAPSHOT artifacts
like in https://github.com/facebook/react-native/actions/runs/22592250332/job/65471130298.
This fix adds a check to detect stable branches (via github.ref_name or github.base_ref)
and uses  instead, which fetches the stable Hermes release from
Maven Central without the -SNAPSHOT suffix.

We check both github.ref_name and github.base_ref to cover two scenarios:
ref_name: Direct pushes to stable branches (e.g. pushing to 0.85-stable)
base_ref: Pull requests targeting stable branches (e.g. cherry-pick PRs where the source branch isn't named -stable but the target isChangelog: [Internal]
#publish-packages-to-npm&next
Summary:
Pull Request resolved: react#55925

Accidentally clobbered in D93247603. This affects the `fuseboxAssertSingleHostState` feature (react/react-native-devtools-frontend#218).

Changelog: [Internal]

Reviewed By: vzaidman

Differential Revision: D95365621

fbshipit-source-id: 0df7f7bb33bb6bf6eabe15c8ee06c1761567c84b
Summary:
Pull Request resolved: react#55613

The cloneMultiple method was written in a way to accept a list of families that are presumed to be owned by the api caller. This designe was mostly aimed at reanimated, that holds refernces to ShadowNodes (that own these families). In the case of AnimationBackend this didn't work properly, as when the view is unmounted we would lose the ShadowNodeFamily shared_ptr that we hold and it could get deallocated.

Since now we can get an owning reference to ShadowNodeFamily from ShadowNode::getFamilyShared, we don't have to keep this old unsafe api. Instead we require the caller to have an owning reference with the api itself.

This `cloneMultiple` method isn't really adopted in the community, so the breaking change shouldn't be a big problem.

Changelog:
[General][Breaking] - fix unsafe rawPointer access in cloneMultiple.

Reviewed By: zeyap, javache

Differential Revision: D93596770

fbshipit-source-id: c4d99b51875968ebce50358c19502cba02c50685
Summary:
Pull Request resolved: react#55729

This is added so that one can easily enables c++ AnimatedModule in open source.

If an app doesn't use `RCTAnimatedModuleProvider`(ios) or `AnimatedCxxReactPackage`(android), it can fallback to this default AnimatedModule when it has both c++animated and shared backend enabled
- shared backend removes the need to pass down start/stop callbacks to NativeAnimatedNodesManagerProvider, so we can cleanly initialize it as static default
  -  RCTAnimatedModuleProvider uses the version of AnimatedModule that still relies on a dedicated CADisplayLink for start/stop
  - AnimatedCxxReactPackage also bundles internal ViewEventModule (for NativeViewEvents) that shares `NativeAnimatedNodesManagerProvider` with AnimatedModule, but NativeViewEvents is not needed for open source
    - Alternatively we could also expose `NativeAnimatedNodesManagerProvider` via UIManager so other turbomodules can also use it. However I don't think it makes sense to double down on another animation API on UIManager given we have shared backend.
- This assumes DefaultTurboModules is always the fallback module provider. So it'll not override when app already uses RCTAnimatedModuleProvider or AnimatedCxxReactPackage

[General] [Added] - Add c++ AnimatedModule to DefaultTurboModules

Reviewed By: NickGerleman

Differential Revision: D94244698

fbshipit-source-id: 09e905eb4bad7d03cdf87d5b47352060b0e6212f
#publish-packages-to-npm&next
…t#56005)

Summary:
Pull Request resolved: react#56005

Changelog: [Internal]

The build_debugger_shell CI job was failing because build-binary.js
expects pkg.main to start with ./dist/, but without --prepack the
prepack.js script never runs, so main stays as ./src/index.js.

This was caused by a series of PRs:
- PR react#54857 refactored debugger-shell/package.json to use the
  publishConfig pattern, moving main from ./dist/index.js to
  ./src/index.js.
- PR react#55415 added the --prepack flag to build.js to support this.
- PR react#55416 added the build_debugger_shell CI job but ran yarn build
  without --prepack.

The fix passes --prepack to yarn build so that prepack.js rewrites
package.json main to ./dist/index.js before build-binary.js runs.

Reviewed By: huntie

Differential Revision: D95818417

fbshipit-source-id: 03c8340c415960c3937b13bdea3952798d2d420e
Summary:
Pull Request resolved: react#56100

## Changelog:

[iOS] [Fixed] - Revert RCTAnimatedModuleProvider change from D94244698

D94244698 added a guard in RCTAnimatedModuleProvider that returns nullptr
when useSharedAnimatedBackend() is true, expecting DefaultTurboModules to
handle AnimatedModule creation instead.

However, on iOS the TurboModule resolution chain in RCTReactNativeFactory
delegates to the app-provided getTurboModule:jsInvoker: and returns whatever
the delegate returns — even nullptr — without falling through to
DefaultTurboModules.

This causes `Invariant Violation: Native animated module is not available`
on any surface using Animated.View (e.g. Marketplace PDP) when
react_fabric.enable_shared_animated_backend_ios is enabled.

Revert the RCTAnimatedModuleProvider change from D94244698 so it always
provides AnimatedModule when cxxNativeAnimatedEnabled is true, regardless
of useSharedAnimatedBackend. The shared backend path in DefaultTurboModules
still exists as fallback for non-iOS platforms.

Reviewed By: christophpurrer

Differential Revision: D96611917

fbshipit-source-id: e01cf5c80dc4cbf30afac6bcf414616c15bfaddb
#publish-packages-to-npm&next
#publish-packages-to-npm&next
#publish-packages-to-npm&next
#publish-packages-to-npm&next
Summary:
When building React.XCFramework we build and link all source files in the XCFramework directly. To avoid Cocoapods to include the same files, we use a Ruby utility function called `podspec_sources` that will emit onlh header files when using (consuming) the build React.XFramework.

When running RN-Tester after building it using the following pod install command line we have effectively linked with the prebuilt XCFrameworks instead of building from source:

`# RCT_USE_RN_DEP=1  RCT_USE_PREBUILT_RNCORE=1 RCT_DEPS_VERSION=nightly RCT_TESTONLY_RNCORE_VERSION=nightly  bundle exec pod install`

The log in XCode will show an issue with duplciate symbols:

```
oobjc[2551]: Class _TtC10RCTSwiftUI23RCTSwiftUIContainerView is implemented in both xxxx/Library/Develope
r/CoreSimulator/Devices/72157AA1-8D26-424E-8C2E-62D701E70B4A/data/Containers/Bundle/Application/3C711879-443E-48F1-B422-740E7AE82A74/RNTester.app/Frameworks/React.framework/React (0x108d3fb90) and
xxx/Library/Developer/CoreSimulator/Devices/72157AA1-8D26-424E-8C2E-62D701E70B4A/data/Containers/Bundle/Application/3C711879-443E-48F1-B422-740E7AE82A74/RNTester.app/RNTester.debug.dylib
(0x1039ef780). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[2551]: Class _TtC10RCTSwiftUI18ContainerViewModel is implemented in both xxx/Library/Developer/CoreSimulator/Devices/72157AA1-8D26-424E-8C2E-62D701E70B4A/data/Containers/Bundle/Applicatio
n/3C711879-443E-48F1-B422-740E7AE82A74/RNTester.app/Frameworks/React.framework/React (0x108d43b98) and
xxx/Library/Developer/CoreSimulator/Devices/72157AA1-8D26-424E-8C2E-62D701E70B4A/data/Containers/Bundle/Application/3C711879-443E-48F1-B422-740E7AE82A74/RNTester.app/RNTester.debug.dylib
(0x1039f0288). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
```

This is because the RCTSwiftUI.podspec is missing using the `podspec_sources` function when setting up its source files:

```
s.source_files = "*.{h,m,swift}"
```

This will cause Xcode to both link with the XCFramework and compile the sources for this podspec once more - causing an app with duplicate symbols.

After applying this fix, the same test as above shows no duplicate symbols.

## Changelog:

[IOS] [FIXED] - Fixed duplicate symbol error when using React.XCFramework

Pull Request resolved: react#56139

Test Plan:
Run RN-Tester using the following pod install command line, causing us to link with the prebuilt XCFrameworks instead of building from source:

`# RCT_USE_RN_DEP=1  RCT_USE_PREBUILT_RNCORE=1 RCT_DEPS_VERSION=nightly RCT_TESTONLY_RNCORE_VERSION=nightly  bundle exec pod install`

Build/run the app, observe that the duplicate symbol message is gone.

Reviewed By: alanleedev

Differential Revision: D97317019

Pulled By: cipolleschi

fbshipit-source-id: 032113ad00890f712a6c70c3bd903f545f75aba1
Summary:
Follow-up to
- react#47033
- react#50431

TODO
- [x] bump packages/react-native/third-party-podspecs/fmt.podspec
- [x] bump scripts/releases/ios-prebuild/configuration.js
- [x] packages/react-native/third-party-podspecs/RCT-Folly.podspec
- [x] packages/react-native/gradle/libs.versions.toml
- [x] packages/rn-tester/Podfile.lock
  - rn-rester (main) ios not building on Xcode 26.3, CI currently only supports Xcode 16
  - i cannot downgrade macos26.4b4 locally to macos15 to install Xcode16.4 and bump pods this way
  - so on Xcode 26.3 i've attempted to bump only fmt minimally, ignoring remaining RN 0.86 hashes

Ref: https://github.com/search?q=repo%3Afacebook%2Freact-native+%2211.0.2%22&type=code

however unable to test rn-tester, ios doesn't seem to build on Xcode 26.3 let alone 26.4b
not tested previous versions of Xcode
not tested prior branches/tags to main

rn-tester CI is passing on old macos-15 Xcode 16.4.0 only, ideally this should be extended to stable macos lts and Xcode 26.3 stable first

separate follow-ups to this minimal fmt bump
- bump CI macos-15 xcode 16.1-4 to macos-26 xcode 26.0-3
- bump rn-tester Podfile.lock from RN 0.82 to 0.86 main (aka nightly)
- bump folly to 2025.11.03.00
- bump folly to 2026.03.09.00

Resolve: react#55601

[General][Changed] Bump fmt to 12.1.0 to fix Xcode 26.4

Pull Request resolved: react#56099

Test Plan: RNTester

Reviewed By: alanleedev

Differential Revision: D97358194

Pulled By: cipolleschi

fbshipit-source-id: 3eb578a99a310e3eb77433692bf35502d0d78d24
#publish-packages-to-npm&next
…eact#56265)

Summary:
Pull Request resolved: react#56265

When an async void TurboModule method throws an NSException,
performVoidMethodInvocation calls convertNSExceptionToJSError which
accesses the Hermes JSI runtime from the native method call invoker
thread. Since jsi::Runtime is not thread-safe, this causes heap
corruption and EXC_BAD_ACCESS crashes across various hermes::vm::*
functions.

The sibling function performMethodInvocation was already fixed in
D71619229 to re-throw the ObjC exception instead of converting to
JSError when the call is async. This applies the same fix to
performVoidMethodInvocation, which is always async.

Related to SEV S641230 (4,550+ Hermes crashes in AMA iOS from OTA
bundle 921191722). A JS change behind a QE/MC gate is triggering an
NSException in a void TurboModule method for non-employee users, and
this bug turns that into widespread memory corruption. This fix
prevents the crash, but the triggering diff and throwing TurboModule
still need to be identified separately.

Matches upstream GitHub issue: https://github.com/facebook/hermes/issues/1957Commits affecting the React Native open source repository must have a changelog
entry in the commit summary. Every React Native release has almost 1000 commits,
and manually categorizing these commits is very time consuming.

 ---

Changelog:
[iOS][Fixed] - Fix Hermes crash when async void TurboModule method throws NSException by re-throwing instead of converting to JSError on wrong thread

Reviewed By: javache

Differential Revision: D98660782

fbshipit-source-id: bdedc769f17d9aec4156c45d0286c6c31ca006e4
…ct#56151)

Summary:
When building React Native (`0.85.0-rc.5`) core from source (`RCT_USE_PREBUILT_RNCORE=0`), the `React-Fabric/animated` CocoaPods subspec flattens the `event_drivers/` subdirectory headers because `header_mappings_dir` is not set.

CocoaPods' `header_dir` without `header_mappings_dir` places all matched headers directly under the specified directory, losing any subdirectory structure. This means `event_drivers/EventAnimationDriver.h` ends up at `react/renderer/animated/EventAnimationDriver.h` instead of `react/renderer/animated/event_drivers/EventAnimationDriver.h`.

The `#include` in `NativeAnimatedNodesManager.h` expects the full path with the `event_drivers/` subdirectory, so the build fails with:

```
'react/renderer/animated/event_drivers/EventAnimationDriver.h' file not found
```

<img width="1512" height="1012" alt="Screenshot 2026-03-19 at 13 54 29" src="https://github.com/user-attachments/assets/49361c39-d48f-494f-ad7a-c9f3e9749a67" />

This doesn't affect prebuilt (`RCT_USE_PREBUILT_RNCORE=1`) builds because the xcframework ships with a VFS overlay that maps headers correctly.

The fix adds `header_mappings_dir` to the `animated` subspec in `React-Fabric.podspec`, which tells CocoaPods to preserve the directory structure relative to `react/renderer/animated`.

## Changelog:

[IOS] [FIXED] - Fix `EventAnimationDriver.h` not found when building React Native from source due to missing `header_mappings_dir` in `React-Fabric/animated` podspec

Pull Request resolved: react#56151

Test Plan:
1. Set `RCT_USE_PREBUILT_RNCORE=0` in your Podfile
2. Run `pod install`
3. Build the project — previously fails with `'react/renderer/animated/event_drivers/EventAnimationDriver.h' file not found`
4. With this fix, the build succeeds

Reviewed By: sammy-SC

Differential Revision: D97295771

Pulled By: zeyap

fbshipit-source-id: 945fbdeef1d25cedbec1e5b2d60c5a940da85840
…eact#56215)

Summary:
When testing React Native nightlies, we got the following error from `react-android-0.86.0-nightly-20260325-d1809f0aa-SNAPSHOT-release`:

```
StateWrapperImpl.h:14:10: fatal error: 'react/uimanager/StateWrapper.h' file not found
```

The reason is that build.gradle.kts exports src/main/jni/react/fabric → react/fabric/ in the prefab headers, which includes StateWrapperImpl.h. That header does #include <react/uimanager/StateWrapper.h>, but src/main/jni/react/uimanager is not in the prefab export list — so the header is missing from the AAR.

This was introduced in react#55288 where they modified StateWrapperImpl.h to inherit from StateWrapper and added the #include on StateWrapper.h.

This has caused Expo's nightlies to break due to the missing header file in the prefabs:

- Internally (when RN builds itself): Works fine because all JNI source dirs are on the include path
- Externally (when consumers use the published AAR): StateWrapperImpl.h is included in the prefab, it references <react/uimanager/StateWrapper.h>, but that header doesn't exist in the prefab package

## Fix

This commit fixes the above problem by including `src/main/jni/react/uimanager` in the prefab.

## Changelog
[Internal] -

Pull Request resolved: react#56215

Test Plan:
I have tested and verified this by running this in the root of the repo:

```
./gradlew :packages:react-native:ReactAndroid:preparePrefab
ls packages/react-native/ReactAndroid/build/prefab-headers/reactnative/react/uimanager/
```

Before the fix the uimanager folder was not found, with the fix it exists and contains the following files: ComponentNameResolverBinding.h  StateWrapper.h  UIConstantsProviderBinding.h

## Changelog:

[ANDROID] [FIXED] - Fixed missing StateWrapper.h header in prefabs

## Potential Issues

There might be an issue with exporting these files in addition to the missing StateWrapper.h - but it seems like this is an issue with other folders in the jni / prefab - everything in a folder is exported when included for prefab.

Reviewed By: alanleedev

Differential Revision: D98124025

Pulled By: cipolleschi

fbshipit-source-id: c8ae35e77652b90477d17ea8cab48ce3ee84d067
#publish-packages-to-npm&next
motiz88 and others added 30 commits May 1, 2026 16:55
…t#56642)

Syncs debugger-frontend to the `0.85-stable` branch of
react-native-devtools-frontend.

react/react-native-devtools-frontend@8edd9be...194d3f8
Summary:
Pull Request resolved: react#55974

Add RCTDevSupportHeaders in React Umbrella

This is a port to main of react#55969

## Changelog:
[Internal] -

Reviewed By: fabriziocucci

Differential Revision: D95550095

fbshipit-source-id: 193d0d2c85ad074c73cf37a2870ccadcc877b290

Co-authored-by: Riccardo Cipolleschi <cipolleschi@meta.com>
Co-authored-by: Riccardo Cipolleschi <cipolleschi@meta.com>
…react#55797) (react#56644)

Summary:
On EdenFS, `tar -xf` extraction directly into an EdenFS-mounted directory silently produces incomplete results — only the first slice of the tarball (ios-arm64) gets extracted, while the remaining entries (catalyst, simulator, top-level Headers) have their directories created but files are missing. The `replace-rncore-version.js` script didn't check tar's exit code, so it would write the config file and subsequent builds would skip re-extraction.

This fix extracts the tarball to a temporary directory on a regular filesystem first, verifies the extraction succeeded (exit code + expected file check), then moves the results into the final location. This is adapted from D94625297 (which targeted 0.83) to work with the current main branch, preserving the v0.84 behavior of only deleting subdirectories in `React-Core-prebuilt` (keeping files like `React-VFS.yaml`).

## Changelog:

[IOS] [FIXED] - Fix silent tar extraction failure on EdenFS in replace-rncore-version.js by extracting to a temp directory first

Pull Request resolved: react#55797

Test Plan: Validated by the original patch author on EdenFS in D94625297. The logic is equivalent, adapted for the v0.84 code which preserves files in the target directory.

Reviewed By: cortinico

Differential Revision: D94653392

Pulled By: cipolleschi

fbshipit-source-id: f2f1956b434586f0a83e1ec648a03dbac25333f5

Co-authored-by: Riccardo Cipolleschi <cipolleschi@meta.com>
react#56600)

Summary:
Pull Request resolved: react#56600

This picks react#55919 into 0.85-stable, as we'll be testing this feature in apps using 0.85.

Changelog: [Internal] - Not needed. It's gated behind a feature flag that's disabled by default.

Test Plan: Tested e2e on Android and iOS using RN Tester. Everything compiles correctly.

Reviewed By: Abbondanzo, sammy-SC, javache

Differential Revision: D95223862

fbshipit-source-id: e19dd163e5f7fecd9ef28b79be61455f0993a3c4

Co-authored-by: Rubén Norte <rubennorte@meta.com>
Summary:
Pull Request resolved: react#56640

Cherry-pick of 13 commits from `main` (and 1 from `0.83-stable`) adding the experimental RedBox 2.0 implementation for iOS to `0.85-stable`, plus supporting build fixes.

Changes included:
- Add per-platform `redBoxV2IOS` / `redBoxV2Android` feature flags
- Extract `RCTRedBoxController` from `RCTRedBox.mm` (react#56509)
- Add LogBox-styled error overlay (react#56550)
- Add shared C++ error parser and ANSI renderer (react#56553)
- Show syntax-highlighted code frames (react#56551)
- Mark all errors as retryable (react#56552)
- Auto-reload on retryable errors (react#56549)
- Attempt to clear RedBox by automatically reloading on Metro file change (react#56554)
- Fix truncated filenames in call stack frames (react#56565)
- Guard tvOS-unavailable APIs in `RCTRedBox2Controller` (react#56568)
- Fix C++ syntax in Objective-C header breaking React module build (react#56569)
- Add `redbox` subspec to `React-debug` pod (react#56584) — from `0.83-stable`, needed for static library builds
- Fix React-CoreModules missing `React-featureflags` header path under `use_frameworks!` (react#56591)

All RedBox 2.0 features gated behind the `redBoxV2IOS` feature flag (disabled by default).

Changelog: [Internal]

Test Plan:
- CI
- Feature is behind `redBoxV2IOS` flag, disabled by default

Co-authored-by: Moti Zilberman <moti@meta.com>
#publish-packages-to-npm&latest
Summary:
Pull Request resolved: react#56211

The `removeClippedSubviews` prop toggle path in `RCTViewComponentView` did not
handle being turned off: children that were clipped (removed from superview)
remained invisible, and `_reactSubviews` became stale.

This diff:
- Adds `_updateRemoveClippedSubviewsState` helper that ensures consistent state
  when toggling. On toggle-off, re-mounts all children from `_reactSubviews` in
  the correct order and clears the tracking array.
- Makes the unmount path resilient by cleaning up `_reactSubviews` even when
  `removeClippedSubviews` is off.
- Splits the unmount assert into two distinct messages: "not mounted" vs
  "mounted inside a different view".
- Adds unit tests covering toggle-off re-mounting, ordering, cleanup, and
  unmount-after-toggle scenarios.

Changelog: [iOS][Fixed] Fixes crash when changing the value of `removeClippedSubviews`

Reviewed By: sbuggay

Differential Revision: D97971845

fbshipit-source-id: c5d0a99e632a23613cc5e05bcf00c2985c30d5b4
…t-native (react#57167)

Backport of react#57167 to 0.85-stable.

Update GitHub Actions workflow fork-prevention guards
(github.repository == ...) and the monitor-new-issues repo_owner
parameter to reflect React Native's migration from
facebook/react-native to react/react-native.

This is the equivalent of upstream commit
861d8e0; applied manually because the
workflow files have diverged on this branch and a direct cherry-pick
conflicts.
Backport of react#57216 to 0.85-stable.

Move CI jobs off the timing-out 4-core-ubuntu / 8-core-ubuntu runners
to ubuntu-latest across the Android, fantom, build and publish
workflows. macOS runners are unchanged.

This is the equivalent of upstream commit
097dbc2; applied manually because the
workflow files have diverged on this branch and a direct cherry-pick
conflicts.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.