feat: merge 0.84-merge into main - #3030
Open
Saad Najmi (Saadnajmi) wants to merge 499 commits into
Open
Saad Najmi (Saadnajmi) wants to merge 499 commits into
Saad Najmi (Saadnajmi) wants to merge 499 commits into
Conversation
…ReactHost teardown (react#54712) Summary: Pull Request resolved: react#54712 ## Changelog: [iOS] [Added] - Allow invalidateDisplayLink on RCTAnimatedModuleProvider Reviewed By: sammy-SC Differential Revision: D87929762 fbshipit-source-id: 116661a96154cdf108e7c1a6e7f09f49275529b7
Summary: Pull Request resolved: react#54651 Break up ReactHost and TurboModuleManager, so in the future we can inject this more easily. Changelog: [Internal] Reviewed By: lenaic Differential Revision: D87774276 fbshipit-source-id: 02a896d66e3ab3c7fa01c383779aaa3a73aa39b8
) Summary: Pull Request resolved: react#54719 I *think* this is to blame for issues with HMRClient::setup() not being called in release builds. Changelog: [General][Removed] Revert react#54314 Reviewed By: vzaidman Differential Revision: D87982319 fbshipit-source-id: d80d2b33536466b67a8e205267c8037500ad4113
Summary: Pull Request resolved: react#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: react#54695 Add Flow typing for `fs.glob` APIs introduced in Node v22 Changelog: [Internal] Reviewed By: cipolleschi, vzaidman Differential Revision: D78668287 fbshipit-source-id: 769c22687b4dcd31a64b54d6825279287e558967
Summary: Chronos Job Instance ID: 1125908150042852 Sandcastle Job Instance ID: 27021600113417662 Processed xml files: android_res/com/facebook/audience/stories/storyviewer/res/values/strings.xml android_res/com/facebook/spherical/common/res/values/strings.xml android_res/com/facebook/ipc/stories/viewersheet/res/values/strings.xml android_res/com/facebook/audience/stories/settings/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/decorators/sendstate/res/values/strings.xml android_res/com/facebook/oxygen/preloads/integration/install/common/res/values/strings.xml android_res/com/facebook/messengerpromotions/res/values/strings.xml ../xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/strings.xml ../xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/res/systeminfo/values/strings.xml android_res/com/facebook/notifications/res/values/strings.xml android_res/com/facebook/events/create/loading/res/values/strings.xml android_res/com/facebook/messaginginblue/aibot/nux/launcher/res/values/strings.xml android_res/com/facebook/messenger/res/values/strings.xml android_res/com/facebook/messaging/threadsettings/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/decorators/usertiles/menuitem/block/res/values/strings.xml android_res/com/facebook/messaging/blocking/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/avatarquickreplies/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/res/values/strings.xml android_res/com/facebook/messaginginblue/sharesheet/components/externalsharingitem/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/viewcontroller/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/contextualreplies/res/values/strings.xml android_res/com/facebook/messaging/integrity/res/values/strings.xml android_res/com/facebook/messaging/business/montageads/res/values/strings.xml android_res/com/facebook/messaging/avatar/avatardetail/res/values/strings.xml android_res/com/facebook/messaging/pinnedgroups/res/values/strings.xml android_res/com/facebook/messaging/nux/res/values/strings.xml android_res/com/facebook/messaging/groups/plugins/core/threadsettingsmenuitem/res/values/strings.xml android_res/com/facebook/payments/p2p/res/values/strings.xml android_res/com/facebook/payments/p2p/verification/res/values/strings.xml android_res/com/facebook/payments/p2p/composer/res/values/strings.xml android_res/com/facebook/payments/p2p/awareness/res/values/strings.xml android_res/com/facebook/payments/connectivity/res/values/strings.xml android_res/com/facebook/orca/notify/res/values/strings.xml android_res/com/facebook/messaging/ui/name/res/values/strings.xml android_res/com/facebook/messaging/memories/res/values/strings.xml android_res/com/facebook/messaging/notify/util/res/values/strings.xml android_res/com/facebook/messaging/mute/res/values/strings.xml android_res/com/facebook/messaging/messengerprefs/res/values/strings.xml android_res/com/facebook/messaging/communitymessaging/notify/survey/res/values/strings.xml android_res/com/facebook/messaging/wellbeing/unknowncontact/messagerequests/res/values/strings.xml android_res/com/facebook/messaging/threadlist/ui/threaditem/snippet/res/values/strings.xml android_res/com/facebook/messaging/messagerendering/res/values/strings.xml android_res/com/facebook/messaging/business/messengerextensions/res/values/strings.xml android_res/com/facebook/messaging/business/commerce/res/values/strings.xml android_res/com/facebook/messaging/location/common/res/values/strings.xml android_res/com/facebook/messaging/business/common/res/values/strings.xml android_res/com/facebook/messaging/groups/integration/chatactivetab/ui/res/values/strings.xml android_res/com/facebook/messaging/contextbanner/res/values/strings.xml android_res/com/facebook/xapp/messaging/publicchats/threadview/title/res/values/strings.xml android_res/com/facebook/zero/nativetemplate/res/values/strings.xml android_res/com/facebook/video/watch/components/discover/res/values/strings.xml android_res/com/facebook/video/settings/globalsubtitle/res/values/strings.xml android_res/com/facebook/facecast/display/liveevent/announcement/res/values/strings.xml android_res/com/facebook/video/commercialbreak/res/values/strings.xml android_res/com/facebook/youth/camera/components/music/res/values/strings.xml android_res/com/facebook/video/watchandgo/player/plugin/res/values/strings.xml android_res/com/facebook/facecast/livingroom/player/res/values/strings.xml android_res/com/facebook/video/formatting/res/values/strings.xml android_res/com/facebook/login/res/values/strings.xml android_res/com/facebook/account/recovery/res/values/strings.xml android_res/com/facebook/account/common/res/values/strings.xml android_res/com/meta/metaai/voiceselector/res/values/strings.xml android_res/com/facebook/mig/input/res/values/strings.xml android_res/com/facebook/messaging/msys/thread/writewithai/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/processor/xma/res/values/strings.xml android_res/com/facebook/messaging/threadview/jumppill/res/values/strings.xml android_res/com/facebook/xapp/messaging/link/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/decorators/mediablur/res/values/strings.xml android_res/com/facebook/xapp/messaging/prompts/res/values/strings.xml android_res/com/facebook/mig/xma/template/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/xma/sharedstack/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/photo/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/mediastack/components/res/values/strings.xml android_res/com/facebook/xapp/messaging/publicchats/join/jointointeract/res/values/strings.xml android_res/com/facebook/oxygen/preloads/integration/install/m4a/fb4a/res/values/strings.xml android_res/com/facebook/messaging/msys/thread/xma/viewonfb/processor/res/values/strings.xml android_res/com/facebook/messaging/msys/thread/adapter/util/res/values/strings.xml android_res/com/facebook/messaging/msys/advancedcrypto/extensions/datatranslator/res/values/strings.xml android_res/com/facebook/messaging/msys/advancedcrypto/plugins/messageexpiration/nux/res/values/strings.xml android_res/com/facebook/messaging/activation/otms/res/values/strings.xml android_res/com/facebook/messaging/publicchats/fandomintegration/res/values/strings.xml libraries/maps/facebook-maps/res/values/strings.xml android_res/com/facebook/xapp/messaging/message/wearablesattribution/res/values/strings.xml android_res/com/facebook/notifications/push/permission/res/values/strings.xml android_res/com/facebook/notifications/turnon/res/values/strings.xml android_res/com/facebook/messaging/games/res/values/strings.xml android_res/com/facebook/messaging/sharerendering/res/values/strings.xml android_res/com/facebook/messaging/montage/composer/art/res/values/strings.xml android_res/com/facebook/messaging/search/aiprompt/res/values/strings.xml android_res/com/facebook/messaging/livelocation/res/values/strings.xml android_res/com/facebook/messaging/location/picker/res/values/strings.xml android_res/com/facebook/shortcuts/res/values/strings.xml android_res/com/facebook/messaging/location/nearbyplacespicker/res/values/strings.xml android_res/com/facebook/messaging/location/sending/res/values/strings.xml android_res/com/facebook/maps/navigation/res/values/strings.xml android_res/com/facebook/messaging/avatar/upsell/res/values/strings.xml android_res/com/facebook/messaging/avatar/hotlike/res/values/strings.xml android_res/com/facebook/messaging/sounds/res/values/strings.xml android_res/com/facebook/messaging/mentions/res/values/strings.xml android_res/com/facebook/messaging/composer/quickreply/data/res/values/strings.xml allow-large-files ignore-conflict-markers opt-out-review drop-conflicts Differential Revision: D88020530 fbshipit-source-id: 33bccadb6632cc6fecfa1007807d0ada629c55ed
Summary: Chronos Job Instance ID: 1125908150404818 Sandcastle Job Instance ID: 31525199747204595 Processed xml files: android_res/com/facebook/oxygen/preloads/integration/install/common/res/values/strings.xml android_res/com/facebook/messengerpromotions/res/values/strings.xml ../xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/strings.xml ../xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/res/systeminfo/values/strings.xml android_res/com/facebook/notifications/res/values/strings.xml android_res/com/facebook/events/create/loading/res/values/strings.xml android_res/com/facebook/messaginginblue/aibot/nux/launcher/res/values/strings.xml android_res/com/facebook/messenger/res/values/strings.xml android_res/com/facebook/messaging/threadsettings/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/decorators/usertiles/menuitem/block/res/values/strings.xml android_res/com/facebook/messaging/blocking/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/avatarquickreplies/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/res/values/strings.xml android_res/com/facebook/messaginginblue/sharesheet/components/externalsharingitem/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/viewcontroller/res/values/strings.xml android_res/com/facebook/messaging/montage/viewer/contextualreplies/res/values/strings.xml android_res/com/facebook/messaging/integrity/res/values/strings.xml android_res/com/facebook/messaging/business/montageads/res/values/strings.xml android_res/com/facebook/messaging/avatar/avatardetail/res/values/strings.xml android_res/com/facebook/messaging/pinnedgroups/res/values/strings.xml android_res/com/facebook/messaging/nux/res/values/strings.xml android_res/com/facebook/messaging/groups/plugins/core/threadsettingsmenuitem/res/values/strings.xml android_res/com/facebook/payments/p2p/res/values/strings.xml android_res/com/facebook/payments/p2p/verification/res/values/strings.xml android_res/com/facebook/payments/p2p/composer/res/values/strings.xml android_res/com/facebook/payments/p2p/awareness/res/values/strings.xml android_res/com/facebook/payments/connectivity/res/values/strings.xml android_res/com/facebook/orca/notify/res/values/strings.xml android_res/com/facebook/messaging/ui/name/res/values/strings.xml android_res/com/facebook/messaging/memories/res/values/strings.xml android_res/com/facebook/messaging/notify/util/res/values/strings.xml android_res/com/facebook/messaging/mute/res/values/strings.xml android_res/com/facebook/messaging/messengerprefs/res/values/strings.xml android_res/com/facebook/messaging/communitymessaging/notify/survey/res/values/strings.xml android_res/com/facebook/messaging/wellbeing/unknowncontact/messagerequests/res/values/strings.xml android_res/com/facebook/messaging/threadlist/ui/threaditem/snippet/res/values/strings.xml android_res/com/facebook/messaging/messagerendering/res/values/strings.xml android_res/com/facebook/messaging/business/messengerextensions/res/values/strings.xml android_res/com/facebook/messaging/business/commerce/res/values/strings.xml android_res/com/facebook/messaging/location/common/res/values/strings.xml android_res/com/facebook/messaging/business/common/res/values/strings.xml android_res/com/facebook/messaging/groups/integration/chatactivetab/ui/res/values/strings.xml android_res/com/facebook/messaging/contextbanner/res/values/strings.xml android_res/com/facebook/xapp/messaging/publicchats/threadview/title/res/values/strings.xml android_res/com/facebook/zero/nativetemplate/res/values/strings.xml android_res/com/facebook/video/watch/components/discover/res/values/strings.xml android_res/com/facebook/video/settings/globalsubtitle/res/values/strings.xml android_res/com/facebook/facecast/display/liveevent/announcement/res/values/strings.xml android_res/com/facebook/video/commercialbreak/res/values/strings.xml android_res/com/facebook/youth/camera/components/music/res/values/strings.xml android_res/com/facebook/video/watchandgo/player/plugin/res/values/strings.xml android_res/com/facebook/facecast/livingroom/player/res/values/strings.xml android_res/com/facebook/video/formatting/res/values/strings.xml android_res/com/facebook/login/res/values/strings.xml android_res/com/facebook/account/recovery/res/values/strings.xml android_res/com/facebook/account/common/res/values/strings.xml android_res/com/meta/metaai/voiceselector/res/values/strings.xml android_res/com/facebook/mig/input/res/values/strings.xml android_res/com/facebook/messaging/msys/thread/writewithai/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/processor/xma/res/values/strings.xml android_res/com/facebook/messaging/threadview/jumppill/res/values/strings.xml android_res/com/facebook/xapp/messaging/link/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/decorators/mediablur/res/values/strings.xml android_res/com/facebook/xapp/messaging/prompts/res/values/strings.xml android_res/com/facebook/mig/xma/template/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/xma/sharedstack/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/photo/res/values/strings.xml android_res/com/facebook/xapp/messaging/threadview/renderer/mediastack/components/res/values/strings.xml android_res/com/facebook/xapp/messaging/publicchats/join/jointointeract/res/values/strings.xml android_res/com/facebook/oxygen/preloads/integration/install/m4a/fb4a/res/values/strings.xml android_res/com/facebook/messaging/msys/thread/xma/viewonfb/processor/res/values/strings.xml android_res/com/facebook/messaging/msys/thread/adapter/util/res/values/strings.xml android_res/com/facebook/messaging/msys/advancedcrypto/extensions/datatranslator/res/values/strings.xml android_res/com/facebook/messaging/msys/advancedcrypto/plugins/messageexpiration/nux/res/values/strings.xml android_res/com/facebook/messaging/activation/otms/res/values/strings.xml android_res/com/facebook/messaging/publicchats/fandomintegration/res/values/strings.xml libraries/maps/facebook-maps/res/values/strings.xml android_res/com/facebook/xapp/messaging/message/wearablesattribution/res/values/strings.xml android_res/com/facebook/notifications/push/permission/res/values/strings.xml android_res/com/facebook/notifications/turnon/res/values/strings.xml android_res/com/facebook/messaging/games/res/values/strings.xml android_res/com/facebook/messaging/sharerendering/res/values/strings.xml android_res/com/facebook/messaging/montage/composer/art/res/values/strings.xml android_res/com/facebook/messaging/search/aiprompt/res/values/strings.xml android_res/com/facebook/messaging/livelocation/res/values/strings.xml android_res/com/facebook/messaging/location/picker/res/values/strings.xml android_res/com/facebook/shortcuts/res/values/strings.xml android_res/com/facebook/messaging/location/nearbyplacespicker/res/values/strings.xml android_res/com/facebook/messaging/location/sending/res/values/strings.xml android_res/com/facebook/maps/navigation/res/values/strings.xml android_res/com/facebook/messaging/avatar/upsell/res/values/strings.xml android_res/com/facebook/messaging/avatar/hotlike/res/values/strings.xml android_res/com/facebook/messaging/sounds/res/values/strings.xml android_res/com/facebook/messaging/mentions/res/values/strings.xml android_res/com/facebook/messaging/composer/quickreply/data/res/values/strings.xml android_res/com/facebook/messaging/activation/res/values/strings.xml android_res/com/facebook/negativefeedback/ui/res/values/strings.xml android_res/com/facebook/guidedaction/res/values/strings.xml android_res/com/facebook/rapidreporting/res/values/strings.xml android_res/com/facebook/audience/snacks/instantfeedback/res/values/strings.xml allow-large-files ignore-conflict-markers opt-out-review drop-conflicts Differential Revision: D88026538 fbshipit-source-id: e9760e132c7b249e3d1550b8e30cce4d062ee9bb
… API from `RCTDevSettings`" (react#54723) Summary: Pull Request resolved: react#54723 Changelog: [iOS][Fixed] - Fixed crashing due to FastRefresh not being initialized for non debug builds with RCT_DEV_MENU=1 Reviewed By: robhogan Differential Revision: D87982434 fbshipit-source-id: 0832ba02e0b82a1932b8532dc2874b48d33de66d
…tanimation` (react#54730) Summary: Pull Request resolved: react#54730 I'm deleting those 2 classes related to layout animation. They were needed only for legacy arch. They're not needed anymore so they can go now. Marked as breaking because those 2 classes were public, but I wasn't able to find meaningful usages in OSS Changelog: [Android] [Breaking] - Remove unnecessary classes inside `com.facebook.react.uimanager.layoutanimation` used in legacy architecture Reviewed By: javache Differential Revision: D88011209 fbshipit-source-id: a45ec8342a2cdd150264ff9de9da7060b93bf55c
Summary: Pull Request resolved: react#54692 Lazily create error strings and use jsi::JSError for more user-friendly error messages Changelog: [Internal] Reviewed By: cipolleschi Differential Revision: D87868701 fbshipit-source-id: a38be93511520329a3c703b1b27dbb456da30be2
…ode (react#54731) Summary: # Fix NullPointerException in PromiseImpl.reject This PR fixes a `NullPointerException` that occurs when `Promise.reject` is called with a `null` code from Java native modules. The issue arises because `Promise.kt` and `PromiseImpl.kt` defined the `code` parameter as non-nullable `String` in several overloads. However, `PromiseImpl`'s internal logic (specifically the catch-all `reject` method) is designed to handle `null` codes by defaulting to `EUNSPECIFIED`. When a Java module (such as `react-native-ble-plx`) calls `promise.reject(null, message)`, Kotlin's generated null-checks throw a `NullPointerException` before the method body is executed. ## Changelog [Android] [Fixed] - Allow nullable `code` in `Promise.reject` to prevent NPEs from Java modules Pull Request resolved: react#54731 Test Plan: 1. Create a native module in Java that calls `promise.reject(null, "Error message")`. 2. Before this fix, the app crashes with `java.lang.NullPointerException: Parameter specified as non-null is null: method com.facebook.react.bridge.PromiseImpl.reject, parameter code`. 3. After this fix, the promise is rejected with code `EUNSPECIFIED` and the app does not crash. ## Related Issue Fixes react#54722 Reviewed By: fabriziocucci, cortinico Differential Revision: D88066375 Pulled By: javache fbshipit-source-id: aec56b2d44dc8260e9b0496c2ec5fc49e70ca9cf
Summary: Pull Request resolved: react#54746 # Changelog: [Internal] Reviewed By: sbuggay Differential Revision: D88086588 fbshipit-source-id: 0c8fd94d1c66dba36b702373d8914cdcf2247b84
react#54747) Summary: Pull Request resolved: react#54747 Cleans up the `enableVirtualViewClippingWithoutScrollViewClipping` feature flag and enables the new behavior. Changelog: [Android][Changed] - `VirtualView` not clips subviews even if its parent `ScrollView` does not have `removeClippedSubviews` enabled. Reviewed By: lunaleaps Differential Revision: D88096820 fbshipit-source-id: d61061f3612b048ed22be33f48e24511c7e010d2
Summary: Pull Request resolved: react#54742 Typo in screenshots event. Changelog: [Internal] Reviewed By: hoxyq Differential Revision: D87936870 fbshipit-source-id: 670cde2ed107bd01b374a7b24917a37336e670c0
Summary: Pull Request resolved: react#54743 Instead of creating another buffer, optionally include screenshots if they are enabled in `FrameTimingSequence`. Changelog: [Internal] Reviewed By: hoxyq Differential Revision: D87936871 fbshipit-source-id: c35ef7776f6f51281213664f98e13db0a2bbab42
…s on animation backend (react#54698) Summary: Adds support for transform, border radius, and background color props to be handled by shared animation backend. [General][Added] - Added support for transform, border radius, and background color props to Animation Backend. ## 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] Pull Request resolved: react#54698 Test Plan: Checked on reanimated example app. Reviewed By: zeyap Differential Revision: D87922886 Pulled By: coado fbshipit-source-id: 1fe554cba514b74c3687f09be0def0496e4c374a
Summary: Those stacktraces are no longer necessary because venice has been rolled out to 100% since a long time. They create noise on logcat as they appear as a crash in red, but they're not. Created from CodeHub with https://fburl.com/edit-in-codehub Changelog: [Internal] [Changed] - Reviewed By: javache Differential Revision: D88075839 fbshipit-source-id: 83f2c5fe6b3e500c5a0dc12a81ded394b5fca31a
Summary: Pull Request resolved: react#54741 Changelog: [Internal] - Update `react-native/debugger-frontend` from 7f25433...4631a6d Resyncs `react-native/debugger-frontend` from GitHub - see `rn-chrome-devtools-frontend` [changelog](react/react-native-devtools-frontend@7f25433...4631a6d). ### Changelog | Commit | Author | Date/Time | Subject | | ------ | ------ | --------- | ------- | | [4631a6d5d](react/react-native-devtools-frontend@4631a6d5d) | Ruslan Lesiutin (28902667+hoxyq@users.noreply.github.com) | 2025-12-01T18:05:33Z | [feat(timeline): display newly supported options for Timeline (microsoft#224)](react/react-native-devtools-frontend@4631a6d5d) | Reviewed By: huntie Differential Revision: D88082538 fbshipit-source-id: 2a7f178415915cfea7739efa99d21e5d2b3d178d
Summary: Pull Request resolved: react#54754 Enables the standalone app shell for React Native DevTools by default. We preserve + document this flag as an opt-out (allowing Frameworks to override this behaviour if needed). Changelog: [Internal] Reviewed By: motiz88 Differential Revision: D88161573 fbshipit-source-id: 64ee191dcead4e639bb3067bc9e715b1c8cdf80d
Summary: Pull Request resolved: react#54756 Move blanket `packages/**/dist/` rule added in D77591742 into scoped `.gitignore` for `debugger-shell`. This was preventing new files added to `packages/debugger-frontend/dist/` from being staged. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D88172611 fbshipit-source-id: 428fffd46f5f76ddf422a41b57e7b47446c40e43
Summary: Pull Request resolved: react#52624 Add a new optional interface `ISerialization` to JSI. This interface contains four APIs to clone objects from one runtime to another runtime. Four methods are introduced in this interface: * `serialize`: Takes in a JS value (represented by `jsi::Value`) and serialize the value into an opaque `Serialized` object. * `deserialize`: Takes in the `Serialized` object created by `serialize` and deserialize it into the runtime, returning the created JS value. * `serializeWithTransfer`: Takes in a JS value (represented by `jsi::Value`) and a `transferList` (a `jsi::Array` of `jsi::Value`s). This will serialize the `value` into an opaque `Serialize` object and transfer the ownership of everything in `transferList` into the `Serialized` object. If any non-transferable values is passed into the transferList, this will throw. This `Serialized` object must only be deserialized once. * `deserializeWithTransfer`: Takes in the `Serialized` object created by `serializeWithTransfer`. It will deserialize the object into the runtime and any value owned by the `Serialized` object will now be owned by the current runtime. It will return an `jsi::Array` where the first value is the deserialized value passed into `serializeWithTransfer`, followed by all transferred values. The lifetime of the `Serialized` object created from the APIs is independent of the original object and runtime. Note that objects can only be copied into another runtime instance of the same type. For example, a serialized object produced by the Hermes runtime can only be deserialized by another Hermes runtime. Changelog: [Internal] Reviewed By: dannysu, fbmal7 Differential Revision: D76547681 fbshipit-source-id: 0c774f3f469c26d3894cac179f4ce5e32cf5ad7f
Summary: Pull Request resolved: react#54740 ## Changelog: [Internal] [Changed] - Remove feature flag cxxNativeAnimatedRemoveJsSync It's always rolled out with cxx animated and we haven't found new issues with it Reviewed By: lenaic Differential Revision: D88082232 fbshipit-source-id: 3b9f29c20a7f41cd1d826257a9e2c42c11fcee0f
Summary: X-link: facebook/hermes#1844 X-link: facebook/hermes#1843 Pull Request resolved: react#54569 Changelog: [Internal] Two "hermes.h" under different prefixes (jsi/hermes.h and hermes/hermes.h) are a bit confusing. Let's rename the JSI header to "hermes-interfaces.h". Reviewed By: tmikov Differential Revision: D87200512 fbshipit-source-id: e61251f791788c8d6787ee29762c4aa76d99b68a
Summary: Pull Request resolved: react#54744 Adds CDP event generation for screenshots. Changelog: [Internal] Reviewed By: hoxyq Differential Revision: D87936872 fbshipit-source-id: 91fee068e3a55c212e7df83990d7836b04efa01b
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: - react#54669 - react#48875 ## Changelog: [GENERAL] [SECURITY] - Replace `glob@^7.0.0` with `tinyglobby@^0.2.15` Pull Request resolved: react#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:
When two different React Native libraries export a package class with the same name but in different namespaces, the generated PackageList.java causes a compilation error due to ambiguous class references.
The current autolinking generates:
``` kotlin
import com.pikachu.NativeStorage;
import com.snowfox.NativeStorage; // ❌ Compile error: NativeStorage is already defined
public ArrayList<ReactPackage> getPackages() {
return new ArrayList<>(Arrays.<ReactPackage>asList(
new MainReactPackage(mConfig),
new NativeStorage(), // ❌ Ambiguous reference
new NativeStorage() // ❌ Ambiguous reference
));
}
```
Solution:-
Use fully qualified class names (FQCN) instead of imports:
``` kotlin
// No imports needed
public ArrayList<ReactPackage> getPackages() {
return new ArrayList<>(Arrays.<ReactPackage>asList(
new MainReactPackage(mConfig),
// pikachu-storage
new com.pikachu.NativeStorage(),
// snowfox-storage
new com.snowfox.NativeStorage()
));
}
```
## 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
-->
[ANDROID][FIXED]- Use FQCN to avoid collisions
Pull Request resolved: react#54736
Test Plan:
Updated test.
Also tested on my app and RN tester
<img width="687" height="223" alt="image" src="https://github.com/user-attachments/assets/fe54d0c3-4ab4-4d74-a98f-97243851e8c4" />
CI will tell if build fails
Reviewed By: mdvacca
Differential Revision: D88157961
Pulled By: cortinico
fbshipit-source-id: 5fe072dcaed177af1036ca88d55870081a3f4205
Summary: Pull Request resolved: react#54745 Generates and emits screenshots if enabled by DevTools Changelog: [Internal] Reviewed By: hoxyq Differential Revision: D88084756 fbshipit-source-id: 54f8a41f46836360952bee098ad6dda6c41ee537
Summary: Pull Request resolved: react#54765 # Changelog: [Internal] Looking at the Chrome DevTools Frontend code, the `BeginFrame` trace event represents the actual start of the frame sequence, not the expected one. Using inteded timestamp doesn't seem right here: - [INTENDED_VSYNC_TIMESTAMP](https://developer.android.com/reference/android/view/FrameMetrics#INTENDED_VSYNC_TIMESTAMP) - [VSYNC_TIMESTAMP](https://developer.android.com/reference/android/view/FrameMetrics#VSYNC_TIMESTAMP) INTENDED_VSYNC_TIMESTAMP description says: > The intended start point for the frame. If this value is different from VSYNC_TIMESTAMP, there was work occurring on the UI thread that prevented it from responding to the vsync signal in a timely fashion. Reviewed By: sbuggay Differential Revision: D88088882 fbshipit-source-id: 0980c4952b7b71dd8ea2333334f0ed89f6ecedb1
Summary: Pull Request resolved: react#54768 # Changelog: [Internal] In Chrome, frame trace events actually have a dedicated `disabled-by-default-devtools.timeline.frame` category. Reviewed By: sbuggay Differential Revision: D88274111 fbshipit-source-id: 1166b757414fd2ffe9931f24885d93f5324a0353
Summary: Pull Request resolved: react#54769 # Changelog: [Internal] In Chrome, this event has `disabled-by-default-devtools.timeline` category. This also implies that this event won't be displayed on a timeline by default, which is what we want. Reviewed By: sbuggay Differential Revision: D88274243 fbshipit-source-id: c8f3dc1546fdff7219a293a4a559bbb70dc2d4f1
Tighten merged type annotations and preserve macOS compatibility behavior without changing runtime semantics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the remaining polynomial regex with a linear delimiter parser while preserving frame semantics. 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>
Remove the obsolete moving-nightly Hermes preinstall and refresh the lockfile against the rebased 0.84 package graph. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep Metro package extensions on the 0.84 line, restore merge-base-aware Hermes fallback, and preserve shell-safe XCFramework probing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep CocoaPods on merge-base-compatible source-built Hermes and regenerate the RNTester pod lock after rebasing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep UIKit-only presentation helpers off macOS and prevent codegen from traversing pnpm dependency symlinks or generated trees. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Exclude the generic C++ View platform when building the macOS SPM target so host event declarations and implementations remain coherent. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Saad Najmi (Saadnajmi)
force-pushed
the
0.84-merge
branch
from
September 21, 2026 14:53
2777fb7 to
6b6e554
Compare
This was referenced Sep 21, 2026
Preserve validated per-branch source and corrected stack dependencies.
Preserve validated per-branch source and corrected stack dependencies.
Comment on lines
+120
to
+123
| const run = command => execFileSync('bash', ['--noprofile', '--norc', '-eo', 'pipefail', '-c', | ||
| `node_path=$1\nyarn_path=$2\nyarn() { "$node_path" "$yarn_path" "$@"; }\n${command}`, | ||
| 'publishing-workflow', process.execPath, yarnPath], | ||
| {cwd: root, env, encoding: 'utf8', stdio: 'pipe'}); |
Preserve package versions and the linear stack; change only equivalent executable-path metadata.
Preserve package versions and the linear stack; change only equivalent executable-path metadata.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current release stack
main. Retarget as predecessors land; stable releases retain separate stable branches.Depends on #3099. #3031 is the separate 0.84 release; #3033 continues mainline.
Validation and backups
The branch-specific repaired source passed hardened immutable installation, constraints, and its complete release-helper selection. The selected 18-head packet records 1,406 passing helper tests. Exact source-tree equivalence is used for rewritten endpoints where applicable; the two changed linear RC checkpoints were tested separately.
Native/API evidence retains its recorded scope. The SwiftPM and RNTester repairs have six focused native build passes. Public stable versions and runtime/API contents were preserved except for the independently reviewed SwiftPM destination repair where applicable.
Public-registry lock correction passed all 18 hosted generation, hardened immutable, constraints, and metadata-audit jobs in run 35769816507. Only equivalent executable-path spelling changes are permitted; dependency versions, checksums, and ranges are unchanged. The previous functional test results remain applicable to this metadata-only correction. Fresh GitHub CI and review remain required. Previous heads are preserved on the same repository under
backup/pre-ci-repair-20260922/<original-branch>andbackup/pre-public-registry-20260922/<original-branch>; local complete-history bundles were verified as well.The 0.87 PR sequence is one first-parent path: #3037 → #3104 → #3105 → #3106 → #3100 → #3101 → #3107. The redundant #3102/#3103 reviews are consolidated into #3105.
This section supersedes earlier stack order, source identity, and validation-status notes below.
Summary
Merge up to the merge base of
0.84-stable(the first commit on the upstream0.84-stablebranch,2166ab782a6), prepping this branch for the 0.84 release. For the cross-platform 0.84 changes (Hermes V1, precompiled iOS binaries, removal of legacy iOS architecture components, Node.js 22, etc.), see the RN 0.84 release notes.The branch is rebased onto Microsoft
mainatef09dd72. The recreated mechanical merge is86e07385with exact parentsef09dd72(Microsoft main) and2166ab78(the Facebook 0.84 fork point); the0.84-stabletip is not merged.New for react-native-macos since 0.83:
Build & distribution
react-native-test-librarypackageFabric, accessibility & input on macOS
HostInstancefocus and blur command signaturesRCTViewAccessibilityElementto upstream's setter-based accessibility ordering while keeping the macOS proxy leaf-only and synchronizedKeyDownEvent/KeyUpEventmodel while preserving emitted macOS fieldsHermes
The history is intentionally layered into a mechanical merge commit followed by focused, reversible macOS ports so the merge can be recreated or rebased cleanly.
Conflict resolution appendix
The original fork-point merge produced 153 conflicted paths / 281 conflict hunks. Its final adjudication was 11 upstream/stale-local, 28 preserve-macOS, 242 combine, 0 unresolved. Rebasing onto current Microsoft
mainproduced 55 unique index-conflict paths: 53 were already in the original inventory and two were new base-integration paths (.flowconfigandpackages/rn-tester/Podfile). The combined unique inventory below therefore contains 155 paths. Package manifests, lockfiles, and generated project metadata were reconciled mechanically; the table below focuses on behavior and architecture that warrant reviewer attention.Reviewer guide
RCTReactNativeFactory/RCTHost; legacy-architecture compile-out and header moves reshape AppDelegate setup.focus/blurtoHostInstancecommand arguments across JS and native code.ViewNativeComponent.jstakes the upstream signature; native commands remain available on macOS and duplicate UIKit-only methods are platform-guarded. The JS spec and native implementation were kept atomic.KeyboardEventPayloadplusKeyDownEvent/KeyUpEventsynthetic wrappers.code; capture handlers and legacy handled-key props remain supported.code, real macOS modifier fields, canonical wrappers across View/Pressability/TextInput, deprecated compatibility aliases, regenerated API types, and focused normalization tests. Seeff3eb390.bf975098; the Fabric accessory reset is excluded on both macOS and visionOS in021f7cd8.accessibilityElementsownership to a setter onRCTViewComponentView.NSAccessibilityElementproxy when an accessibility order refers to the view itself; using the NSView as its own child creates a VoiceOver traversal cycle.RCTViewAccessibilityElementas a leaf proxy instantiated by the upstream setter path.b1bd0184keeps traits synchronized, reuses the shared role mapping, and prevents duplicate child subtrees.e2251e82.RCTUIImage/RCTPlatformImageabstraction, animated image view, local/bundle loaders, and AppKit-compatible blur/loading behavior are still used.e2251e82; the visionOS alert fallback was corrected without changing iOS/macOS behavior in68888b7f.RCTPlatform*/RCTUIKit abstractions.view/platform/macosremains owned byreactFabric; nonexistenttextinput/platform/macosandtextlayoutmanager/platform/macospaths were not invented. SwiftPM/CocoaPods ownership andMacOSSwitchShadowNode.mmexclusions remain aligned.e2251e82, rather than obscuring them inside the mechanical merge.RuntimevsIRuntimeJSI ABI mismatch.1000.0.0withhermes-compiler: 0.0.0. Seea8959b6c.fb-dotslashis the production dependency; Electron 39.8.1 is dev-only and excluded from the published package. Shell-interpolated prebuild/release commands were converted to argument-safe process/filesystem APIs in38e24834andb49508e9.NetworkOverlay.js.react-native-test-libraryand RNTester testsreact-native-test-libraryremains an active macOS package, including its native component fixtures and macOS example; selected UIManager/event/view tests still cover fork behavior.react-native-test-librarypackage, including the three explicit modify/delete conflicts; retain still-relevant RNTester tests and scheme wiring, while accepting upstream deletion where no macOS requirement exists.Complete conflicted-path inventory
Build, manifests, Hermes, and generated metadata (45)
.github/actions/setup-xcode/action.yml.gitignore.flowconfigREADME.mdpackage.jsonpackages/assets/package.jsonpackages/babel-plugin-codegen/package.jsonpackages/community-cli-plugin/package.jsonpackages/core-cli-utils/package.jsonpackages/debugger-frontend/package.jsonpackages/debugger-shell/package.jsonpackages/dev-middleware/package.jsonpackages/eslint-config-react-native/package.jsonpackages/eslint-plugin-react-native/package.jsonpackages/eslint-plugin-specs/package.jsonpackages/gradle-plugin/package.jsonpackages/metro-config/package.jsonpackages/new-app-screen/package.jsonpackages/normalize-color/package.jsonpackages/polyfills/package.jsonpackages/react-native-babel-preset/package.jsonpackages/react-native-babel-transformer/package.jsonpackages/react-native-codegen/package.jsonpackages/react-native-compatibility-check/package.jsonpackages/react-native-popup-menu-android/package.jsonpackages/react-native/Package.swiftpackages/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.hpackages/react-native/package.jsonpackages/react-native/scripts/ios-prebuild/hermes.jspackages/react-native/scripts/ios-prebuild/xcframework.jspackages/react-native/sdks/hermes-engine/hermes-engine.podspecpackages/react-native/sdks/hermes-engine/hermes-utils.rbpackages/react-native/sdks/hermes-engine/utils/build-ios-framework.shpackages/rn-tester/Podfilepackages/rn-tester/Podfile.lockpackages/rn-tester/RNTesterPods.xcodeproj/project.pbxprojpackages/rn-tester/RNTesterPods.xcodeproj/xcshareddata/xcschemes/RNTesterUnitTests.xcschemepackages/rn-tester/package.jsonpackages/typescript-config/package.jsonpackages/virtualized-lists/package.jsonprivate/helloworld/Gemfileprivate/helloworld/Gemfile.lockprivate/helloworld/package.jsonprivate/react-native-codegen-typescript-test/package.jsonyarn.lockJavaScript behavior and public types (14)
packages/react-native/Libraries/Components/Pressable/Pressable.jspackages/react-native/Libraries/Components/TextInput/TextInput.flow.jspackages/react-native/Libraries/Components/TextInput/TextInput.jspackages/react-native/Libraries/Components/TextInput/TextInputState.jspackages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.jspackages/react-native/Libraries/Components/View/View.jspackages/react-native/Libraries/Components/View/ViewNativeComponent.jspackages/react-native/Libraries/Pressability/Pressability.jspackages/react-native/Libraries/Text/Text.jspackages/react-native/Libraries/Types/CoreEventTypes.jspackages/react-native/Libraries/Utilities/__tests__/Platform-test.jspackages/react-native/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.jspackages/rn-tester/js/examples/Cursor/CursorExample.jspackages/rn-tester/js/examples/PlatformColor/PlatformColorExample.jsApp setup, bridge, and wrappers (16)
packages/react-native/Libraries/AppDelegate/RCTAppDelegate.hpackages/react-native/Libraries/AppDelegate/RCTAppSetupUtils.hpackages/react-native/Libraries/AppDelegate/RCTAppSetupUtils.mmpackages/react-native/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mmpackages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.hpackages/react-native/Libraries/AppDelegate/RCTRootViewFactory.hpackages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mmpackages/react-native/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.hpackages/react-native/Libraries/Wrapper/RCTWrapper.hpackages/react-native/Libraries/Wrapper/RCTWrapperView.hpackages/react-native/Libraries/Wrapper/RCTWrapperViewControllerHostingView.hpackages/react-native/React/Base/RCTBridgeProxy.mmpackages/react-native/React/Base/RCTBundleManager.hpackages/react-native/React/Base/RCTRootView.hpackages/react-native/React/Base/RCTUtils.hpackages/react-native/React/Base/RCTUtils.mmImage, linking, and native animation (10)
packages/react-native/Libraries/Image/Image.ios.jspackages/react-native/Libraries/Image/RCTBundleAssetImageLoader.mmpackages/react-native/Libraries/Image/RCTImageBlurUtils.mmpackages/react-native/Libraries/Image/RCTImageLoader.mmpackages/react-native/Libraries/Image/RCTImageViewManager.mmpackages/react-native/Libraries/Image/RCTLocalAssetImageLoader.mmpackages/react-native/Libraries/Image/RCTUIImageViewAnimated.mmpackages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mmpackages/react-native/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mmpackages/react-native/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mmCore modules and developer support (13)
packages/react-native/React/CoreModules/CoreModulesPlugins.mmpackages/react-native/React/CoreModules/RCTAccessibilityManager.mmpackages/react-native/React/CoreModules/RCTActionSheetManager.mmpackages/react-native/React/CoreModules/RCTDevLoadingView.mmpackages/react-native/React/CoreModules/RCTDevMenu.hpackages/react-native/React/CoreModules/RCTDevMenu.mmpackages/react-native/React/CoreModules/RCTDeviceInfo.mmpackages/react-native/React/CoreModules/RCTFPSGraph.mmpackages/react-native/React/CoreModules/RCTLogBoxView.hpackages/react-native/React/CoreModules/RCTLogBoxView.mmpackages/react-native/React/CoreModules/RCTPerfMonitor.mmpackages/react-native/React/DevSupport/RCTDevLoadingViewProtocol.hpackages/react-native/React/DevSupport/RCTInspectorDevServerHelper.mmFabric component views and input (12)
packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewAccessibilityElement.hpackages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewAccessibilityElement.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mmpackages/react-native/React/Fabric/Mounting/RCTComponentViewDescriptor.hpackages/react-native/React/Fabric/RCTSurfacePointerHandler.mmpackages/react-native/React/Fabric/RCTSurfaceTouchHandler.mmpackages/react-native/React/Fabric/Utils/RCTBoxShadow.mmLegacy views, text, and UIManager (24)
packages/react-native/Libraries/Text/Text/RCTTextView.hpackages/react-native/Libraries/Text/Text/RCTTextView.mmpackages/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.hpackages/react-native/Libraries/Text/TextInput/RCTInputAccessoryView.hpackages/react-native/Libraries/Text/TextInput/RCTInputAccessoryViewContent.hpackages/react-native/Libraries/Text/VirtualText/RCTVirtualTextView.hpackages/react-native/React/Modules/RCTUIManager.hpackages/react-native/React/Modules/RCTUIManager.mmpackages/react-native/React/Views/RCTActivityIndicatorView.mpackages/react-native/React/Views/RCTModalHostView.hpackages/react-native/React/Views/RCTModalHostView.mpackages/react-native/React/Views/RCTModalHostViewController.hpackages/react-native/React/Views/RCTModalHostViewController.mpackages/react-native/React/Views/RCTModalHostViewManager.hpackages/react-native/React/Views/RCTModalHostViewManager.mpackages/react-native/React/Views/RCTSwitch.hpackages/react-native/React/Views/RefreshControl/RCTRefreshControl.hpackages/react-native/React/Views/RefreshControl/RCTRefreshControl.mpackages/react-native/React/Views/RefreshControl/RCTRefreshControlManager.mpackages/react-native/React/Views/SafeAreaView/RCTSafeAreaView.mpackages/react-native/React/Views/SafeAreaView/RCTSafeAreaViewManager.mpackages/react-native/React/Views/ScrollView/RCTScrollView.hpackages/react-native/React/Views/ScrollView/RCTScrollView.mpackages/react-native/React/Views/ScrollView/RCTScrollViewManager.hRenderer C++ and platform graphics (10)
packages/react-native/ReactCommon/react/renderer/attributedstring/TextAttributes.cpppackages/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.hpackages/react-native/ReactCommon/react/renderer/components/view/propsConversions.hpackages/react-native/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.hpackages/react-native/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.mmpackages/react-native/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/RCTPlatformColorUtils.hpackages/react-native/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/RCTPlatformColorUtils.mmpackages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.hpackages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mmpackages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mmTests and RNTester native fixtures (11)
packages/react-native-test-library/ios/RCTSampleNativeComponentComponentView.mmpackages/react-native-test-library/ios/RCTSampleNativeComponentViewManager.mmpackages/react-native-test-library/package.jsonpackages/rn-tester/NativeComponentExample/ios/RNTMyLegacyNativeViewManager.mmpackages/rn-tester/NativeComponentExample/ios/RNTMyNativeViewManager.mmpackages/rn-tester/RNTester/AppDelegate.mmpackages/rn-tester/RNTesterIntegrationTests/RCTUIManagerScenarioTests.mpackages/rn-tester/RNTesterIntegrationTests/RNTesterIntegrationTests.mpackages/rn-tester/RNTesterUnitTests/RCTEventDispatcherTests.mpackages/rn-tester/RNTesterUnitTests/RCTUIManagerTests.mpackages/rn-tester/RNTesterUnitTests/RCTViewTests.mThe inventory sections sum to 155 paths.
Commands used
Roughly, the merge and subsequent Microsoft-main rebase used:
The rebase tried to replay the React Native-side ancestry instead of retaining the required fork-point parent, so the audited resolved merge tree was reconstructed with exact parents
ef09dd72and2166ab78, then the focused macOS follow-ups were replayed as separate commits. Conflict inventories and old-to-new commit mappings were regenerated after that reconstruction.Validation and publication were approximately:
The force-with-lease was limited to retargeting the existing fork branch from the stale fork
mainto Microsoftmain; later updates were normal fast-forward pushes.Test Plan
4bacb12a: JavaScript, Yarn constraints, website, npm dry-run, RNTester iOS/macOS/visionOS static and dynamic builds, all Hermes slices, all five prebuild destinations, XCFramework composition, and CodeQL2777fb70only removes the deferred in-repo merge skill; the exact draft is archived outside the branch until the complete 0.84-0.87 stack is prepared1000.0.0from the React Native merge-base lineageyarn install --immutableyarn constraintsbundle exec pod installswift package dump-package --package-path packages/react-nativeef09dd72and2166ab78;0.84-stabletip excludedThe two dynamic-framework Test All canaries previously failed before runner assignment with zero executed steps; they did not contain a code/build failure from this branch.
Final CI follow-up
This branch receives only these independently reviewed follow-up paths:
packages/react-native/ReactNativeApi.d.tspackages/react-native/scripts/ios-prebuild/__tests__/hermes-test.jsThe complete 16-head batch passed 92 recorded validation commands, including branch-specific API revalidation/generated TypeScript, full formatting checks, and combined targeted suites where applicable. Native changes are limited to the reviewed #3033 destination guards (also present in stable 0.85) and #3104's sidecar-copy correction (already present in its descendants). Exact source equivalence preserves earlier native results elsewhere. The public-registry lockfiles and package manifests remain byte-identical.
Previous heads are backed up at
backup/pre-ci-followup-20260922/<original-branch>on their source repository. Fresh current-head CI remains required. The one-first-parent 0.87 sequence is preserved.