Skip to content

[pull] main from react:main#4490

Open
pull[bot] wants to merge 130 commits into
pvinis:mainfrom
react:main
Open

[pull] main from react:main#4490
pull[bot] wants to merge 130 commits into
pvinis:mainfrom
react:main

Conversation

@pull

@pull pull Bot commented Jun 9, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Summary:
`textDecorationStyle` is declared on `TextStyleIOS` in the public types but `wavy` is silently dropped: Fabric's C++ enum doesn't include `Wavy`, and UIKit's `NSUnderlineStyle` has no native wavy pattern bit. Separately, `dotted` and `dashed` map to `NSUnderlineStylePatternDot` / `NSUnderlineStylePatternDash` which don't match browser geometry on iOS.

This PR adds `TextDecorationStyle::Wavy` to the shared Fabric primitives / conversions (also unblocks the same value on Android, see companion PR #56768) and renders wavy / dotted / dashed decorations with custom Core Graphics paths.

**Implementation:**
- Wavy ranges are tagged with a custom `RCTCustomDecorationAttributeName` (storing the line kinds, stroke color, and style key) in `RCTAttributedTextUtils.mm` and painted by `RCTTextLayoutManager.mm` after `drawGlyphsForGlyphRange:`. Wavy uses an adaptation of WebKit's formula from `Source/WebCore/style/InlineTextBoxStyle.cpp` (`controlPointDistance = thickness * 1.5 + 0.5`, one cubic Bezier per wavelength, control points at the midpoint above and below the y-axis). At iOS point sizes the literal Blink amplitude renders as a very pronounced wave because Core Graphics paints in points (not device pixels), so the constants are dialed back to read as a clear-but-subtle browser-style wave at typical text sizes.
- Dotted uses a custom CG path with a zero-length dash + round line caps, producing actual circular dots at `2 * thickness` spacing.
- Dashed uses a custom CG path with `[2 * thickness, thickness]` intervals — short rectangular dashes with a tight gap, closer to Safari's geometry than UIKit's default.
- Solid and double continue to use UIKit's native `NSUnderlineStyle` pattern bits, so this PR does not touch the long-standing iOS Arial+bold solid-underline rendering bug tracked in #53935.
- The wavy drawing loop iterates `while x < x2` so the final cycle continues through the last character (including trailing punctuation that would otherwise be visually uncovered when the run width is not an integer multiple of the wavelength).

Companion PRs (independent, also targeting `main`):
- #56767 — fix(android): textDecorationColor on underlines + strikethroughs. Resolves #4579 (2015).
- #56768 — feat(android): textDecorationStyle solid/double/dotted/dashed/wavy. Shares the `TextDecorationStyle::Wavy` enum addition; whichever lands first leaves the other with a trivial conflict to resolve.

## Changelog:

[IOS] [ADDED] - `textDecorationStyle: 'wavy'` for `<Text>` (custom CoreGraphics path)
[IOS] [CHANGED] - `textDecorationStyle: 'dotted'` and `'dashed'` for `<Text>` render with custom CoreGraphics paths instead of UIKit pattern bits, matching browser geometry more closely

Pull Request resolved: #56769

Test Plan:
See the screenshot comparisons here:

https://www.internalfb.com/compare-screenshots-from-diff/D104680636

{F1990979243}

----

Side-by-side comparison on iPhone 17 sim (iOS 26.4) of a `<Text>` with `textDecorationLine="underline"` and `textDecorationStyle` cycling through `solid` / `double` / `dotted` / `dashed` / `wavy`, verified against Safari rendering of the same CSS. Trailing periods now fall under the wavy stroke. Verified with `textDecorationColor` set distinct from the foreground color.

```tsx
<Text style={{
  color: 'black',
  textDecorationLine: 'underline',
  textDecorationStyle: 'wavy',
  textDecorationColor: '#ff00aa',
}}>
  Hello
</Text>
```

Reviewed By: cipolleschi

Differential Revision: D104680636

Pulled By: cortinico

fbshipit-source-id: ac96e5b36530f7d243a4b85a67c576b62fe99866
@pull pull Bot locked and limited conversation to collaborators Jun 9, 2026
robhogan and others added 28 commits June 10, 2026 03:50
Summary:
Adds a temporary debug step to both jobs of the reusable npm publish workflow that requests the GitHub Actions OIDC token (npm audience) and prints its decoded claims. This makes it possible to compare the token claims against the npm Trusted Publisher configuration when the OIDC exchange fails. Only the decoded claims are printed, never the raw token.

Changelog: [Internal]

bypass-github-export-checks

Reviewed By: cortinico, cipolleschi

Differential Revision: D108108630

fbshipit-source-id: 6ae8be8c9e9e2e611b6941b336230a21f876e134
Summary:
iOS I18nManager.isRTL is not wrong but often misinterpreted.
This PR adds a comment to clarify what the native call does, since Apple doesn't.

Undocumented behavior made me waste several hours hunting for an i18n issue that incorrectly made me think RN had a bug. It's impossible to know this code is working as intended as original commit does not state why the code exist, only that it was changed, no mentions in changelogs, and no official docs from neither RN nor from Apple explains the combined or individual behavior.

## 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
-->

[iOS] [Added] - Added comment to clarify why i18nManager.isRTL may not return the expected value

Pull Request resolved: #51661

Test Plan:
This project demonstrates that compiling and running will give you the "wrong"/unexpected isRTL value when using Hebrew
https://github.com/scarlac/rtl-test

When Hebrew is added to the Xcode project under "Internationalization" then you will observe that `.isRTL` starts returning `true`.

Note that Xcode has a nasty caching bug that means that removing Hebrew:
1. Will Not remove Hebrew (you need to remove it twice)
2. Will Not cause `.isRTL` to revert behavior

The solution is to remove Hebrew 2x, and then to clear DerivedData (or Product -> Clean Build Folder..., or CMD+Shift+K)

In addition to these issues, it's important to note that calling .forceRTL or .allowRTL are persisted across restarts. This is clearly intentional but also not clearly documented, so you cannot "clear" these states. A reinstall is necessary, or a counter-value call is necessary. The demo project does not use these calls, so it's not an issue there.

Reviewed By: javache

Differential Revision: D108129627

Pulled By: cortinico

fbshipit-source-id: 34f5b5509f48c0f102d4234f0315c5f58e30e773
…erface (#57159)

Summary:
The hand-written TypeScript types declare only **12 of the 20** pointer event handlers that `ViewProps` actually exposes (per the Flow source and the generated `react-native-strict-api` types). The `PointerEvents` interface in `Libraries/Types/CoreEventTypes.d.ts` is missing:

- `onPointerOver` / `onPointerOverCapture`
- `onPointerOut` / `onPointerOutCapture`
- `onGotPointerCapture` / `onGotPointerCaptureCapture`
- `onLostPointerCapture` / `onLostPointerCaptureCapture`

These are part of the W3C Pointer Events API. They are declared in the Flow source — `Libraries/Components/View/ViewPropTypes.js` (all typed `(e: PointerEvent) => void`) — and in the generated `react-native-strict-api` types, but were missing from the hand-written TypeScript types, so TypeScript users get a type error using them on any built-in component:

```
Property 'onPointerOver' does not exist on type '... ViewProps'. Did you mean 'onPointerMove'?
```

This adds the 8 missing handlers to the `PointerEvents` interface (matching the existing 12) and a type test covering them.

## Changelog:

[GENERAL] [FIXED] - Add missing pointer event handler types (`onPointerOver`, `onPointerOut`, `onGotPointerCapture`, `onLostPointerCapture`, and their `*Capture` variants) to the TypeScript types

Pull Request resolved: #57159

Test Plan:
`yarn test-typescript` passes.

Verified before/after with `tsc -p packages/react-native/types/tsconfig.json`:
- **Before** (props absent): the added type test fails with `Property 'onPointerOver' does not exist on type '... ViewProps'`.
- **After**: passes — `<View onPointerOver={e => e.nativeEvent.pointerId} … />` type-checks for all 8 handlers, with the event correctly inferred as `PointerEvent`.

Reviewed By: huntie

Differential Revision: D108114655

Pulled By: fabriziocucci

fbshipit-source-id: 08d364d2e156953027c0d951ab3d895a1eeab159
Summary:
X-link: #57133

`JSIndexedRAMBundle` was a deprecated legacy-architecture class (annotated `[[deprecated("This API will be removed along with the legacy architecture.")]]` and guarded by `#ifndef RCT_REMOVE_LEGACY_ARCH`) for parsing indexed RAM bundles. It was only ever instantiated by `Instance::loadRAMBundleFromString` and `Instance::loadRAMBundleFromFile`, and those two `Instance` methods have no callers anywhere in fbsource: the old Android entry point `CatalystInstanceImpl` that used to call them has been deleted, and the new architecture (`ReactInstance` / bridgeless) routes `loadScriptFromFile` through `loadJSBundleFromFile` in the new runtime, never touching the legacy `Instance`. The only remaining user was its own unit test.

This removes `JSIndexedRAMBundle` and the two dead `Instance` RAM-bundle loaders that referenced it:

- Delete `JSIndexedRAMBundle.cpp`, `JSIndexedRAMBundle.h`, and `JSIndexedRAMBundleTest.cpp`.
- Remove `loadRAMBundleFromString` / `loadRAMBundleFromFile` from `Instance.cpp` / `Instance.h` and drop the now-unused include.
- Drop `JSIndexedRAMBundle.h` from `CXXREACT_PUBLIC_HEADERS` in `cxxreact/BUCK`.
- Update the committed C++ API snapshots accordingly.

The broader legacy RAM-bundle machinery (`RAMBundleRegistry`, `JSModulesUnbundle`, `Instance::loadRAMBundle`, `JSIExecutor::setBundleRegistry`) is left in place; it belongs to the same `RCT_REMOVE_LEGACY_ARCH` legacy bridge and can be removed as a follow-up.

Changelog: [Internal]

Reviewed By: javache, mdvacca

Differential Revision: D108001933

fbshipit-source-id: 4b0f12258e8caff1991847a4bb211e94fbecefa8
Summary:
X-link: #57125

Fixes a crash (`java.lang.RuntimeException` via `NoSuchElementException`) in `SkewMatrixHelper.isAffine2DTransformWithSkew` and `buildAffine2DMatrix` when a transform array contains an empty map entry (no keys).

Changelog: [Android][Fixed] Fix crash in SkewMatrixHelper

Reviewed By: Abbondanzo

Differential Revision: D107763077

fbshipit-source-id: d61819e875e2334c6d6b121aba1876ec3153c002
Summary:
X-link: #57134

`telemetryTimePointToSecondsSinceEpoch()` in `ReactCommon/react/utils/Telemetry.h` was a `static inline` helper that converted a `TelemetryTimePoint` to seconds since the UNIX epoch, but it had no callers anywhere. This is a pure dead-code removal. The sibling `clockCast` helper it used is left in place (it remains part of the public API surface).

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012910

fbshipit-source-id: 5361ef87aaae3c676b542059c0a9d6475b33de45
Summary:
X-link: #57135

`ClearableSynchronizedPool` (an `internal` Kotlin class in `ReactAndroid/.../common/`) was a variant of androidx `Pools.SynchronizedPool` adding a `clear()` method, but it was never instantiated or referenced anywhere. The live event pools (`OnLayoutEvent`, `PointerEvent`, `TouchEvent`, `ScrollEvent`) use androidx `SynchronizedPool` directly. This removes the orphaned class.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012905

fbshipit-source-id: d5972b4c47d054310c8b7803482fa4e6b7a9928e
Summary:
X-link: #57136

`ReactRootView.simulateAttachForTesting()` was a package-private `VisibleForTesting` helper that set up the attach flags and dispatchers, but no test or production code ever called it. `RootViewTest` exercises `startReactApplication`/`unmountReactApplication` and the sibling `simulateCheckForKeyboardForTesting`, never this method. This removes the orphaned helper.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012908

fbshipit-source-id: ee550f66fae07bfeb75fd59b85d5d812fea7e2c1
Summary:
X-link: #57145

`HostTargetController::installPerfIssuesBinding()` was declared in `jsinspector-modern/HostTarget.h` but had no definition anywhere and no callers. (`HostTargetController` is `final`, so the method is not an override.) A declared-but-never-defined non-virtual member cannot be invoked — any call would be a link error — so this is unreachable dead code. The unrelated, live `HostTarget::installPerfIssuesBinding` (a different class) is left intact.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012907

fbshipit-source-id: 5c7f14a7956f67e3e884a32f95aa2e50fd0f3ea6
Summary:
X-link: #57143

`RAMBundleRegistry::singleBundleRegistry` was a static factory that wrapped the public `RAMBundleRegistry` constructor, but it had no callers anywhere. Objects are constructed via the public constructor directly. This removes the orphaned factory; the sibling `multipleBundlesRegistry`, the constructor, `MAIN_BUNDLE_ID`, `registerBundle`, `getModule`, and `getBundle` are all left intact.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012903

fbshipit-source-id: 5d8f18ebce2bb19abd124dbb7c9eda60baa0f272
Summary:
X-link: #57137

`RAMBundleRegistry::multipleBundlesRegistry` was a static factory wrapping the public `RAMBundleRegistry` constructor (the one taking a main bundle plus a factory callback), but it had no callers anywhere. Registries are constructed via the public constructor directly. With the sibling `singleBundleRegistry` already removed, this deletes the last orphaned static factory; the constructor and the rest of the class remain intact.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012906

fbshipit-source-id: 7bb403ff7660317f0f5b422dca140ac69e048dac
Summary:
X-link: #57142

`StartupLogger::getRunJSBundleEndTime()` was a public getter that returned the `runJSBundleEndTime` member, but it had no callers. `NativePerformance` is the only consumer of `StartupLogger` and reads the start-time getters plus `getAppStartupEndTime`, never this end-time getter. This removes the dead getter. The backing member `runJSBundleEndTime` is kept because `logStartupEvent`/`reset` still write it.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012912

fbshipit-source-id: ac6348b8223fba8695843340e99d7e277bf4f60a
Summary:
X-link: #57140

`StartupLogger::getInitReactRuntimeEndTime()` was a public getter returning the `initReactRuntimeEndTime` member, but it had no callers. `NativePerformance` (the only consumer of `StartupLogger`) never reads it. This removes the dead getter; the backing member `initReactRuntimeEndTime` is kept because `logStartupEvent`/`reset` still write it.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012904

fbshipit-source-id: 56a6710c485a926caf82ecb1cc08e845571b2dd8
Summary:
X-link: #57138

`getWarningHighlightColor` in `LogBox/UI/LogBoxStyle.js` was an exported color helper with no importers. It is a duplicate of the live `getHighlightColor` (identical `rgba(252, 176, 29, ...)` value), which is the one actually used by LogBox UI. This removes the dead duplicate.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012913

fbshipit-source-id: dd22adcf191284eb3c81778f92a8c72be15f9d30
Summary:
X-link: #57139

`RCTJSCSetOptionType` was a file-local `using` alias (`BOOL (*)(const char *)`) in `RCTPerfMonitor.mm` that was never referenced. The concrete `RCTJSCSetOption` function is called directly at its two call sites; no code ever used the function-pointer typedef. This removes the dead alias.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012902

fbshipit-source-id: 2d8b207c6d216356a5b4eef9b71effda47db5744
Summary:
X-link: #57141

`RCTImageStoreManager.h` declared `RCT_EXTERN void RCTEnableImageStoreManagerStorageQueue(BOOL enabled);`, but no definition exists anywhere in the tree and nothing calls it. A declared-but-never-defined external function is uncallable (any use would be a link error), so this is unreachable dead code.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D108012909

fbshipit-source-id: 807a5dd83616bf277c17f3832a65f92bc6f856b9
Summary:
Pull Request resolved: #57163

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D108172771

fbshipit-source-id: 9e3bc0d869e297b3b92713783356d0af58d07b91
Summary:
if you check the search results you won't find any usages of `UTFSequence` module. Also it wasn't documented.

So, it can be treated as dead-code and need to be removed from RN package

```bash
open https://github.com/search?q=%22UTFSequence.BOM%22&type=code
open https://github.com/search?q=%22UTFSequence.BULLET%22&type=code
open https://github.com/search?q=%22UTFSequence.BULLET_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.MIDDOT%22&type=code
open https://github.com/search?q=%22UTFSequence.MIDDOT_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.MIDDOT_KATAKANA%22&type=code
open https://github.com/search?q=%22UTFSequence.MDASH%22&type=code
open https://github.com/search?q=%22UTFSequence.MDASH_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.NDASH%22&type=code
open https://github.com/search?q=%22UTFSequence.NDASH_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.NEWLINE%22&type=code
open https://github.com/search?q=%22UTFSequence.NBSP%22&type=code
open https://github.com/search?q=%22UTFSequence.PIZZA%22&type=code
open https://github.com/search?q=%22UTFSequence.TRIANGLE_LEFT%22&type=code
open https://github.com/search?q=%22UTFSequence.TRIANGLE_RIGHT%22&type=code
```
In RN repo in used in one places and can be replaced with string litaral:  https://github.com/facebook/react-native/blob/8bcfb3ba1c16b1ba45058798bf43ecdc9bd42d3a/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js#L109

## Changelog:

[GENERAL] [DEPRECATED] - Mark undocumented `UTFSequence` module as deprecated

X-link: #57122

Reviewed By: zeyap

Differential Revision: D108005122

Pulled By: javache

fbshipit-source-id: 0641b1cd90cc9c4924a4afb3779a94b58e7153d4
Summary:
Chronos Job Instance ID: 1125908308267201
Sandcastle Job Instance ID: 58546795604338354

Processed xml files:
android_res/com/facebook/fds/listcell/res/values/strings.xml
android_res/com/facebook/fds/contextualmessage/res/values/strings.xml
android_res/com/bloks/foa/cds/bottomsheet/strings/res/values/strings.xml
android_res/com/facebook/fds/floatingpivotcta/res/values/strings.xml
android_res/com/facebook/components/list/fb/fragment/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/video/components/feed/res/values/strings.xml
android_res/com/facebook/runtimepermissions/res/values/strings.xml
android_res/com/facebook/notifications/res/values/strings.xml
android_res/com/facebook/ui/mainview/res/values/strings.xml
android_res/com/facebook/navigation/communitypanel/res/values/strings.xml
android_res/com/facebook/fds/pivotlink/res/values/strings.xml
android_res/com/facebook/fds/subnavigationbar/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/brandasset/res/values/strings.xml
android_res/com/facebook/events/create/loading/res/values/strings.xml
android_res/com/facebook/widget/titlebar/res/values/strings.xml
android_res/com/facebook/reportaproblem/res/values/strings.xml
android_res/com/facebook/fds/inputchip/res/values/strings.xml
android_res/com/facebook/fds/actionchip/res/values/strings.xml
android_res/com/facebook/fds/composer/res/values/strings.xml
android_res/com/facebook/oxygen/preloads/integration/tosacceptance/res/values/strings.xml
android_res/com/facebook/bizapp/auth/res/values/strings.xml
android_res/com/facebook/bizapp/login/res/values/strings.xml
android_res/com/facebook/playground/common/fblogin/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/textinput/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/navbar/res/values/strings.xml
android_res/com/facebook/bootstrap/app/res/values/strings.xml
android_res/com/facebook/secretgarden/app/res/values/strings.xml
android_res/com/facebook/mig/dialog/alert/res/values/strings.xml
android_res/com/facebook/presence/status/res/values/strings.xml
android_res/com/facebook/fds/progressbar/res/values/strings.xml
android_res/com/facebook/screencast/res/values/strings.xml
android_res/com/facebook/bugreporter/core/res/values/strings.xml
android_res/com/facebook/bugreporter/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/searchfield/res/values/strings.xml
android_res/com/facebook/analytics/view/tracking/res/values/strings.xml
android_res/com/facebook/webview/res/values/strings.xml
android_res/com/facebook/katana/internsettings/sandboxpicker/res/values/strings.xml
libraries/bloks-core/rendeer/res/values/strings.xml
libraries/bloks-debug/com/bloks/debug/res/values/strings.xml
android_res/com/facebook/katana/res/values/strings.xml
android_res/com/facebook/account/switcher/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/facebook/growth/res/values/strings.xml
android_res/com/facebook/wem/res/values/strings.xml
android_res/com/facebook/timeline/ui/common/res/values/strings.xml
android_res/com/facebook/photos/editgallerylauncher/res/values/strings.xml
android_res/com/facebook/photos/crop/res/values/strings.xml
android_res/com/facebook/fb4a/base/res/values/strings.xml
../arvr/libraries/ocui/res/values/strings.xml
android_res/com/oculus/auth/authenticator/meta/res/values/strings.xml
android_res/com/oculus/horizon/platformplugin/res/values/strings.xml
java/com/oculus/horizon/platform/res/known_signer_res/values/strings.xml
android_res/com/oculus/horizon/try_before_you_buy/res/values/strings.xml
android_res/com/oculus/horizon/common/res/values/strings.xml
android_res/com/oculus/horizon/linkedaccounts/res/values/strings.xml
android_res/com/oculus/auth/authenticator/work/res/values/strings.xml
android_res/com/oculus/auth/authenticator/threadssso/res/values/strings.xml
android_res/com/oculus/auth/authenticator/oculus/res/values/strings.xml
android_res/com/oculus/auth/authenticator/instagramsso/res/values/strings.xml
android_res/com/oculus/auth/authenticator/horizonworldsplatform/res/values/strings.xml
android_res/com/oculus/auth/authenticator/facebooksso/res/values/strings.xml
android_res/com/oculus/auth/authenticator/facebook/res/values/strings.xml
android_res/com/oculus/demoapp/res/values/strings.xml
android_res/com/facebook/wearable/sdk/watchface/res/values/strings.xml
android_res/com/facebook/wearable/common/wds/switchbutton/res/values/strings.xml
android_res/com/facebook/wearable/apps/weather/res/values/strings.xml
android_res/com/facebook/wearable/common/watchface/complications/res/values/strings.xml
android_res/com/facebook/wearable/common/watchface/res/values/strings.xml
android_res/com/facebook/wearable/apps/weather/panel/res/values/strings.xml
android_res/com/facebook/wearable/apps/mockappmedium/res/values/strings.xml
android_res/com/instagram/ui/common/res/values/strings.xml
android_res/com/instagram/actionbar/strings/res/values/strings.xml
android_res/com/instagram/tabs/strings/res/values/strings.xml
android_res/com/instagram/igds/newbadge/res/values/strings.xml
android_res/com/instagram/avatar/strings/res/values/strings.xml
android_res/com/instagram/icons/igax/res/values/strings.xml
android_res/com/instagram/debug/strings/res/values/strings.xml
android_res/com/instagram/language/strings/res/values/strings.xml
android_res/com/instagram/util/number/strings/res/values/strings.xml
android_res/com/meta/metaai/imagine/memu/permissions/res/values/strings.xml
android_res/com/instagram/creation/genai/magicmod/model/strings/res/values/strings.xml
android_res/com/instagram/common/timeformat/strings/res/values/strings.xml
android_res/com/instagram/bugreporter/strings/res/values/strings.xml
android_res/com/instagram/homecoming/feeds/inboxtabs/strings/res/values/strings.xml
android_res/com/instagram/zero/banner/strings/res/values/strings.xml
android_res/com/instagram/voice/voicemessagebar/strings/res/values/strings.xml
android_res/com/instagram/homecoming/feeds/feedpills/strings/res/values/strings.xml
android_res/com/instagram/homecoming/feeds/mergedfeeds/strings/res/values/strings.xml
android_res/com/instagram/unifiedvideo/scrubber/strings/res/values/strings.xml
android_res/com/instagram/ui/mediaactions/strings/res/values/strings.xml
android_res/com/instagram/zero/strings/res/values/strings.xml
android_res/com/instagram/ui/dialog/strings/res/values/strings.xml
android_res/com/instagram/ui/text/strings/res/values/strings.xml
android_res/com/instagram/ui/menu/strings/res/values/strings.xml
android_res/com/instagram/igds/dialog/res/values/strings.xml
android_res/com/instagram/igds/headline/strings/res/values/strings.xml

allow-large-files
ignore-conflict-markers
opt-out-review
drop-conflicts

Differential Revision: D108245950

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

Summary:
Pull Request resolved: #57167

Update GitHub Actions workflow files to reflect React Native's migration from `facebook/react-native` to `react/react-native`.

Changes the fork-prevention guards (`github.repository == 'facebook/react-native'`) to use the new org across 17 workflow files (28 occurrences total), plus updates the `repo_owner` parameter in the issue monitoring workflow.

Changelog: [Internal]

Reviewed By: fabriziocucci

Differential Revision: D108246445

fbshipit-source-id: 010631838a05e366da525aa765d3ea4376f9d145
…tate and updatePadding (#57181)

Summary:
Pull Request resolved: #57181

## Summary

Fixes `RetryableMountingLayerException: Unable to find viewState for tag N. Surface stopped: false` crashing `com.oculus.firsttimenux` from the Fabric batch-mount path.

Logview link: [252c85116a7ab5c4ec93ef3c3373cf9d](https://www.internalfb.com/logview/system_vros_crashes/252c85116a7ab5c4ec93ef3c3373cf9d)

## Root cause

`IntBufferBatchMountItem.execute` dispatches batched mount instructions. When a view tag is transiently missing from the registry (async race between the JS commit and native mount — surface teardown / out-of-order delivery), mount methods that call the throwing `getViewState` raise `RetryableMountingLayerException`. `MountItemDispatcher.dispatchMountItems` only retries this exception `if (item is DispatchCommandMountItem)` (comment: *"Only DispatchCommandMountItem supports retries"*) — `IntBufferBatchMountItem` is not one, so the "retryable" exception propagates uncaught and crashes the app.

The RN team has been hardening each batch mount method to handle missing viewState gracefully (soft-log + early return): `addViewAt` in `D99760257` (which references this same MID and process), `updateOverflowInset` in `D104400233`; `removeViewAt`, `updateProps`, `updateLayout`, and `deleteView` were already graceful. The originally-reported `addViewAt` stack is therefore already fixed in trunk — crashes persist on release branch v201/v203 which predates `D99760257`.

`updateState` (`INSTRUCTION_UPDATE_STATE`) and `updatePadding` (`INSTRUCTION_UPDATE_PADDING`) were the two remaining throwing `getViewState` callers reachable from `IntBufferBatchMountItem.execute` — unfixed siblings of the same multi-site pattern and live/contributing crash sites for the same exception.

## Fix

Change `updateState` and `updatePadding` to use `getNullableViewState`; on null, log a `SURFACE_MOUNTING_MANAGER_MISSING_VIEWSTATE` soft exception and return early — identical to the established pattern in `addViewAt`, `updateOverflowInset`, `updateProps`, `updateLayout`, and `deleteView`. This is not a throw-downgrade of an invariant: `RetryableMountingLayerException` is an explicitly retryable transient signal, and this matches the canonical handling the RN team applies to every other batch mount method.

The non-batch callers (`sendAccessibilityEvent`, `setJSResponder`) are intentionally left unchanged — `sendAccessibilityEvent` is already protected by its own `try/catch (RetryableMountingLayerException)` in `SendAccessibilityEventMountItem.execute`.

## Changelog:

[Android] [Fixed] - Handle missing viewState gracefully in `SurfaceMountingManager.updateState` and `updatePadding` to avoid `RetryableMountingLayerException` crashes from the Fabric batch-mount path

Reviewed By: javache

Differential Revision: D107768754

fbshipit-source-id: 5861bcae5d598b6ffae48c32830d16323474d8bf
…57180)

Summary:
Pull Request resolved: #57180

## Changelog:

[Internal]

Reviewed By: javache

Differential Revision: D108062822

fbshipit-source-id: 5e49107d34db31fc5e21e913cf74ec0e2ed366aa
Summary:
Pull Request resolved: #57173

- All legacy casting syntax has been converted, so we remove `casting_syntax=both` to use the default option of only allowing the new `as` casting syntax
- Removed all other options that are already the default value

Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D108281827

fbshipit-source-id: 0557fd0e45061c5c3c1d2f517caa3491921d153d
Summary:
X-link: #57127

Changelog: [Android][Fixed] Prevent React Native containers from delaying native touches

[`shouldDelayChildPressedState`](https://developer.android.com/reference/android/view/ViewGroup#shouldDelayChildPressedState%28%29) returns `true` for compatibility reasons and non-scrollable containers should override it and return `false` to prevent the press feedback from being delayed.

Reviewed By: javache

Differential Revision: D108003374

fbshipit-source-id: 5c9cff01a088b09d3de27396a834ee370ae740ce
Summary:
if you check the search results you won't find any usages of `UTFSequence` module. Also it wasn't documented.

So, it can be treated as dead-code and needs to be removed from RN package

```bash
open https://github.com/search?q=%22UTFSequence.BOM%22&type=code
open https://github.com/search?q=%22UTFSequence.BULLET%22&type=code
open https://github.com/search?q=%22UTFSequence.BULLET_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.MIDDOT%22&type=code
open https://github.com/search?q=%22UTFSequence.MIDDOT_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.MIDDOT_KATAKANA%22&type=code
open https://github.com/search?q=%22UTFSequence.MDASH%22&type=code
open https://github.com/search?q=%22UTFSequence.MDASH_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.NDASH%22&type=code
open https://github.com/search?q=%22UTFSequence.NDASH_SP%22&type=code
open https://github.com/search?q=%22UTFSequence.NEWLINE%22&type=code
open https://github.com/search?q=%22UTFSequence.NBSP%22&type=code
open https://github.com/search?q=%22UTFSequence.PIZZA%22&type=code
open https://github.com/search?q=%22UTFSequence.TRIANGLE_LEFT%22&type=code
open https://github.com/search?q=%22UTFSequence.TRIANGLE_RIGHT%22&type=code
```
In RN repo in used in one places and can be replaced with string litaral:  https://github.com/facebook/react-native/blob/8bcfb3ba1c16b1ba45058798bf43ecdc9bd42d3a/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js#L109

## Changelog:

[GENERAL] [DEPRECATED] - Mark undocumented `UTFSequence` module as deprecated

Pull Request resolved: #57184

Test Plan: ...

Reviewed By: cortinico

Differential Revision: D108397866

Pulled By: javache

fbshipit-source-id: 3b343fb6a33f064df47f0819c84b127b64706a97
…r shared animated backend (#57178)

Summary:
Pull Request resolved: #57178

## Changelog:

[Internal][Fixed] - Fix native-driven props dropped on Animated.FlatList/SectionList under shared animated backend

Under the shared animated backend (`cxxNativeAnimatedEnabled` + `useSharedAnimatedBackend`), a `useNativeDriver: true` animation on `Animated.FlatList` or `Animated.SectionList` (or any class composite that wraps a host) was silently dropped — e.g. an opacity fade never committed, so the content stayed at its initial value.

Root cause: `AnimatedProps.#connectShadowNode` resolves the target shadow node via `getNodeFromPublicInstance(target.instance)`. `FlatList`/`SectionList` are class components (not `forwardRef`-to-host), so the ref is the composite instance, which has no `__internalInstanceHandle`; `getNodeFromPublicInstance` returns `null` and `connectAnimatedNodeToShadowNodeFamily` is never called. The C++ shared backend commits animated props only through a connected `ShadowNodeFamily` and has no viewTag fallback when `useSharedAnimatedBackend` is enabled, so the value is dropped. `Animated.View` and `Animated.ScrollView` are unaffected because their ref is the host instance; with `cxxNativeAnimatedEnabled` alone the legacy viewTag path still commits, so this only regresses once the shared backend is on.

Fix: in `#connectShadowNode`, resolve the shadow node from the host instance rather than the composite — try the instance, then `getNativeScrollRef()` (covers `FlatList`/`SectionList`), then fall back to the host tag that `#connectAnimatedView` already resolved via `findNodeHandle`, looked up natively with `findShadowNodeByTag_DEPRECATED`. The `#connectAnimatedView` viewTag path is unchanged.

Reviewed By: cipolleschi, javache

Differential Revision: D108155219

fbshipit-source-id: 7ba986300cf4a050d8b5d1ecd22ea200cfcf4b10
Summary:
The `PointerEventsProcessor` C++ pointer-events implementation already supports pointer capture and can emit `topGotPointerCapture` and `topLostPointerCapture`. `TouchEventEmitter` has handlers for both events.

Android base view config was not registering the events:

- `onGotPointerCapture` / `onGotPointerCaptureCapture`
- `onLostPointerCapture` / `onLostPointerCaptureCapture`

This adds the missing Android registrations and adds an EventDispatching integration test covering capture and bubble dispatch for both pointer capture events.

## Changelog:

[Android] [Fixed] - Register pointer capture event handlers in the Android base view config

Pull Request resolved: #57176

Test Plan:
Added coverage in `EventDispatching-itest.js` for `onGotPointerCapture`, `onGotPointerCaptureCapture`, `onLostPointerCapture`, and `onLostPointerCaptureCapture`.

`git diff --check main...HEAD`

Reviewed By: cortinico

Differential Revision: D108321784

Pulled By: Abbondanzo

fbshipit-source-id: ce5c6d369dae15030062457d2857ae501e02e224
Summary:
Pull Request resolved: #57179

## Changelog:

[Internal] - Serve C++ Native Animated from core (non sharedbackend path)

Wire the C++ implementation of Native Animated (the `AnimatedModule`) into the framework core so that, when `cxxNativeAnimatedEnabled` is enabled, it is served without per-app wiring. The flag is flipped in a separate diff.

Android drives the animated render loop internally, so `DefaultTurboModules` serves `AnimatedModule` whenever `cxxNativeAnimatedEnabled` is on. iOS/macOS need the platform `RCTAnimatedModuleProvider` to drive rendering when the shared animated backend is off; with the shared backend on, `DefaultTurboModules` serves it instead. The default `RCTReactNativeFactory` delegate installs the provider, and a `React-RCTAnimatedModuleProvider` podspec is added for CocoaPods.

Reviewed By: christophpurrer

Differential Revision: D108197770

fbshipit-source-id: 9dcce1965b67dae96422f44a4656e030f18265a6
shashank-bhatotia and others added 30 commits June 23, 2026 02:28
…rashing (#57298)

Summary:
`PropsAnimatedNode.updateView()` iterates its mapped property nodes every frame and calls `requireNotNull(node) { "Mapped property node does not exist" }` for each one. When a connected component is unmounted (for example during a navigation transition), its child animated nodes can be dropped from `NativeAnimatedNodesManager` while a frame callback for the prop node is still in flight. On the next `updateView` the mapped node is gone, `requireNotNull` throws, and the app crashes:

```
java.lang.IllegalArgumentException: Mapped property node does not exist
  at com.facebook.react.animated.PropsAnimatedNode.updateView(PropsAnimatedNode.kt)
  at com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes(NativeAnimatedNodesManager.java)
  at com.facebook.react.animated.NativeAnimatedNodesManager.runUpdates(NativeAnimatedNodesManager.java)
```

This is a teardown race: by the time the mapped node has been removed, the connected view is being torn down, so there is no meaningful value to write for that prop on this frame. This change skips a missing mapped node instead of throwing.

It mirrors the guard already at the top of the same method, which returns early when the view itself is gone (`connectedViewTag == -1`), and matches the lenient behavior on iOS, where `RCTPropsAnimatedNode` iterates its parent nodes with `isKindOfClass:` checks and a missing (`nil`) node is simply skipped.

Fixes #37267.

## Changelog:

[ANDROID] [FIXED] - Prevent "Mapped property node does not exist" crash in `PropsAnimatedNode.updateView` when a mapped node is removed during an in-flight native animation

Pull Request resolved: #57298

Test Plan:
The crash is a timing-dependent race, so it reproduces probabilistically rather than deterministically. Using the repro from #37267 (a screen with many simultaneous native-driver animations, navigating in and out repeatedly) and increasing **Animator duration scale** in Developer Options widens the window and makes it reproduce reliably on lower-end devices.

- **Before:** rapidly navigating away from a screen with running native-driver animations crashes with `IllegalArgumentException: Mapped property node does not exist`.
- **After:** the stale node is skipped and no crash occurs.
- **Happy path unaffected:** when all mapped nodes are present, behavior is identical. The change only adds an early `continue` for the already-removed-node case, so no prop update is lost for live nodes.

Reviewed By: zeyap, christophpurrer

Differential Revision: D109253948

Pulled By: fabriziocucci

fbshipit-source-id: 76c1a4c89e7cdd4476a31866d4871e90ddb98324
Summary:
Pull Request resolved: #57308

`private/helloworld` depends on `react-native/core-cli-utils` (it imports `android`, `app`, and `apple` from it to build the app), but that package is no longer published to npm nor to the local Verdaccio proxy that the e2e build installs against. Since `private/helloworld` is excluded from the workspace, it installs standalone, so its `"*"` dependency on `react-native/core-cli-utils` could not resolve and `npm install` failed with `E404`.

Resolve `"*"`-pinned in-repo `react-native/*` dependencies to a local `file:` path in `_prepareHelloWorld()`, so helloworld consumes `core-cli-utils` directly from its in-repo reference implementation regardless of whether it is published. This mirrors how the `react-native` package itself is already wired up for the e2e build.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D109374920

fbshipit-source-id: b6668785387511fa54580ee75e81f13168782797
Summary:
Pull Request resolved: #57309

`Numeric` is defined and exported by `AnimatedImplementation` and re-exported as a named export from `Animated`, but it was missing from the `Animated` namespace object assembled in `AnimatedExports`.

We have usages of this in fbsource, therefore export on the public API for parity.

Changelog:
[General][Added] - **Strict TypeScript API**: Export `Animated.Numeric`

Differential Revision: D109430487

fbshipit-source-id: 3202271cefceb21c6e687b7ecd87c97d8846fb6e
Summary:
Chronos Job Instance ID: 1125908308531542
Sandcastle Job Instance ID: 58546795626153460

Processed xml files:
android_res/com/facebook/payments/exception/res/values/strings.xml
android_res/com/facebookpay/offsite/inappwebviewer/adsdisclosurefooter/res/values/strings.xml
android_res/com/facebook/onsitesignals/autofill/res/values/strings.xml
android_res/com/facebook/browser/extension/savelink/res/values/strings.xml
android_res/com/facebook/browser/extension/report/res/values/strings.xml
android_res/com/facebook/browser/lite/extensions/p2m/res/values/strings.xml
android_res/com/facebook/webview/res/values/strings.xml
android_res/com/facebook/clicktocall/res/values/strings.xml
android_res/com/facebook/browser/extension/callextension/res/values/strings.xml
android_res/com/facebook/browser/lite/extensions/safebrowsing/views/messenger/res/values/strings.xml
android_res/com/meta/mfa/authenticator/strings/res/values/strings.xml
android_res/com/facebook/browser/lite/extensions/mfa/strings/res/values/strings.xml
android_res/com/facebook/geodesic/core/base/res/values/strings.xml
android_res/com/facebook/geodesic/header/res/values/strings.xml
android_res/com/facebook/geodesic/toast/res/values/strings.xml
android_res/com/facebook/browser/lite/strings/res/values/strings.xml
android_res/com/facebook/mig/accessibility/res/values/strings.xml
android_res/com/facebook/mig/dialog/bottomsheet/res/values/strings.xml
android_res/com/facebook/notifications/res/values/strings.xml
android_res/com/facebook/fds/actionchip/res/values/strings.xml
android_res/com/facebook/payments/appinfo/res/values/strings.xml
android_res/com/facebook/bizapp/bizposts/res/values/strings.xml
android_res/com/facebook/browser/lite/bondi/featureview/nativebase/res/values/strings.xml
android_res/com/facebook/browser/lite/bondi/lite/res/values/strings.xml
android_res/com/facebook/browser/lite/extensions/moreinfo/lite/res/values/strings.xml
android_res/com/facebook/browser/lite/chrome/messenger/res/values/strings.xml
android_res/com/facebook/messaging/browser/util/res/values/strings.xml
android_res/com/facebook/messaging/quickpromotion/chatentity/composer/res/values/strings.xml
android_res/com/facebook/presence/note/ui/shared/res/values/strings.xml
android_res/com/facebook/messaging/memories/res/values/strings.xml
android_res/com/facebook/messaging/nativepagereply/pagenotificationsetting/res/values/strings.xml
android_res/com/facebook/messaging/media/download/res/values/strings.xml
android_res/com/facebook/messaging/groups/adminmodelv2/nux/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/xapp/messaging/composer/mention/component/res/values/strings.xml
android_res/com/facebook/messaging/linkhandling/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/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/ipc/stories/viewer/res/values/strings.xml
android_res/com/facebook/audience/stories/archive/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/ipc/stories/viewersheet/res/values/strings.xml
android_res/com/facebook/messaging/avatar/avatardetail/res/values/strings.xml
android_res/com/facebook/messaging/threadsettings/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/xapp/messaging/threadview/renderer/photo/touchhandler/res/values/strings.xml
android_res/com/facebook/xapp/messaging/threadview/renderer/decorators/messagereply/res/values/strings.xml
android_res/com/facebook/messaginginblue/threadview/features/informTreatment/res/values/strings.xml
android_res/com/facebook/messaginginblue/threadview/data/gql/adapters/message/platformmetadata/persona/res/values/strings.xml
android_res/com/facebook/mig/xma/template/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/navigation/communitypanel/res/values/strings.xml
android_res/com/facebook/fds/pivotlink/res/values/strings.xml
android_res/com/facebook/fds/subnavigationbar/res/values/strings.xml
android_res/com/facebook/events/create/loading/res/values/strings.xml
android_res/com/facebook/messaginginblue/threadview/features/messageactions/res/values/strings.xml
android_res/com/facebook/messaging/communitymessaging/plugins/takedowns/messagetakedownsendername/res/values/strings.xml
android_res/com/facebook/freddie/messenger/ui/components/poll/res/values/strings.xml
android_res/com/facebook/video/settings/res/values/strings.xml
android_res/com/facebook/composer/media/res/values/strings.xml
android_res/com/facebook/inspiration/res/values/strings.xml
android_res/com/facebook/inspiration/bottomtray/res/values/strings.xml
android_res/com/facebook/inspiration/templates/res/values/strings.xml
android_res/com/facebook/inspiration/remix/res/values/strings.xml
android_res/com/facebook/inspiration/multimedia/res/values/strings.xml
android_res/com/facebook/inspiration/effects/res/values/strings.xml
android_res/com/facebook/inspiration/video/timeline/inline/res/values/strings.xml
android_res/com/facebook/inspiration/topbar/res/values/strings.xml
android_res/com/facebook/inspiration/suggestionstray/res/values/strings.xml
android_res/com/facebook/inspiration/magicmontage/res/values/strings.xml
android_res/com/facebook/inspiration/genai/aibackdrop/res/values/strings.xml
android_res/com/facebook/inspiration/effects/swipeablefilters/res/values/strings.xml
android_res/com/facebook/inspiration/effects/discovery/res/values/strings.xml
android_res/com/facebook/inspiration/editgallery/backgroundselector/res/values/strings.xml
android_res/com/facebook/inspiration/capture/multicapture/remix/res/values/strings.xml
android_res/com/facebook/inspiration/capture/multicapture/res/values/strings.xml
android_res/com/facebook/audience/common/storyviewer/res/values/strings.xml
android_res/com/facebook/facecast/display/res/values/strings.xml
android_res/com/facebook/widget/friendselector/res/values/strings.xml
android_res/com/facebook/facecast/view/res/values/strings.xml
android_res/com/facebook/facecast/display/streamingreactions/res/values/strings.xml
android_res/com/facebook/facecast/display/livestatus/res/values/strings.xml
android_res/com/facebook/facecast/display/flexiblebonusbutton/res/values/strings.xml
android_res/com/facebook/facecast/display/liveevent/comment/res/values/strings.xml
../xplat/orca/msys/feature_aggregation/src/i18n/res/values/strings.xml
android_res/com/facebook/feed/video/inline/res/values/strings.xml

allow-large-files
ignore-conflict-markers
opt-out-review
drop-conflicts

Differential Revision: D109442228

fbshipit-source-id: c9a46524c3a56f6aaa56535aad57ebea6f118fab
…erForData: (#57297)

Summary:
`imageURLLoaderForURL:` had a broken double-checked lock on `_loaders`: the outer `if (!_loaders)` guard and the `for` loop iteration both ran without `_loadersMutex`, while the assignment ran inside it. `imageDataDecoderForData:` had no lock at all on `_decoders`. Both methods write the ivar in two steps (raw list then sorted), so a concurrent reader could observe the intermediate value and iterate a concurrently-released array, crashing with `EXC_BAD_ACCESS` in `objc_release` on a GCD worker thread.

Verified with a reproducer — crashes 5/5 without the fix, 0/10 with it: https://github.com/mfazekas/rn-rctimageloader-dcl-repro

## Fix

Build the loader and decoder lists once in `setUp` (alongside the URL request queue), under `_setupLock` and gated by the existing `_didSetup` atomic flag. Every entry point calls `setUp` before reading the now write-once `_loaders` and `_decoders`, so a reader can never observe a half-built or concurrently-released array.

This replaces the broken double-checked lock where the outer `if (!_loaders)` guard and the `for` loop iteration ran outside the mutex.

## Changelog:

[iOS] [Fixed] - Fix a data race in `RCTImageLoader` loader and decoder lazy initialization that could crash with `EXC_BAD_ACCESS`

## Related

Fixes #57296
See also #46115, #46153

Pull Request resolved: #57297

Reviewed By: javache

Differential Revision: D109404243

Pulled By: fabriziocucci

fbshipit-source-id: 359d4c70e2cbe1bc70a7e6a1dadc3e3b89c59ff4
Summary:
Pull Request resolved: #57315

Flip the default value of the `animatedShouldDebounceQueueFlush` JavaScript feature flag to `true`, enabling Animated flush-queue debouncing everywhere, and remove the per-app overrides that already forced it on.

This flag just put operations in a microtasks queue, it doesn't rely on any specific native animated implementation

Changelog:
[General][Changed] - Enable Animated flush-queue debouncing (`animatedShouldDebounceQueueFlush`) by default

Reviewed By: christophpurrer

Differential Revision: D109468771

fbshipit-source-id: 69107d09959c9f15a23dc49b6663469397164cff
…7249)

Summary:
The native `TextInput.onChange` event now emits `selection` data (cursor location) on both iOS and Android, added in [162627a](162627a) (#55044).

- #55044

The JS companion PR [c1f5445](c1f5445) (#55043) added the corresponding types, but only to two of the three TypeScript/Flow type sources:

- #55043

| Type source | Has `selection`? |
|---|---|
| `TextInput.flow.js` (Flow) | ✅ |
| `ReactNativeApi.d.ts` (generated API surface) | ✅ |
| `TextInput.d.ts` (legacy public `.d.ts`) | ❌ |

The hand-written legacy `TextInput.d.ts` was missed, so consumers relying on it can't access `selection` from the `onChange` event even though native genuinely sends it. This PR adds the optional `selection` field there so all three type sources agree.

## Changelog:

[GENERAL] [ADDED] - Add `selection` to `TextInputChangeEventData` in TypeScript types

Pull Request resolved: #57249

Test Plan:
Type-only change. `selection` is now available and correctly typed on the `onChange` event:

```tsx
<TextInput
  onChange={e => {
    // e.nativeEvent.selection is now typed as { start: number; end: number } | undefined
    console.log(e.nativeEvent.selection?.start, e.nativeEvent.selection?.end);
  }}
/>

Reviewed By: christophpurrer

Differential Revision: D109435915

Pulled By: fabriziocucci

fbshipit-source-id: b334e52e0e39a7f9053bf41e93077be90b3d9adf
Summary:
Pull Request resolved: #57318

Make it clearer when parent view is null vs not a view group and log what class it is if so.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D109539811

fbshipit-source-id: 89808be7b8051047e7f6dbc306ba95576deb166f
Summary: Pull Request resolved: #57322

Differential Revision: D109548796

fbshipit-source-id: cafd8f9dde536aa94fdf77d58f13a12ba41dc126
Summary:
Pull Request resolved: #57324

Adds `ViewProps-benchmark-itest.js` covering three scenarios that exercise the C++ Props construction path:

1. Mount N views with a full prop bag (initial Props construction).
2. Re-render N views with a full prop swap (cloneProps, every prop changes).
3. Re-render N views with a single-prop delta (cloneProps, hot path for typical UI updates).

`fantom_flags enableCppPropsIteratorSetter:*` matrix-expands the suite so each scenario runs once with the classic per-field parse and once with the iterator-setter path. This establishes a baseline for upcoming changes that simplify the per-class `flag ? sourceProps.X : convertRawProp(...)` ternaries into two distinct constructors and that skip the now-unused `RawPropsParser::parse()` in the iterator-setter branch.

Changelog:
[Internal]

Reviewed By: mdvacca

Differential Revision: D109563268

fbshipit-source-id: e0d9cdbe81a0d62a20b0cc67c888e23c5d28b421
…e by default (#57316)

Summary:
Pull Request resolved: #57316

Single-op batching (`queueAndExecuteBatchedOperations`) is incompatible with the C++ native animated backend. Move that guard out of per-product feature-flag overrides and into `NativeAnimatedHelper`: `isSingleOpBatching` is now gated on `Platform.OS === 'android'`, `queueAndExecuteBatchedOperations` being available, and `!cxxNativeAnimatedEnabled()`. With the invariant centralized, the redundant `animatedShouldUseSingleOp` overrides in the panel-app and igvr override files are removed (igvr keeps a passthrough override file wired into IGVRPrelude).

**Single-op batching is most meaningful only on Android**: it collapses many per-operation JNI crossings into a single call, a significant win on the legacy bridge path. On other platforms (and on the C++/JSI path) the calls do not cross JNI, so batching would help performance only marginally while hurting debuggability — the ops are packed into an opaque serialized buffer and callbacks are rerouted through the device event emitter. That trade-off is why it stays Android-only and off under C++ native animated.

Behavior note: with C++ native animated enabled (the default), this is a no-op — single-op was already forced off. Where C++ native animated is disabled on Android, single-op is now on by default (it was previously gated by the `animatedShouldUseSingleOp` flag, which defaulted to off).

Changelog:[Internal]

Reviewed By: javache, christophpurrer

Differential Revision: D109468772

fbshipit-source-id: f904c924e2d2c6454c2bd83d3b25a1b7630ea8f3
Summary:
X-link: #55763

RawPropsKey previously stored three `const char*` fields
(prefix, name, suffix) that were concatenated at runtime to form
property names.

This is pretty niche, used to make a few patterns simpler, but also can lead to confusing conflicts when the same property name can be represented in different ways (e.g. T174300106). Iterator style props parsing also completely avoids it.

Lets change the API to a flat name instead.

This change is breaking, but could only find a single user (Nitro module) effected, searching through `react-native-libraries`.

Changelog:
[General][Breaking]  - Remove RawPropsKey prefix and suffix

Reviewed By: christophpurrer

Differential Revision: D94367880

fbshipit-source-id: d865725c7be6f880760b6e8d1a567a1b12ac469a
Summary:
Align `TextInputKeyPressEventData` type with: https://github.com/facebook/react-native/blob/116ea5955c374b1b6f2e62a47f194add96470081/packages/react-native/Libraries/Components/TextInput/TextInput.flow.js#L103
`TextInputKeyPressEventData` was missing the `eventCount` in the event payload.

## Changelog:

[GENERAL] [FIXED] - Add eventCount to TextInputKeyPressEventData type

Pull Request resolved: #57331

Test Plan:
Check fabric event emitter:
https://github.com/facebook/react-native/blob/618ef02f4a0da31d613bca40019f1abf511cbb1e/packages/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.cpp#L113

Reviewed By: javache

Differential Revision: D109693681

Pulled By: fabriziocucci

fbshipit-source-id: e79da2395d0e9e568cf9b1d06e81b809195d80dd
…ag is off (#57326)

Summary:
Pull Request resolved: #57326

## Changelog:

[Internal] - do not post callback in AnimationBackendChoreographer.kt if featureflag is off

AnimationBackendChoreographer is initialized in android regardless of featureflag, and it posts no-op per frame callbacks regardless, which is not ideal

Reviewed By: OlehMalanchuk

Differential Revision: D109607144

fbshipit-source-id: c04b8a45726d555ff7104d902667d7e69f86c0a0
Summary:
Pull Request resolved: #57335

Changelog: [Internal] - Node 22 requirement is synchronised with RN for 0.87

Reviewed By: robhogan

Differential Revision: D109699796

fbshipit-source-id: 642373a6babc37ce3e9bc83676abd0aa09f54a85
…57337)

Summary:
Pull Request resolved: #57337

Now that flush-queue debouncing is the default, drop the `animatedShouldDebounceQueueFlush` checks in `NativeAnimatedHelper` so the debounced flush path is unconditional. `disableQueue()` always schedules a flush, and `setWaitingForIdentifier()` always clears any pending immediate flush.

Changelog:
[Internal]

Reviewed By: christophpurrer

Differential Revision: D109468770

fbshipit-source-id: c4c7b19bd62303a43c43de8d5ba827af9786132e
Summary:
Update `react-native/babel-preset` package metadata to use a `git+https` repository URL instead of the SSH-style URL. This avoids requiring SSH credentials for tooling that reads npm repository metadata.

## Changelog:

[INTERNAL]

Pull Request resolved: #57334

Test Plan: Parsed `packages/react-native-babel-preset/package.json` as JSON after the metadata update.

Reviewed By: christophpurrer

Differential Revision: D109713034

Pulled By: fabriziocucci

fbshipit-source-id: cf7119a032b96024babfa9238adc4d8e45347da7
…ck for uiManager_ (#56128) (#57327)

Summary:
Pull Request resolved: #57327

Pull Request resolved: #56128

Changelog: [Android] [Fixed] - Fix crash in Scheduler::animationTick when uiManager_ is null.

Test Plan:
CI

Fixes a null pointer dereference crash in `Scheduler::animationTick()` that occurs during shutdown race conditions.

### Root Cause Analysis

**The Symptom**: `uiManager_` is null when `Scheduler::animationTick()` is called, causing a crash at offset 0x50 from null when accessing members of `UIManager`.

**The Root Cause**: During shutdown, when `uninstallFabricUIManager()` is called, the Choreographer's animation frame callback (`doFrame`) can still arrive. While `FabricUIManagerBinding::driveCxxAnimations()` checks for null scheduler (added in D92986523), the internal `Scheduler::animationTick()` method didn't check if `uiManager_` is valid before dereferencing it:

```cpp
void Scheduler::animationTick() const {
  uiManager_->animationTick();  // No null check - crashes if uiManager_ is null
}
```

**The Fix**: Added a null check for `uiManager_` before accessing it, following the same defensive pattern used in `driveCxxAnimations()` and other methods in the codebase:

```cpp
void Scheduler::animationTick() const {
  if (!uiManager_) {
    return;
  }
  uiManager_->animationTick();
}
```

**Why This Fix Works**: It prevents the null pointer dereference by checking `uiManager_` validity before use. During shutdown, if the scheduler is accessed after `uiManager_` becomes invalid, the method will safely return instead of crashing.

### Related Diffs
- D92986523: Similar fix for null scheduler check in `driveCxxAnimations()`

Logview link: [b3d4c4d8f7e6dd50b09fb7df9a1ad66a](https://www.internalfb.com/logview/system_vros_crashes/b3d4c4d8f7e6dd50b09fb7df9a1ad66a)

X-link: #56128
CI

Reviewed By: cortinico

Differential Revision: D93363797

Pulled By: shubhamksavita

fbshipit-source-id: 8c1deaab113c9d907eb28e5bd9e44d61b4280db8
Summary:
Pull Request resolved: #57339

Every Props subclass parses its fields in its 3-arg ctor's initializer list, but `Props` was the odd one out — its 3-arg ctor had an empty initializer list and a body that called a separate `Props::initialize` method, which then assigned `nativeId` and (on Android) ran `initializeDynamicProps`.

Fold the `nativeId` parse back into the initializer list and inline the Android `initializeDynamicProps` call into the ctor body, matching the subclass pattern.

This removes the only remaining external caller of `Props::initialize`: `YogaStylableProps`'s ctor was constructing its `Props` subobject via `Props()` and then calling `initialize(...)` from its body. Replace with the standard `Props(ctx, sourceProps, rawProps, filterObjectKeys)` initializer-list chain. With both call sites gone, delete `Props::initialize` outright.

Behaviour is unchanged: the work that `initialize` did still runs on the same construction path, just via the ctor itself.

Changelog:
[Internal]

Reviewed By: christophpurrer

Differential Revision: D109691981

fbshipit-source-id: 835615191332239e90353da2e66fecc429365529
Summary:
Pull Request resolved: #57342

`statusBarShow()` and `statusBarHide()` access the window's `decorView`, which throws `IllegalArgumentException` when the decorView is not attached to the window manager. This can happen for extra windows (dialogs/popups) whose decorView is detached independently of the host activity's lifecycle, or when status bar visibility is updated during teardown.

Guard both functions with `if (!decorView.isAttachedToWindow) return` so the fix protects every caller at the source. The guard is a no-op during normal operation (the decorView is always attached) and only short-circuits during the teardown race.

Changelog:
[Android][Fixed] - Prevent `IllegalArgumentException` crash in `statusBarShow`/`statusBarHide` when the window decorView is detached

Reviewed By: Abbondanzo

Differential Revision: D107934787

fbshipit-source-id: e7b04f8ef9b38d83d96959b5609e87c3b9e83811
…serInfo key (#57341)

Summary:
Pull Request resolved: #57341

Add `RCTDidInitializeModuleNotificationModuleKey` to `RCTConstants.h`/`.m` so observers of `RCTDidInitializeModuleNotification` can read the module out of `userInfo` via a named constant instead of the bare `@"module"` literal. Update the poster in `RCTTurboModuleManager.mm` to use the new symbol so producer and consumer share a single source of truth.

This follows the existing naming convention in `RCTConstants.h` (`RCTUserInterfaceStyleDidChangeNotificationTraitCollectionKey`).

Purely additive — no existing API affected.

Changelog:
[iOS][Added] - Export `RCTDidInitializeModuleNotificationModuleKey` constant for `RCTDidInitializeModuleNotification` userInfo

Reviewed By: christophpurrer

Differential Revision: D109716080

fbshipit-source-id: caca922d1ca66da98f3232e0c7365826c057094e
Summary:
Pull Request resolved: #57340

`animatedShouldDebounceQueueFlush` is no longer read anywhere — `NativeAnimatedHelper` now debounces the queue flush unconditionally. Remove the now-dead flag definition and its generated getter.

Changelog:
[Internal]

Reviewed By: christophpurrer

Differential Revision: D109472811

fbshipit-source-id: 2afe41cda10aa53440ac5084cec5989654dfecb0
Summary:
Chronos Job Instance ID: 1125908308584627
Sandcastle Job Instance ID: 36028799782071862

Processed xml files:
android_res/com/meta/metaai/aistudio/immersivethread/view/strings/res/values/strings.xml
android_res/com/instagram/unifiedvideo/strings/res/values/strings.xml
android_res/com/instagram/shopping/clips/strings/res/values/strings.xml
android_res/com/instagram/fanclub/settings/strings/res/values/strings.xml
android_res/com/instagram/fanclub/promovideo/strings/res/values/strings.xml
android_res/com/instagram/discovery/ui/strings/res/values/strings.xml
android_res/com/instagram/direct/share/strings/res/values/strings.xml
android_res/com/instagram/creation/music/strings/res/values/strings.xml
android_res/com/instagram/creation/location/strings/res/values/strings.xml
android_res/com/instagram/creation/metadata/strings/res/values/strings.xml
android_res/com/instagram/wellbeing/timespent/strings/res/values/strings.xml
android_res/com/instagram/rtc/strings/res/values/strings.xml
android_res/com/instagram/video/videocall/strings/res/values/strings.xml
android_res/com/instagram/rtc/rooms/res/values/strings.xml
android_res/com/instagram/rtc/areffects/strings/res/values/strings.xml
android_res/com/instagram/rtc/cowatch/strings/res/values/strings.xml
android_res/com/instagram/genai/res/values/strings.xml
android_res/com/instagram/wellbeing/fundraiser/feedcreation/strings/res/values/strings.xml
android_res/com/instagram/creation/cta/sellproductrow/strings/res/values/strings.xml
android_res/com/instagram/commentprompts/strings/res/values/strings.xml
android_res/com/instagram/commentpoll/commentpoll/strings/res/values/strings.xml
android_res/com/instagram/clips/viewer/navigationbar/strings/res/values/strings.xml
android_res/com/instagram/clips/sharesheet/res/values/strings.xml
android_res/com/instagram/people/strings/res/values/strings.xml
android_res/com/instagram/clips/sharesheet/common/strings/res/values/strings.xml
android_res/com/instagram/clips/remix/strings/res/values/strings.xml
android_res/com/instagram/clips/intentawaread/strings/res/values/strings.xml
android_res/com/instagram/clips/edit/music/strings/res/values/strings.xml
android_res/com/instagram/clips/audio/soundsync/view/player/strings/res/values/strings.xml
android_res/com/instagram/direct/messagethread/voicestorysticker/res/values/strings.xml
android_res/com/instagram/clips/ui/watermark/strings/res/values/strings.xml
android_res/com/instagram/creation/cta/ctaselector/strings/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/bloks/foa/cds/bottomsheet/strings/res/values/strings.xml
android_res/com/instagram/barcelona/common/strings/res/values/strings.xml
android_res/com/instagram/barcelona/feed/post/ui/res/values/strings.xml
../xplat/instagram/msys/feature_aggregation/src/i18n/res/values/strings.xml
android_res/com/instagram/direct/msys/res/values/strings.xml
android_res/com/meta/foa/products/accountswitcher/src/main/shared/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/navbar/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/brandasset/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/textinput/res/values/strings.xml
libraries/foa/ui/cds/widgets-litho/searchfield/res/values/strings.xml
android_res/com/meta/foa/products/bidirectional/src/main/strings/res/values/strings.xml
android_res/com/instagram/profile/strings/res/values/strings.xml
android_res/com/instagram/interestpicker/res/values/strings.xml
android_res/com/instagram/igds/megaphone/strings/res/values/strings.xml
android_res/com/instagram/editprofilepictureui/strings/res/values/strings.xml
android_res/com/instagram/direct/profile/strings/res/values/strings.xml
android_res/com/instagram/direct/inbox/ui/strings/res/values/strings.xml
android_res/com/instagram/clips/profile/tab/strings/res/values/strings.xml
android_res/com/instagram/barcelonaig/appswitcher/strings/res/values/strings.xml
android_res/com/instagram/arlink/strings/res/values/strings.xml
android_res/com/instagram/archive/api/strings/res/values/strings.xml
android_res/com/instagram/presence/strings/res/values/strings.xml
android_res/com/instagram/bloks/debug/strings/res/values/strings.xml
android_res/com/instagram/bloks/strings/res/values/strings.xml
android_res/com/instagram/mainfeed/netego/strings/res/values/strings.xml
android_res/com/instagram/creation/photo/edit/photo/tint/strings/res/values/strings.xml
android_res/com/instagram/mainfeed/netego/res/values/strings.xml
android_res/com/instagram/guides/strings/res/values/strings.xml
android_res/com/instagram/share/facebook/strings/res/values/strings.xml
android_res/com/instagram/fxcal/upsell/storyviewer/strings/res/values/strings.xml
android_res/com/instagram/clips/sharesheet/crossposting/strings/res/values/strings.xml
android_res/com/instagram/release/buildinfo/strings/res/values/strings.xml
android_res/com/facebook/ps_apps_downloader/res/values/strings.xml
android_res/com/facebook/eventdebuggeroverlay/res/values/strings.xml
android_res/com/instagram/whoptions/strings/res/values/strings.xml
android_res/com/instagram/permissions/strings/res/values/strings.xml
android_res/com/instagram/nux/cal/strings/res/values/strings.xml
android_res/com/instagram/fetacontent/strings/res/values/strings.xml
android_res/com/instagram/crossposting/res/values/strings.xml
android_res/com/instagram/creation/capture/quickcapture/dialog/strings/res/values/strings.xml
android_res/com/instagram/common/fbsdk/strings/res/values/strings.xml
android_res/com/instagram/creation/capture/quickcapture/sundial/sam3effects/strings/res/values/strings.xml
android_res/com/instagram/creation/capture/quickcapture/commentreply/strings/res/values/strings.xml
android_res/com/instagram/basel/workflows/text/strings/res/values/strings.xml
android_res/com/instagram/basel/effects/strings/res/values/strings.xml
libraries/maps/facebook-maps/res/values/strings.xml
android_res/com/instagram/util/recipients/strings/res/values/strings.xml
android_res/com/instagram/direct/secretchats/strings/res/values/strings.xml
android_res/com/instagram/music/search/config/strings/res/values/strings.xml
android_res/com/instagram/maps/strings/res/values/strings.xml
android_res/com/instagram/nme/benefits/enhancedcontentprotection/toast/strings/res/values/strings.xml
android_res/com/instagram/feed/opencarousel/reviewpage/strings/res/values/strings.xml
android_res/com/instagram/sponsored/common/strings/res/values/strings.xml
android_res/com/facebook/messaging/accountlogin/strings/res/values/strings.xml
android_res/com/instagram/direct/messagethread/theme/strings/res/values/strings.xml
android_res/com/instagram/direct/model/strings/res/values/strings.xml
android_res/com/instagram/direct/messagethread/flairs/strings/res/values/strings.xml
android_res/com/instagram/igtv/model/strings/res/values/strings.xml
android_res/com/instagram/shopping/cart/strings/res/values/strings.xml
android_res/com/instagram/direct/fragment/prompts/strings/res/values/strings.xml
android_res/com/instagram/direct/channels/challenges/strings/res/values/strings.xml
android_res/com/instagram/youralgo/strings/res/values/strings.xml
android_res/com/instagram/direct/wellbeing/unknowncontact/messagerequests/permissionbanner/strings/res/values/strings.xml
android_res/com/instagram/ui/tabbedmediapicker/strings/res/values/strings.xml
android_res/com/instagram/direct/wellbeing/selfremediation/messagereport/strings/res/values/strings.xml
android_res/com/instagram/direct/messagethread/util/strings/res/values/strings.xml

allow-large-files
ignore-conflict-markers
opt-out-review
drop-conflicts

Differential Revision: D109785710

fbshipit-source-id: e63a3c4252c2769a9f081871a9f228d0c40be277
Summary:
This reverts the runner changes from #57216, which moved the Android CI jobs from the dedicated `4-core-ubuntu` / `8-core-ubuntu` runners onto the standard `ubuntu-latest` runners.

I'm opening this (as a draft) to **see if we can speed up the RN runners** — i.e. to measure whether going back to the larger dedicated runners gives us faster CI than `ubuntu-latest`. This is an experiment to compare timings.

### What's reverted
- `e2e-android-rntester.yml`: `ubuntu-latest` → `4-core-ubuntu`
- `e2e-android-templateapp.yml`: `ubuntu-latest` → `4-core-ubuntu`
- `fantom-tests.yml`: `ubuntu-latest` → `8-core-ubuntu`
- `test-all.yml`: `build_fantom_runner`, `build_android`, `build_npm_package` → `8-core-ubuntu`; `test_android_helloworld` → `4-core-ubuntu`

### Not reverted (drift since #57216)
- `nightly.yml` was deleted on main (consolidated into `publish-npm.yml`).
- `publish-npm.yml` was fully restructured on main (the old `publish-react-native` reusable job no longer exists).

These two are release/nightly jobs rather than the per-PR CI that determines runner speed, so they're intentionally left untouched.

Changelog:

[INTERNAL] -

## Changelog

[INTERNAL] -

Pull Request resolved: #57323

Test Plan: CI — compare job durations against `ubuntu-latest`.

Reviewed By: fabriziocucci

Differential Revision: D109808150

Pulled By: cortinico

fbshipit-source-id: 694eba516f0d42ef733e729b23534f09dfe8548c
Summary:
Pull Request resolved: #57338

Contains security updates (T266889893).

Changelog: [Internal]

Command run:

```
DEV=1 js1 upgrade electron --version 39.8.10 --no-ephemeral
```

Reviewed By: rubennorte

Differential Revision: D109705549

fbshipit-source-id: 3292ada446e9a995f43e14a84424b39953e62953
Summary:
Fix SurfaceMountingManager null handling for methods that can be invoked after a view has been deleted or is otherwise missing. sendAccessibilityEvent and setJSResponder now use getNullableViewState(...) and guard against missing ViewState before accessing .view, logging a soft exception and returning instead of crashing. Also removed the now-unused getViewState helper.

## Changelog:

[ANDROID][FIXED] Avoid crash in SurfaceMountingManager when sendAccessibilityEvent or setJSResponder is called for a missing or deleted view state.

Pull Request resolved: #57283

Test Plan: This is a safe check added to avoid crashing the application with reference to similiar checks added in other related methods.

Reviewed By: fabriziocucci

Differential Revision: D109834942

Pulled By: javache

fbshipit-source-id: 75d6e5e646f78efe9456aaacafd40b05362003d7
Summary:
Pull Request resolved: #57350

The deprecation timeline for proxying `npx react-native init` to `react-native-community/cli` has long since passed. The version check, staged deprecation warnings, and proxy spawn are all dead code. Strip out — leaving only the `warnWithExplicitDependency` exit path that runs when `react-native-community/cli` is not installed.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D109854306

fbshipit-source-id: 57e7591f2070e2de249e5fd7e2fe9f50652bfc58
Summary:
Bump RNC CLI to v20.2.0 in RNTester

## Changelog:

[INTERNAL] [CHANGED] - Update RNC CLI in RNTester to v20.2.0

Pull Request resolved: #57344

Reviewed By: fabriziocucci

Differential Revision: D109807361

Pulled By: cortinico

fbshipit-source-id: a9ac694d8f96cf55144b06b267a9fde4faeab8d0
Summary:
Add Changelog for 0.83.10

## Changelog:
[Internal] - Add Changelog for 0.83.10

Pull Request resolved: #57347

Test Plan: N/A

Reviewed By: cortinico

Differential Revision: D109844630

Pulled By: fabriziocucci

fbshipit-source-id: 8908f548c43d38e342dd81a90633171c780822b0
Summary:
Adds ArrayBuffer support to ObjC TurboModules, following the C++ ArrayBuffer PR ([`226ef2e`](226ef2e)).

- Codegen support for `ArrayBufferTypeAnnotation` in ObjC module specs (`NSMutableData *` params/returns, new `ArrayBufferKind`)
- JSI↔ObjC conversion wraps native-backed buffers zero-copy via `-[NSMutableData initWithBytesNoCopy:length:deallocator:]`; the deallocator retains the backing store so the bytes stay valid even if the `NSMutableData` escapes the call or the source ArrayBuffer is garbage-collected
- JS-backed buffers are copied, which is safe on both the synchronous and asynchronous paths

This PR is iOS-only; Android support follows in a separate PR.

## Changelog:

[IOS] [ADDED] - Add ArrayBuffer support to ObjC TurboModules

X-link: #56986

Reviewed By: javache

Differential Revision: D106846249

Pulled By: christophpurrer

fbshipit-source-id: 3393d5d6f31a1412f5d52328c90e51205aa6b153
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.