feat: merge 0.85-merge into 0.84-merge - #3033
Open
Saad Najmi (Saadnajmi) wants to merge 595 commits into
Open
Saad Najmi (Saadnajmi) wants to merge 595 commits into
Saad Najmi (Saadnajmi) wants to merge 595 commits into
Conversation
Summary: Pull Request resolved: react#55536 Changelog: [Internal] Reviewed By: vzaidman Differential Revision: D92831007 fbshipit-source-id: 60089442334ca5be6046bfd7f16c816d57e62408
Summary: Pull Request resolved: react#55537 Changelog: [General] [Added] - Create featureflag viewTransitionEnabled This diff adds a new React Native feature flag `viewTransitionEnabled` to gate the View Transition API feature. The View Transition API enables animated transitions between views, providing a smooth visual experience when navigating between screens or updating UI elements. This flag allows the feature to be gradually rolled out and tested before full enablement. The flag is added across all platform layers: - JavaScript (ReactNativeFeatureFlags.js, NativeReactNativeFeatureFlags.js) - Android Kotlin (ReactNativeFeatureFlags.kt, provider, accessor, defaults) - C++/JNI (ReactNativeFeatureFlags.cpp/h, JReactNativeFeatureFlagsCxxInterop) - Feature flag config (ReactNativeFeatureFlags.config.js) Default value is `false` to ensure the feature is opt-in during experimentation. Reviewed By: NickGerleman Differential Revision: D92713074 fbshipit-source-id: cd9e567df3135f99c8a931fffab655f16883cf94
Summary: [Android][Fixed] - Fix null pointer crash in FabricUIManagerBinding::driveCxxAnimations by adding null check for scheduler Pull Request resolved: react#55529 Crash failures during e2e: https://www.internalfb.com/intern/test/562949977559616 logview: https://fburl.com/logview/65na7gyr Reason: null dereference Pull Request resolved: react#55529 Crash failures during e2e: https://www.internalfb.com/intern/test/562949977559616 logview: https://fburl.com/logview/65na7gyr Reason: null dereference Reviewed By: javache Differential Revision: D92986523 fbshipit-source-id: 2a193cdc93a44a59fedfb7974bb694546a2000f6
Summary: Pull Request resolved: react#55501 The BaseVMFocusChangeListener inner class does not reference any members of its outer class BaseViewManager. Making it static improves memory efficiency by avoiding the implicit reference to the outer class instance. Also removed the unused type parameter <V extends View> and changed the method parameters from T to View since only View interface methods are used. changelog: [internal] internal Reviewed By: cortinico Differential Revision: D92020879 fbshipit-source-id: a26378ed6f9f5dfcc64c49aaf734559e1e7be09e
…5502) Summary: Pull Request resolved: react#55502 This change adds missing Override annotations to three methods in LayoutShadowNode that override methods from the parent class: - setFlex(float) - setFlexGrow(float) - setFlexShrink(float) These methods call super.setFlex/setFlexGrow/setFlexShrink, indicating they override parent methods and should have Override annotations for code clarity and compiler checking. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92021000 fbshipit-source-id: 28a4d0676c18d99dddb173066964cd8c5ea321ac
…ct#55503) Summary: Pull Request resolved: react#55503 Remove unused code that was triggering lint warnings: 1. Remove `walkUpUntilNativeKindIsParent` private method that was never invoked 2. Remove `parent` variable in `applyLayoutBase` that was never accessed Both were leftover from NativeKind removal. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92021031 fbshipit-source-id: 7549efd01ddf167df4a130c255ccf1c8d663e1d2
…55504) Summary: Pull Request resolved: react#55504 Replace `TextUtils.join(", ", features)` with the idiomatic Kotlin `features.joinToString(", ")`. This fixes the HasBetterKotlinAlternativeMethod lint warning and removes the now-unused TextUtils import. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92021387 fbshipit-source-id: 38510d3c36ccaf899826f604ed4dd1e843ebe039
…AttributeProps (react#55505) Summary: Pull Request resolved: react#55505 Replace `TextUtils.join(", ", features)` with Kotlin's idiomatic `features.joinToString(", ")` to fix the HasBetterKotlinAlternativeMethod lint warning. Also removed the now-unused `TextUtils` import while keeping the `TextUtils.TruncateAt` import that is still in use. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92021465 fbshipit-source-id: 3cb9e286f9f46f82817b0257dde73230ba2298d6
…t#55491) Summary: Pull Request resolved: react#55491 Fixes crash in `ShadowNode::cloneMultipleRecursive` which tried to access a missing root's family from the `childrenCount` map. The main issue is that in some cases there is no path between the given families to update and the root shadow node. The solution is to check after building the `childrenCount` map if it contains the root family and return `nullptr` otherwise. This behavior is closer to the `getAncestors` method which returns an empty array if there is no ancestor-descendant relationship. Due to this change, an additional check in `AnimationBackendCommitHook` is also required. ## Changelog: [General][Fixed] - Fixed crash in `cloneMultiple` when families have no path to root Reviewed By: zeyap Differential Revision: D92838809 fbshipit-source-id: a87de2c171e4f0f71e566806f5c012ab0bac69fd
…react#55534) Summary: Pull Request resolved: react#55534 Replace react_native_assert calls with real bounds checks in RawPropsKeyMap::at() and RawPropsKey::render() to prevent SIGILL/SIGTRAP crashes. In at(), an invalid length now returns kRawPropsValueIndexEmpty instead of trapping. In render(), an overlong prop name is clamped to kPropNameLengthHardCap - 1 instead of asserting. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D93094839 fbshipit-source-id: 29250d06cb93e84507000551a7a60a09f2df8288
Summary: Pull Request resolved: react#55542 Adds tests demonstrating that all target versions of Hermes (Legacy Hermes, Static Hermes stable, Static Hermes trunk) support multi-session debugging when integrated into React Native's CDP backend. Changelog: [Internal] Reviewed By: hoxyq Differential Revision: D90888853 fbshipit-source-id: 7ea1be837bde6d71ae2bca2b1487e00c62a44928
…ypes) to latest minors (react#55543) Summary: Pull Request resolved: react#55543 @public This diff updates several Babel packages to their latest versions: - `babel/code-frame`: 7.29.0 - `babel/generator`: 7.29.1 - `babel/parser`: 7.29.0 - `babel/template`: 7.28.6 - `babel/traverse`: 7.29.0 - `babel/types`: 7.29.0 Not bumping `core` or `runtime` here because they're a bit more involved, and I'm mainly interested in `traverse`. The packages here are the closure of traverse's dependency graph. Changelog: [Internal] Reviewed By: yungsters Differential Revision: D92983519 fbshipit-source-id: 9f2e71fb5d453606c697d52539f0056b7a29bc45
Summary: Pull Request resolved: react#55470 LogBox errors and warnings can affect performance trace measurements by triggering UI updates during profiling. This change adds a mechanism to suppress LogBox messages when CDP performance tracing is active. It clears the logbox when tracing starts and drops messages during tracing The implementation consists of: 1. **Native observer infrastructure** (`RuntimeTarget.cpp/h`, `RuntimeTargetPerformanceTracerObserver.cpp/h`): `RuntimeTarget` subscribes to the `PerformanceTracer` singleton's state changes and forwards them into JavaScript. It uses helper functions in `RuntimeTargetPerformanceTracerObserver` to install a `__PERFORMANCE_TRACER_OBSERVER__` object on the JavaScript global (a global because it needs to exist before the module system initializes), which tracks tracing state and notifies subscribers via `onTracingStateChange`. 2. **JavaScript observer** (`PerformanceTracerObserver.js`): Provides a clean API to check tracing status (`isTracing()`) and subscribe to state changes. Gracefully handles environments where native support isn't available. 3. **LogBox integration** (`LogBoxData.js`): Subscribes to the performance tracer observer and: - Clears all LogBox messages when tracing starts - Skips logging new errors and exceptions while tracing is active This ensures trace measurements are not impacted by LogBox UI rendering during profiling sessions. Changelog: [GENERAL] [CHANGED] - Suppress LogBox warnings and errors during CDP performance tracing Reviewed By: hoxyq Differential Revision: D92527815 fbshipit-source-id: 975e042766194d9702be2c9e222fd452bb99d841
Summary: Similiar to how a specific port can be set also allow for setting a specific ip for the dev server. This allows for easy configuration to aid in generating [reproducible builds](https://izzyondroid.org/docs/reproducibleBuilds/). ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID] [ADDED] - Allow specifying dev server ip via gradle property For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [ANDROID] [ADDED] - Allow specifying dev server ip via gradle property Pull Request resolved: react#55531 Test Plan: 1) Add `reactNativeDevServerIp=localhost` to `gradle.properties` 2) Generate an APK 3) Analyze the APK and check that the value of the string resource type `react_native_dev_server_ip` matches the value set in `gradle.properties`. Reviewed By: cortinico Differential Revision: D93143296 Pulled By: CalixTang fbshipit-source-id: d0be23e9495f0ba1a6034dc31b6e725fd94a6a02
Summary: Pull Request resolved: react#55546 Changelog: [Internal] It looks like we have completely misunderstood the semantic of `clipChildren`. Looking at the Android [source code](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/core/java/android/view/ViewGroup.java;l=4607?q=setClipToPadding&ss=android%2Fplatform%2Fsuperproject&fbclid=IwY2xjawP8LExleHRuA2FlbQIxMQBzcnRjBmFwcF9pZAEwAAEeQkZx96WcTaA0mIUVGXeFAxH_aLVBMR0an0N8jeKCYX4E-j9HW0eLnzZcSJI_aem__yWzHP0_x-bPxCQS1nN19w), it seems that `setClipChildren(true)` on a ViewGroup X means clipping **each child** to the **child's own bounds**, not the parent's bound. Which means also [this](https://www.internalfb.com/code/aosp-vendor-meta-coresdk/[oculus-14.0%3Af0b9166acbb68da2e1e9f7622ba1b7fcee672ebc]/api-src/volumetricwindow/java/horizonos/view/interaction/providers/ViewInteractionNodeProvider.java?lines=502) line in HzOS is based on the same incorrect assumption. Ultimately, RN should not be populating `clipChildren` when `overflow: hidden` is set. Reviewed By: javache Differential Revision: D93237429 fbshipit-source-id: 0c3b18c829ef3880f8cc931263792c50aafa1333
Summary: Pull Request resolved: react#55547 Changelog: [Internal] It looks like we have completely misunderstood the semantic of `clipChildren`. Looking at the Android [source code](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/core/java/android/view/ViewGroup.java;l=4607?q=setClipToPadding&ss=android%2Fplatform%2Fsuperproject&fbclid=IwY2xjawP8LExleHRuA2FlbQIxMQBzcnRjBmFwcF9pZAEwAAEeQkZx96WcTaA0mIUVGXeFAxH_aLVBMR0an0N8jeKCYX4E-j9HW0eLnzZcSJI_aem__yWzHP0_x-bPxCQS1nN19w), it seems that `setClipChildren(true)` on a ViewGroup X means clipping **each child** to the **child's own bounds**, not the parent's bound. Which means also [this](https://www.internalfb.com/code/aosp-vendor-meta-coresdk/[oculus-14.0%3Af0b9166acbb68da2e1e9f7622ba1b7fcee672ebc]/api-src/volumetricwindow/java/horizonos/view/interaction/providers/ViewInteractionNodeProvider.java?lines=502) line in HzOS is based on the same incorrect assumption. Ultimately, RN should not be populating `clipChildren` when `overflow: hidden` is set. Reviewed By: Abbondanzo Differential Revision: D93238810 fbshipit-source-id: aff74b1f339fa707bcec1667580ce710a49f93dd
Summary: Pull Request resolved: react#55551 Changelog: [Internal] - Migrated 8 files in `xplat/js/react-native-github/packages/rn-tester/` from the manual `useRef(new Animated.Value(x))` pattern to the `useAnimatedValue(x)` hook. Reviewed By: fabriziocucci Differential Revision: D93258352 fbshipit-source-id: 778a2edbd3e168284c5e6b313bd3aa0102d0523f
Summary: Pull Request resolved: react#55434 This is used by `Image`, to render a different component when under a `TextAncestorContext`, but the underlying component is remapped by Fabric to instead be interpreted as `Image`. We can delete the code JS side safely, since it will use the existing registered View manager, Fabric will already redirect to. We can also then delete the redirection in Fabric, since the component is no longer ever used. See `componentNameByReactViewName.cpp`, where this is also removed. Changelog: [Internal] Reviewed By: mdvacca, javache, cortinico Differential Revision: D92481981 fbshipit-source-id: c33897efee124eaabed5447266389f34709650e0
Summary: Pull Request resolved: react#55539 Move `useAnimatedValueXY` and `useAnimatedColor` hooks into react-native-github so they can be used by OSS alongside the existing `useAnimatedValue` hook which can only take number value. ## Changelog: [General] [Added] - upstream useAnimatedColor and useAnimatedValueXY Reviewed By: fabriziocucci Differential Revision: D93125807 fbshipit-source-id: 74fb3925e8d495cddce7b28bdf852995854f85bb
…ing (react#55527) Summary: Pull Request resolved: react#55527 On API 25 (Nougat), the `DST_OUT` + `EVEN_ODD` inverse path technique in `clipWithAntiAliasing()` doesn't render correctly — it erases all image content instead of just the area outside the rounded rect. The bug manifests specifically with ReactImageView (Fresco-backed) but not plain ImageView. ReactImageView's Fresco hierarchy configures `RoundingParams.RoundingMethod.BITMAP_ONLY`, which causes the drawable chain to draw through a `BitmapShader`-based paint. This shader-based drawing interacts badly with the `EVEN_ODD` fill + `DST_OUT` compositing inside a hardware-accelerated `saveLayer` on API 24's Skia renderer. The fix replaces the `EVEN_ODD` + `DST_OUT` technique with a nested `saveLayer` using `DST_IN` compositing, following the same pattern used by Facebook's Keyframes library (`AbstractLayer.applyClip`). The mask shape is drawn into a separate layer; when restored with `DST_IN`, content is preserved only where the mask is opaque. A `drawColor(CLEAR)` call after `saveLayer` ensures the layer starts fully transparent — without this, on API 24, the layer may retain parent content, causing `DST_IN` to see non-zero alpha everywhere and clip nothing. Changelog: [Android][Fixed] - Fix image content disappearing on API 24 (Nougat) when antialiased border radius clipping is applied Reviewed By: NickGerleman Differential Revision: D92980234 fbshipit-source-id: ea6d05d8f06346371eab1c406538e91bbd78d0ae
…tency (react#54833) Summary: Pull Request resolved: react#54833 Changelog: [General][Changed] - Refactor how shadow tree revisions are promoted as latest for JS consistency Changes `LazyShadowTreeRevisionConsistencyManager::updateCurrentRevision` to pull the latest commited revision for a given surface id instead of accepting the new revision as a parameter. This way, the new revision is read from the same place for every update, which opens up the way to implement commit branching. This change will allow to always read from the JS tree revision, if it exists. Reviewed By: rubennorte Differential Revision: D88151490 fbshipit-source-id: 05b9c5e0bf87c7984513bc853a173ad25d4ff592
Summary: Pull Request resolved: react#54834 Changelog: [Internal] Adds a feature flag for the Fabric commit branching mechanism. Reviewed By: mdvacca Differential Revision: D88151491 fbshipit-source-id: d3c9b8579da205b2b222f8851a28a930f95b0f15
Summary: Pull Request resolved: react#54835 Changelog: [General][Changed] - Changed how React changes are commited to the Shadow Tree (behind a feature flag) Introduces two branches for the Shadow Tree commits - React always commits to the JS revision, while other sources should commit to the main revision. Commits to the JS revision schedule a "merge" commit at the end of the event loop pass to upstream the React changes to the main revision. "Merge" means taking the JS revision and promoting it to become the new main, losing changes that happened between fork and merge. Preservation of these changes is the responsibility of the party that created them, and they should be reapplied using a commit hook. The main synchronization points here are: - react revision promotion/promoted revision merge - During merge, the promoted revision is read and reset (UI thread), while promotion itself updated the promoted revision (JS thread) - react commit/promoted revision merge - In case the promoted revision being merged is the same as the current React revision, the latter needs to be reset (UI thread), so that during the next JS commit it forks from the "main" branch (JS thread). - react commit/react revision promotion - Both access the `currentReactRevision`, in case of a main thread render, those might happen to run concurrently on JS/UI thread Reviewed By: javache, rubennorte Differential Revision: D88151489 fbshipit-source-id: c70898ad25fbe5362c991be237c3fd0c1cf6ddcf
Summary: Pull Request resolved: react#54837 Changelog: [General][Changed] - The JS revision merge now is scheduled on the main thread Changes the Shadow Tree branching to schedule JS revision merge on the main thread instead of running it immediately at the end of the event loop. This will prevent shadow tree exhaustion when committing to the main branch, since all commits there will be happening on the same thread. Reviewed By: javache, rubennorte Differential Revision: D88736123 fbshipit-source-id: da9fc04bc80bd76749768fd3bfdbaa6a9c9ac368
…e root nodes on the React branch (react#54836) Summary: Pull Request resolved: react#54836 Changelog: [General][Added] Added a synchronization mechanism for the layout information between the React branch and the main branch of the ShadowTree Since layout constraints and layout context are being kept in the props of the `RootShadowNode`, it was possible for the JS revision merge to lose an update if it was being commited concurrently. Reviewed By: rubennorte Differential Revision: D88839901 fbshipit-source-id: f81d96dacf60b4e5da29da32ada468c967a2c9df
Summary: Pull Request resolved: react#55474 This diff adds two examples for the purpose of showcasing the layout-updating capabilities of the Shared Animation Backend. # Changelog [General][Added] - Animation Backend examples in RNTester Reviewed By: zeyap Differential Revision: D92714034 fbshipit-source-id: ca5c86e15d9a54a6db7d278fb46bb47aad012198
Summary: Pull Request resolved: react#55449 Further workflow optimisation after D92417918. Aims to improve speed of CI signals and reduce costs by excluding Android and iOS specific jobs when a PR contains changes exclusively within native code to one platform. Changelog: [Internal] Reviewed By: NickGerleman Differential Revision: D92512983 fbshipit-source-id: feb67ce140014352219ae2b5720fc819ec5e1c11
Summary: This reapplies the same changes from react#55453 to further jobs that were missing it. This should unblock nightlies that are currently failing. ## Changelog: [INTERNAL] - Pull Request resolved: react#55564 Test Plan: CI Reviewed By: cipolleschi Differential Revision: D93408173 Pulled By: cortinico fbshipit-source-id: 11823daeb8ef95fb5b9b8942f23f33353b6d6b6b
Summary: Pull Request resolved: react#55554 Everything in `initView` is already initialized implicitly, so should only be called during recycling, where we are also missing `selectionColor`. Changelog: [internal] Reviewed By: cortinico Differential Revision: D93327082 fbshipit-source-id: e70dc46618161104be29b4f904f9c038f83c4394
Summary: Pull Request resolved: react#55561 [changelog](https://github.com/facebook/flow/blob/main/Changelog.md) Changelog: [Internal] Reviewed By: cortinico Differential Revision: D93387946 fbshipit-source-id: 837475519440dc370e4d4f38abb2d22c935a9353
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>
Saad Najmi (Saadnajmi)
force-pushed
the
0.85-merge
branch
from
September 21, 2026 14:53
dcd3d60 to
8b21f63
Compare
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 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.
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.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
This was referenced Sep 22, 2026
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
0.84-merge. Retarget as predecessors land; stable releases retain separate stable branches.Depends on #3030; follow the 0.84 release checkpoint. #3034 is the 0.85 release; #3058 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 the exact React Native 0.85 fork point,
b5c815c1ca794ae5d1c0cb8b23e94418b7a4b140, into Microsoft0.84-mergeat2777fb703e8416d44eff7f5b5d29b498040a8883.The recreated mechanical merge is
49d78710e7a97fbbd0280ccd956d5e9d0e35afe1, with those exact first and second parents. The Facebook0.85-stabletip2049278a5a76fbebf27b2b86f58ce865b673ba14is intentionally excluded (59 commits after the fork point).This branch should remain based on
0.84-mergeuntil #3030 lands, then be retargeted tomain.Conflict resolution
The initial merge produced 83 conflicted paths / 290 conflict hunks / 249 terms / 7 deletion conflicts. Every path is represented exactly once below and every hunk is represented in the external
per-hunk-resolution-ledger.json.@react-native/jest-presetand updated the 0.85 dependency graph.macoshaste resolution, and AccessibilityInfo parity.platform/ios.250829098.0.6.Layered commits
49d78710aa440a629c8feac596966e2f385435256e8bc144109e8dabyarn.lock2b4fb687Podfile.lock37fc2849982851e82741f447404aa453dcd3d603Validation
All final gates passed from a fresh exported Git checkout:
dcd3d603focused rerun: exact upstream guard-alignment audit, CocoaPods, and RNTester macOS, iOS simulator, and visionOS simulator builds; all 10 gates passed and the exported checkout returned cleanDiff-tag gate and independent review
The executor treated compliance with
docsite/docs/contributing/diffs-with-upstream.mdas blocking and saved both the 101-path classification and validation logs. Justified exceptions are: 33 JSON/generated artifacts that cannot carry comments, 5 resolved deletions, 5 paths now equal to upstream, and 1 whitespace-only path.Independent judge requirement: re-audit the actual diff tags rather than trusting the executor summary. Fail this execution for any untagged or mistagged retained/new fork difference, stale tag around removed behavior, changed macOS-only file without a file-level
[macOS]marker, or upstream conditional that was restructured when a minimal additive clause would suffice.Evidence: external
diff-tag-audit-inventory.tsv,validation/diff-tag-audit.log,validation/diff-tag-final-checks.log,validation/judge-cleanup-summary.tsv, andjudge-cleanup-validation.md. The audit recordsAPPROVED_UPSTREAM_ALIGNMENTS=2andNON_COMMENT_DIFFS=0.The 0.85 feature/divergence analysis is preserved externally in
diffs-with-upstream-audit.md. The repository guide is byte-identical to37fc2849and has no net PR diff.Complete conflicted-path inventory
83 paths
.github/actions/setup-xcode/action.yml.gitignorepackage.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/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mmpackages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mmpackages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.jspackages/react-native/Libraries/Components/TextInput/TextInput.flow.jspackages/react-native/Libraries/Components/Touchable/Touchable.jspackages/react-native/Libraries/Components/View/ReactNativeViewAttributes.jspackages/react-native/Libraries/Components/View/ViewPropTypes.jspackages/react-native/Libraries/Image/RCTImageUtils.mmpackages/react-native/Libraries/LogBox/Data/parseLogBoxLog.jspackages/react-native/Libraries/LogBox/UI/LogBoxInspectorReactFrames.jspackages/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrame.jspackages/react-native/Libraries/Text/Text.jspackages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mmpackages/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mmpackages/react-native/Libraries/Text/TextProps.jspackages/react-native/Libraries/Types/CoreEventTypes.jspackages/react-native/Package.swiftpackages/react-native/React/Base/RCTUtils.mmpackages/react-native/React/CoreModules/RCTClipboard.mmpackages/react-native/React/CoreModules/RCTDeviceInfo.mmpackages/react-native/React/CoreModules/RCTKeyboardObserver.mmpackages/react-native/React/CoreModules/RCTPerfMonitor.mmpackages/react-native/React/CoreModules/RCTRedBox.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.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/TextInput/RCTTextInputUtils.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mmpackages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.hpackages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mmpackages/react-native/React/Modules/RCTLayoutAnimation.mpackages/react-native/React/Modules/RCTUIManager.mmpackages/react-native/React/Views/RCTComponentData.mmpackages/react-native/React/Views/RCTView.mpackages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspecpackages/react-native/ReactCommon/React-FabricComponents.podspecpackages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.hpackages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mmpackages/react-native/ReactCommon/react/renderer/components/view/BaseTouch.hpackages/react-native/ReactNativeApi.d.tspackages/react-native/jest/mocks/AccessibilityInfo.jspackages/react-native/jest-preset.jspackages/react-native/package.jsonpackages/react-native/scripts/ios-prebuild/headers.jspackages/react-native/scripts/ios-prebuild/hermes.jspackages/react-native/scripts/ios-prebuild/xcframework.jspackages/react-native/sdks/hermes-engine/hermes-engine.podspecpackages/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/rn-tester/Gemfilepackages/rn-tester/js/types/RNTesterTypes.jspackages/rn-tester/package.jsonpackages/typescript-config/package.jsonpackages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snappackages/virtualized-lists/package.jsonprivate/react-native-bots/package.jsonprivate/react-native-codegen-typescript-test/package.jsonyarn.lockNovel conflict classes
Final CI follow-up
This branch receives only these independently reviewed follow-up paths:
.github/scripts/__tests__/resolve-hermes-test.jspackages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mmpackages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mmpackages/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.