diff --git a/CHANGELOG.md b/CHANGELOG.md index b690846009c..942fa830ce0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,364 @@ # Changelog +## v0.89.0-rc.0 + +### Breaking + +- **Accessibility**: `AccessibilityState::selected` is now `std::optional` in C++ props, preserving an unset `selected` instead of coercing it to `false` ([af4d8eb08a](https://github.com/react/react-native/commit/af4d8eb08ad0d73f98adaa2cab5f4516ca74e875) by Calvin Liu) +- **Assets**: Remove `react-native/assets-registry`. Use `AssetRegistry` from `react-native` and `react-native/asset-utils` instead. ([56c48ac0eb](https://github.com/react/react-native/commit/56c48ac0eb5380eb43494873ba68361d40a9a009) by [@huntie](https://github.com/huntie)) +- **Babel**: Turn off `babel/plugin-transform-destructuring` plugin ([73711b301e](https://github.com/react/react-native/commit/73711b301e5b49b8f4850300440209284f4aa27a) by [@retyui](https://github.com/retyui)) +- **C++**: Remove deprecated `react/renderer/graphics/Geometry.h` and `react/renderer/graphics/conversions.h`; include `` or `` instead ([1449daad5e](https://github.com/react/react-native/commit/1449daad5e133c80fd643caccf9633201cb4c4f9) by [@j-piasecki](https://github.com/j-piasecki)) +- **CLI**: `react-native/community-cli-plugin` will no longer be auto-detected from `react-native`. It must now be specified in `devDependencies`. ([b26baaeba0](https://github.com/react/react-native/commit/b26baaeba026f34963656a8daec7f5f494253160) by [@huntie](https://github.com/huntie)) +- **CLI**: Platform registration config for the Community CLI is removed from the `react-native` package. No breaking change with `react-native-community/cli` 21.x (required). ([be9fbdd0d5](https://github.com/react/react-native/commit/be9fbdd0d59ffd88992f16523b5fbfe9db709e6a) by [@huntie](https://github.com/huntie)) +- **Image**: Fix explicit `fadeDuration` being ignored on newly created `Image`s ([98d6795e6d](https://github.com/react/react-native/commit/98d6795e6d8cc42b5a854d64b45ec81fd6b96962) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **JavaScript API**: Mark `unstable_batchedUpdates` as deprecated ([f6fc189b8c](https://github.com/react/react-native/commit/f6fc189b8c264e795a6c069148f3923fdce7eadc) by [@retyui](https://github.com/retyui)) +- **VirtualizedList**: Fix `SectionList` and `VirtualizedSectionList` `scrollToLocation` to account for section headers and sticky headers correctly. ([0c35f57447](https://github.com/react/react-native/commit/0c35f574474abc80864753b76759816eec131dd9) by [@amroaltah](https://github.com/amroaltah)) + +#### Android specific + +- **C++**: Remove deprecated `rncore.h`; include `FBReactNativeSpec.h` and call `FBReactNativeSpec_ModuleProvider` instead ([d63648bac6](https://github.com/react/react-native/commit/d63648bac6f1e10cdb2203515111cd3492562f18) by [@javache](https://github.com/javache)) +- **New Architecture**: Remove `DefaultNewArchitectureEntryPoint.bridgelessEnabled` and the deprecated three-argument `load(turboModulesEnabled, fabricEnabled, bridgelessEnabled)` overload; bridgeless is always enabled in the New Architecture ([9b18b951ea](https://github.com/react/react-native/commit/9b18b951ea1fac8ef585c13e070e95739f7d0f1e) by [@christophpurrer](https://github.com/christophpurrer)) +- **New Architecture**: Remove `DefaultNewArchitectureEntryPoint.fabricEnabled`, `turboModulesEnabled`, `concurrentReactEnabled` and `isConfigurationValid` ([ca2e11af51](https://github.com/react/react-native/commit/ca2e11af51280611fe4740b8b472f4b29a826a7b) by [@christophpurrer](https://github.com/christophpurrer)) +- **Text**: Add `lineBreak` and `wordBreak` props to `Text` (CSS `line-break` / `word-break`) for strict/loose line breaking and phrase-based breaking on Android 13+ ([f736393946](https://github.com/react/react-native/commit/f7363939465e03f61016c5b872a45e99fe49ee85) by [@iray-tno](https://github.com/iray-tno)) + +#### iOS specific + +- **Animated**: Delete legacy RCTNativeAnimatedModule from RN iOS ([46662327fb](https://github.com/react/react-native/commit/46662327fb96554a12845927b5efcd2305dfd88f) by [@christophpurrer](https://github.com/christophpurrer)) +- **CocoaPods**: Install `React-cxxreact` headers under `cxxreact/` inside its framework when `USE_FRAMEWORKS` is enabled. Pods that include `` without calling `install_modules_dependencies` must add `React_cxxreact.framework/Headers` to `HEADER_SEARCH_PATHS`. ([0a92baec87](https://github.com/react/react-native/commit/0a92baec8775f43b9bdc39540e894f1af486916c) by [@j-piasecki](https://github.com/j-piasecki)) +- **New Architecture**: Remove the deprecated `bridgelessEnabled` property and the deprecated `initWithBundleURLBlock:newArchEnabled:turboModuleEnabled:bridgelessEnabled:` / `initWithBundleURL:newArchEnabled:turboModuleEnabled:bridgelessEnabled:` initializers from `RCTRootViewFactoryConfiguration`; bridgeless is always enabled ([2a9eca81b8](https://github.com/react/react-native/commit/2a9eca81b8d05142a59f4e41fc40e87813668016) by [@christophpurrer](https://github.com/christophpurrer)) +- **TurboModules**: `+moduleName` is now optional on `RCTBridgeModule` instead of required, so a TurboModule resolved via a module provider need not declare it ([373385efc9](https://github.com/react/react-native/commit/373385efc934b3e2246afaf73d2c4c4afa6120e3) by [@christophpurrer](https://github.com/christophpurrer)) + +### Added + +- **AppState**: Add useAppState() hook for subscribing to app foreground/background state changes ([7104c5ef36](https://github.com/react/react-native/commit/7104c5ef3670807660708ce590b877a30f15e9ac) by [@Nedunchezhiyan-M](https://github.com/Nedunchezhiyan-M)) +- **Babel**: `react-native/metro-babel-transformer` passes Metro's own `babel/runtime` and its version to `react-native/babel-preset`, when Metro provides them ([89db5ce049](https://github.com/react/react-native/commit/89db5ce04975ceaca4aa4207c0e5d53f78cb32a0) by [@robhogan](https://github.com/robhogan)) +- **Babel**: Allow `react-native/babel-preset` to read `enableBabelRuntime` and `babelRuntimeModuleName` from Babel caller data ([168a0d7b53](https://github.com/react/react-native/commit/168a0d7b533e436a4820fd21bcd21875d2af4260) by [@cortinico](https://github.com/cortinico)) +- **C++**: Add `` umbrella header as the public entry point for `react/renderer/componentregistry` ([2975534d8b](https://github.com/react/react-native/commit/2975534d8bf4ac5b26d603def65281d064905f80) by [@j-piasecki](https://github.com/j-piasecki)) +- **C++**: Added `ReactNativeVersion.h` to public `react/utils` module. ([a35313a184](https://github.com/react/react-native/commit/a35313a184be683bd1b845d80b9e69db685a6ac8) by [@j-piasecki](https://github.com/j-piasecki)) +- **C++**: Added an umbrella header for the `react/renderer/core` module ([dcc872ae01](https://github.com/react/react-native/commit/dcc872ae01109e0c39c5dfe7a1b1026a9987c787) by [@j-piasecki](https://github.com/j-piasecki)) +- **C++**: Added umbrella header for the `react/renderer/components/image` module ([a9203b8fdd](https://github.com/react/react-native/commit/a9203b8fdd264507a665e2dcf09be39d26be0362) by [@j-piasecki](https://github.com/j-piasecki)) +- **C++**: Added umbrella header for the `react/renderer/imagemanager` module ([be53e3a9a1](https://github.com/react/react-native/commit/be53e3a9a1470cd47fa68e00b010aaaebe82ead6) by [@j-piasecki](https://github.com/j-piasecki)) +- **Renderer**: Allow C++ shadow node traits to be evaluated at compile time ([73e3aeca88](https://github.com/react/react-native/commit/73e3aeca885b428e84525fb22a419fd32f87298f) by [@javache](https://github.com/javache)) +- **Runtime**: Polyfill `Array.prototype.toSorted` and `Array.prototype.toReversed` when the JavaScript runtime does not provide them ([3ff956a2a2](https://github.com/react/react-native/commit/3ff956a2a26e0bf796a633c8dfc8ab97cb89720f) by [@javache](https://github.com/javache)) +- **Text**: Add experimental longest-line width sizing for wrapped `Text` ([03ed284a2c](https://github.com/react/react-native/commit/03ed284a2cb5f7716d45e94e5f001d15322da5fa) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **View**: Add an `experimental_onSafeAreaInsetsChange` view prop, reporting the part of a view that is covered by the system UI, with a development warning for views that report their insets in a loop ([8d658f4101](https://github.com/react/react-native/commit/8d658f4101fd168a5d4b33b1fdfbbc9aa8a6b204) by [@janicduplessis](https://github.com/janicduplessis)) +- **VirtualizedList**: Export the `ViewabilityConfig` and `ViewabilityConfigCallbackPair` types from the package root ([932b34a51c](https://github.com/react/react-native/commit/932b34a51c6c2c5060d289ed7e4681c6d34d5010) by [@rubennorte](https://github.com/rubennorte)) +- **Web APIs**: Add ArrayBuffer, DataView, typed array, boxed BigInt, and Error subclass support to structuredClone ([14de25bb2d](https://github.com/react/react-native/commit/14de25bb2d7bb0ac59ab45ed04883b1c20e62a8e) by [@rubennorte](https://github.com/rubennorte)) +- **Web APIs**: Expose `structuredClone` and `DOMException` as global Web APIs ([245bbfaf0a](https://github.com/react/react-native/commit/245bbfaf0aeaa197f2a7097cf880e42cd76d2292) by [@rubennorte](https://github.com/rubennorte)) + +#### Android specific + +- **Accessibility**: Add support for direct progress accessibility actions ([1413a59de6](https://github.com/react/react-native/commit/1413a59de6bcc5dc30d07801b56ac71f8c2b65cb) by [@AndrewBlackMeta](https://github.com/AndrewBlackMeta)) +- **Build**: Introduce PCH for codegen targets to improve compilation time ([7ca1b42002](https://github.com/react/react-native/commit/7ca1b42002ca117339e71e3b9b859cf461543349) by [@lukmccall](https://github.com/lukmccall)) +- **Events**: Add `eventTime` to the `onHWKeyEvent` device event payload ([15bb7e23f2](https://github.com/react/react-native/commit/15bb7e23f20d38bcb78e0ac708e9ac1c7d443514) by [@bumjung](https://github.com/bumjung)) +- **Gradle**: Add `strictCxxApiEnabled` Gradle property to enforce React Native's C++ stable API in app native code ([b5d9b6c03a](https://github.com/react/react-native/commit/b5d9b6c03a28f33a0b57834964a23b86b3fa3d0e) by [@j-piasecki](https://github.com/j-piasecki)) +- **Performance**: C++ `TraceSection` markers now appear in Perfetto and systrace captures ([7728787c25](https://github.com/react/react-native/commit/7728787c251eb6ccbe4bc974b5890927db19af3f) by [@tomekzaw](https://github.com/tomekzaw)) +- **Renderer**: Add `unstable_Immediate` UpdateMode support in `updateState`. ([0876643b91](https://github.com/react/react-native/commit/0876643b91cc2ad6018cc8a0c87df7e19f12f7fd) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) +- **Renderer**: Stop re-arming the idle DISPATCH_UI Choreographer frame callback (behind feature flag) ([8baeb2deeb](https://github.com/react/react-native/commit/8baeb2deeb67e43211cfa4fbe3e6b116440cf6a2) by [@capt-muji](https://github.com/capt-muji)) +- **Text**: Log unrecognized font families, matching iOS ([c1401a16a0](https://github.com/react/react-native/commit/c1401a16a03d39ec4ddf2ba408dd8d854fb9be9f) by [@mosab-nasrallah](https://github.com/mosab-nasrallah)) +- **TurboModules**: Add support for Activity Result API for native modules ([ec2b536e14](https://github.com/react/react-native/commit/ec2b536e14070baba69bdf74ef0043a22f417361) by [@matinzd](https://github.com/matinzd)) +- **Yoga**: Add `YogaNode.setNodeType` to select pixel rounding for measured nodes ([928fd149cb](https://github.com/react/react-native/commit/928fd149cb939f069b76f7d11ed40db542fe6a64) by [@pentiumao](https://github.com/pentiumao)) + +#### iOS specific + +- **Accessibility**: `AccessibilityInfo.isShowBordersEnabled()` and `showBordersChanged` (Show Borders, formerly Button Shapes) ([62a1fc186d](https://github.com/react/react-native/commit/62a1fc186d8b8615fa61d4b855fe4e48903caf38) by [@camilopires](https://github.com/camilopires)) +- **CocoaPods**: Add `RN_STRICT_API` and `RN_ALLOW_FRAMEWORKS` CocoaPods opt-ins to enforce React Native's C++ stable API in app and library native code ([0f1c6ae87d](https://github.com/react/react-native/commit/0f1c6ae87d88a8c7c2376f3ec10b0a4ce9b31643) by [@coado](https://github.com/coado)) +- **ReactHost**: Add `-[RCTHost jsCallInvoker]` to access the React instance's `CallInvoker` ([8f58866394](https://github.com/react/react-native/commit/8f588663941401163a7f0a621b90b604ba2b9bf4) by [@potomak](https://github.com/potomak)) +- **SwiftPM**: Add `RN_STRICT_API` and `RN_ALLOW_FRAMEWORKS` opt-ins for the Swift Package Manager setup to enforce React Native's C++ stable API in the app's native code ([47f744d296](https://github.com/react/react-native/commit/47f744d296969dfe15809c94dcc00652dd2f6278) by [@coado](https://github.com/coado)) +- **TurboModules**: Add injectable launchOptions and performanceLogger module APIs ([9d7447ab0d](https://github.com/react/react-native/commit/9d7447ab0d4a352ee667b3e9c7fe9f1561b0db20) by [@christophpurrer](https://github.com/christophpurrer)) + +### Changed + +- **Accessibility**: Avoid VoiceOver interruptions from hidden text updates ([e04aaf62f7](https://github.com/react/react-native/commit/e04aaf62f70491c803f0e0653075ec088c7c88f4) by [@sbuggay](https://github.com/sbuggay)) +- **Animated**: Avoid per-call allocations in Animated string and color interpolation ([efc5161a8d](https://github.com/react/react-native/commit/efc5161a8dfb76302ca86b69e259d09de14d9858) by [@shubh73](https://github.com/shubh73)) +- **Babel**: Hermes V1 profiles no longer lower `u`-flag regexes, which Hermes compiles natively ([92629fd498](https://github.com/react/react-native/commit/92629fd498cf79ae4890174d9400883abb911991) by [@robhogan](https://github.com/robhogan)) +- **Build**: Changed builds to not probe Maven for `1000.0.0` versioned artifacts. ([b5c152237f](https://github.com/react/react-native/commit/b5c152237fb25b478edd9893186f0cc6e246d065) by [@coado](https://github.com/coado)) +- **C++**: `RuntimeScheduler.h` no longer transitively includes `PerformanceEntryReporter.h` or `ShadowTreeRevisionConsistencyManager.h`; include them directly where the complete types are needed ([7aff51e2d1](https://github.com/react/react-native/commit/7aff51e2d1ee0713116871a23632872a519a03df) by [@j-piasecki](https://github.com/j-piasecki)) +- **C++**: Expose `enableMountingCoordinatorPullModelAndroid` in public C++ feature flags and move `BackgroundImagePropsConversions.h` to "for frameworks" headers ([fc4e7061e2](https://github.com/react/react-native/commit/fc4e7061e211251931d7b65c7b27015afc3fa95a) by [@j-piasecki](https://github.com/j-piasecki)) +- **C++**: Find a LongLivedObject in its collection without walking it ([caf9cbcd63](https://github.com/react/react-native/commit/caf9cbcd6356ddb993fdbab62106985426f7c179) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **C++**: Move `RecoverableError` from private headers to "for frameworks" headers ([f9c7007dc9](https://github.com/react/react-native/commit/f9c7007dc9dd95d646a02f8acd1527fef8d786e8) by [@j-piasecki](https://github.com/j-piasecki)) +- **CLI**: Change default transform profile to 'hermes-stable' ([97bea4625d](https://github.com/react/react-native/commit/97bea4625dd7bb74c8d84a7b3140a00ebd516cb0) by [@retyui](https://github.com/retyui)) +- **Codegen**: Codegen-generated C++ includes React Native through module umbrella headers ([095e563fb3](https://github.com/react/react-native/commit/095e563fb3780b2c6f5cadac1153bf60247841b8) by [@j-piasecki](https://github.com/j-piasecki)) +- **Dependencies**: Bump `memoize-one` package to the latest version ([adc45a8a03](https://github.com/react/react-native/commit/adc45a8a035129ccf9ac725a9ee99d7d8b3ef1f8) by [@retyui](https://github.com/retyui)) +- **EventEmitter**: RCTDeviceEventEmitter.emit no longer allocates closures on every emit when tracing is disabled, reducing per-event allocation on the native-to-JS event path ([7f6043bdb0](https://github.com/react/react-native/commit/7f6043bdb045386a52cc465cadaf7a84fee0bf2b) by [@secitr](https://github.com/secitr)) +- **Hermes**: Bump Hermes to 260318099.0.6 ([4eb4d2e795](https://github.com/react/react-native/commit/4eb4d2e795ca6586f4c68d464d72bdf7cb353875) by [@fabriziocucci](https://github.com/fabriziocucci)) +- **Metro**: Bump Metro minimum to 0.87.2 ([b5c65ce265](https://github.com/react/react-native/commit/b5c65ce2654a32a7bff23bd6fca96c206840ad1e) by [@robhogan](https://github.com/robhogan)) +- **React Native DevTools**: Upgrade the standalone app to Electron 43, add app-menu shortcuts, and add a macOS 26/27 icon ([861635c35a](https://github.com/react/react-native/commit/861635c35a16c4bb8e93fba38c7c0cbf2ad6fe9b) by generatedunixname1395667395051502) +- **Renderer**: Building a `ShadowView` for a View node no longer uses a `dynamic_cast` to read its layout metrics ([79a562960d](https://github.com/react/react-native/commit/79a562960dbe5de3b99a2ca4531acc8dab620c0e) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Renderer**: Commits under a `display: 'none'` view no longer re-run layout over the whole surface when something under it was created or changed while it was hidden ([fe0df65653](https://github.com/react/react-native/commit/fe0df6565346b2ad5f20f0af4e9c703beea55503) by [@mozzius](https://github.com/mozzius)) +- **Renderer**: Compare prop name pointers before their characters in RawPropsParser ([3b88cb2c67](https://github.com/react/react-native/commit/3b88cb2c67d31d797bc1a96805fcacc57b6a7e3b) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Renderer**: Replace never-shared std::shared_mutex with std::mutex in ShadowNodeFamily ([64217380a3](https://github.com/react/react-native/commit/64217380a381773fbe5fd652648f395eeaac001d) by [@amillez](https://github.com/amillez)) +- **Renderer**: The differ no longer copies its view culling context for every child when view culling is off ([7230b63b3e](https://github.com/react/react-native/commit/7230b63b3e25a28f402d8bc84d35014c405fe1aa) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **ShadowNode**: Avoid a redundant copy of the children list in `ShadowNode::cloneTree` and `UIManager::updateShadowTree` ([d0078c23d8](https://github.com/react/react-native/commit/d0078c23d8231e5cf389b7e9517e6ef1ab5c8541) by [@shubh73](https://github.com/shubh73)) +- **Text**: Enable prepared text layout caching and Android text measurement optimizations by default ([a5cb48b2fc](https://github.com/react/react-native/commit/a5cb48b2fc3380498272e7f3a14f41f8e1e7c061) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **VirtualizedList**: Reduce allocations in the `VirtualizedList` render and scroll path (avoid per-render `Set` allocation for `stickyHeaderIndices`, per-scroll-event `Map` iterator for the empty nested-list collection, and per-call `orientation` object allocation) ([731ae45ae6](https://github.com/react/react-native/commit/731ae45ae6ec70e5cf02613f110c803c80c2c8af) by [@secitr](https://github.com/secitr)) +- **VirtualizedList**: Skip the cells state update when the render window doesn't change ([2c635d7473](https://github.com/react/react-native/commit/2c635d74734649a4a420c3a04f346c071a7abc20) by [@tomekzaw](https://github.com/tomekzaw)) +- **Yoga**: Yoga layout no longer uses `dynamic_cast` for every child to check its type ([392b7645b3](https://github.com/react/react-native/commit/392b7645b3f7abe47dd59d081471f83c73dd037e) by [@hryhoriiK97](https://github.com/hryhoriiK97)) + +#### Android specific + +- **Build**: Update `targetSdk` to 37 ([9fae71c2dd](https://github.com/react/react-native/commit/9fae71c2dd6632c5f4a67f785390710037ca9f33) by [@alanjhughes](https://github.com/alanjhughes)) +- **C++**: Include React Native through module umbrella headers in app-facing JNI headers and the generated autolinking header ([738e793b78](https://github.com/react/react-native/commit/738e793b789d73cc6a20e38f4671f786495095ab) by [@j-piasecki](https://github.com/j-piasecki)) +- **Dependencies**: Bump fbjni to 0.8.1 ([1d13ec9889](https://github.com/react/react-native/commit/1d13ec98891632d8d99b71114f0ac8ffbf6a2fe8) by [@cortinico](https://github.com/cortinico)) +- **Dependencies**: Bump NDK to r28c, fbjni 0.8.1 and fresco 3.9.0 ([a948811cca](https://github.com/react/react-native/commit/a948811cca6f2d2899d41412d4dfd27f8a920134) by [@Kudo](https://github.com/Kudo)) +- **Dependencies**: Upgrade AndroidX Activity to 1.10.1 ([3b755040db](https://github.com/react/react-native/commit/3b755040db9352dd8a55122d1bcfb5f7104d69fb) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Image**: Images from the app bundle look up their resource without throwing an exception ([98291bcb99](https://github.com/react/react-native/commit/98291bcb99b49c0d83d67d2fa58f02a12497cddd) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Kotlin**: Bump Kotlin to 2.2.10 to match the version required by AGP 9.2.1 ([f03f6c2b85](https://github.com/react/react-native/commit/f03f6c2b856e7d923f8af13d7ef452eb4bb21cd4) by [@lukmccall](https://github.com/lukmccall)) +- **Kotlin**: Bumped the Gradle plugin minimum Kotlin API version to 2.1 ([3cee68fa7a](https://github.com/react/react-native/commit/3cee68fa7a6f407e634d8ea342b81319ae5acc00) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Kotlin**: Update Kotlin to 2.3.21 ([43a49f7fe3](https://github.com/react/react-native/commit/43a49f7fe33d32aac89c01254edd6afa369c3372) by [@cortinico](https://github.com/cortinico)) +- **Renderer**: Create StateWrapperImpl from C++ with its state ([c48341282e](https://github.com/react/react-native/commit/c48341282ec3d95fad2f3d5a4b1bc30250794df0) by [@tomekzaw](https://github.com/tomekzaw)) +- **ScrollView**: Build the scroll event payload in one JNI call ([3908ef3153](https://github.com/react/react-native/commit/3908ef31531335f4e5c0c9185e18b72fb5ca2912) by [@tomekzaw](https://github.com/tomekzaw)) +- **Text**: Share one JNI global reference between copies of a prepared text layout, instead of creating one per copy ([9c7b0f5faf](https://github.com/react/react-native/commit/9c7b0f5fafdaa986bd3dcff7d65c3d8d59861176) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Text**: Skip an unnecessary measuring pass when laying out `Text` ([3f5c2f3dbb](https://github.com/react/react-native/commit/3f5c2f3dbb6fae079b141314f651f6c2e1fa818d) by [@tomekzaw](https://github.com/tomekzaw)) +- **Text**: Text nodes cloned without changes share their measured layout instead of creating a new JNI global reference ([0e041ddf8f](https://github.com/react/react-native/commit/0e041ddf8ff903953603636e61536ad6ee414674) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Touch Handling**: Build touch event payloads in native code, making each touch event cheaper on the main thread ([f5feafd404](https://github.com/react/react-native/commit/f5feafd4047e15c2e69286bb65c8c48f06e92f33) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **TurboModules**: Parse each TurboModule method's JNI signature once instead of on every call ([f7de20301c](https://github.com/react/react-native/commit/f7de20301c65fb81bca437aa3279c8dc62066378) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **TurboModules**: Skip a redundant JNI Object.toString() call in WritableNativeMap.putString. ([ba1ede621c](https://github.com/react/react-native/commit/ba1ede621cf5fc63b81fc3e2645f3014c0fe0c03) by [@riteshshukla04](https://github.com/riteshshukla04)) +- **View**: Views with four equal rounded corners get their outline without building a path ([42ba24ab03](https://github.com/react/react-native/commit/42ba24ab034d66bbecdd85cf7efc9cf4f82ea954) by [@hryhoriiK97](https://github.com/hryhoriiK97)) + +#### iOS specific + +- **AppDelegate**: `RCTAppSetupUtils.h` no longer transitively imports `HermesExecutorFactory.h` ([a385cecbea](https://github.com/react/react-native/commit/a385cecbeae0f0f498fc764367932fff658ef626) by [@j-piasecki](https://github.com/j-piasecki)) +- **AppDelegate**: `RCTAppSetupUtils.h` no longer transitively imports `JSIExecutor.h` or `JSExecutor.h` ([3eb901e31a](https://github.com/react/react-native/commit/3eb901e31a2b8258c4e478ad719db64ee30839af) by [@j-piasecki](https://github.com/j-piasecki)) +- **Runtime**: Include `errno` and its description in `RCTJavaScriptLoader` bundle open/stat errors ([156a9a29a9](https://github.com/react/react-native/commit/156a9a29a9c587691cb88103fd7a04e25d971ed7) by generatedunixname1608173377072046) +- **StatusBar**: Reland iOS 27 StatusBar fix with tvOS guards ([edf2b86e63](https://github.com/react/react-native/commit/edf2b86e63b311cd844a53b7fba474e9b0994658) by [@cipolleschi](https://github.com/cipolleschi)) +- **SwiftPM**: `spm add` and `spm update` write React Native's build settings to `ReactNativeSPM/ReactNativeSPM.xcconfig` and its build scripts to `ReactNativeSPM/Scripts/`, so a version bump no longer changes `project.pbxproj`. A configuration that uses its own xcconfig must now `#include` the generated file, and a target setting that hides React Native's value must add `$(inherited)`. `spm` prints the exact fix in both cases. ([6a2c7c2734](https://github.com/react/react-native/commit/6a2c7c27342d16cab93e398f950ad5b5565d2942) by [@chrfalch](https://github.com/chrfalch)) +- **Text**: Build a paragraph's NSAttributedString without copying each text fragment or re-attributing its runs ([7fc58f2192](https://github.com/react/react-native/commit/7fc58f2192f1920bea56f448a14e12bc7de0c980) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Text**: Pass `AttributedString` by const reference in `RCTTextLayoutManager` and add a move constructor for `AttributedStringBox`. ([0ffaff80a3](https://github.com/react/react-native/commit/0ffaff80a3b03b657c8f99da18959360bb1db581) by [@dheerajkoppu](https://github.com/dheerajkoppu)) +- **TurboModules**: Add nullability annotations to `RCTBridgeModule.h`. Module registry and view registry lookups, `methodsToExport`, promise resolve/reject arguments, and weak module properties such as `bridge` and `moduleRegistry` are now `nullable`. `methodQueue` is now nonnull, so Swift overrides must be declared as `DispatchQueue` rather than `DispatchQueue!`. ([08f96fefe4](https://github.com/react/react-native/commit/08f96fefe474037351ee66fe9f911f95aaf466f3) by generatedunixname1608173377072046) +- **TurboModules**: Look up each TurboModule method's signature once instead of on every call ([1d1fade902](https://github.com/react/react-native/commit/1d1fade90235e0533d5bb24c50ec3ae2b42194fa) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **TurboModules**: Strings passed from JS to native modules convert faster ([ed15270c6c](https://github.com/react/react-native/commit/ed15270c6c76b5256a258de94bff0e05161b6ddf) by [@hryhoriiK97](https://github.com/hryhoriiK97)) + +### Deprecated + +- **TurboModules**: `JavaTurboModule::invokeJavaMethod` with a `cachedMethodID` argument; use the overload without it ([f78bdd4aea](https://github.com/react/react-native/commit/f78bdd4aea8fde1eaaf2024ea210ff2188876f51) by [@hryhoriiK97](https://github.com/hryhoriiK97)) + +#### Android specific + +- **UIManager**: Deprecate the legacy View-based surface lifecycle methods in `UIManager`. ([d4d0813969](https://github.com/react/react-native/commit/d4d0813969cd5b8fef1fb6307981d99b2ae6b195) by [@javache](https://github.com/javache)) + +#### iOS specific + +- **Legacy Architecture**: Deprecate `RCTBridge.bundleURL`, `setRCTTurboModuleRegistry:`, and `bridgeModuleDecorator` ([1eb24d4b31](https://github.com/react/react-native/commit/1eb24d4b31266fda92d084102ecc872efd1cd82f) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Deprecate never-posted invalidation notifications still observed by Skia and Reanimated ([490c4023bb](https://github.com/react/react-native/commit/490c4023bba63e02c455a2211723c8d350c4ac31) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Deprecate unused old-architecture `RCTBridge` APIs ahead of removal ([fcb13c5171](https://github.com/react/react-native/commit/fcb13c5171676d15223e3e7eb17b18dc22f86674) by [@christophpurrer](https://github.com/christophpurrer)) +- **Renderer**: Mark `-[RCTSurfacePresenter addObserver:]` as deprecated for the compiler. Use `RCTMountingTransactionObserverCoordinator` instead. ([9979e142a7](https://github.com/react/react-native/commit/9979e142a719ad1e923f1a1c5f72cb66f1626f01) by [@tjzel](https://github.com/tjzel)) + +### Removed + +- **C++**: Removed unused `InspectorData.h` ([0a9bf3292e](https://github.com/react/react-native/commit/0a9bf3292e9268873a072c42aff34c37689ce415) by [@j-piasecki](https://github.com/j-piasecki)) +- **ScrollView**: Remove unstable_getScrollParent. Implement scroll-parent discovery in userland instead. ([3818b20eed](https://github.com/react/react-native/commit/3818b20eedae9d2469e447b3d168a6c4f6350963) by [@rubennorte](https://github.com/rubennorte)) +- **Text**: Remove the unused `maximumFontSize` paragraph attribute ([7e02fc7e68](https://github.com/react/react-native/commit/7e02fc7e687ec902bc57367004cc4074728db955) by [@conner1reimers](https://github.com/conner1reimers)) +- **TextInput**: Remove deprecated `TextInput` `blurOnSubmit` prop (use `submitBehavior` instead) ([ab373989c3](https://github.com/react/react-native/commit/ab373989c3fc8cf5f7b769a9b607de924cc41e28) by [@zoontek](https://github.com/zoontek)) +- **TurboModules**: Remove the sample TurboModule from React Native's public API ([4ffc4a6523](https://github.com/react/react-native/commit/4ffc4a652314499287f4733f5a525fdca5ad580d) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **View**: Remove the deprecated `hasTVPreferredFocus` prop ([6622ee55a1](https://github.com/react/react-native/commit/6622ee55a1f29e9a10aa32b40ffdd2ef24bbb4ee) by [@Abbondanzo](https://github.com/Abbondanzo)) + +#### Android specific + +- **JavaScript API**: Remove experimental split-bundle loading APIs ([2771618619](https://github.com/react/react-native/commit/27716186193bc29c940e1349fcb593513d5ad3e2) by [@javache](https://github.com/javache)) +- **Legacy Architecture**: Remove legacy TimingModule.kt ([e15b667cd3](https://github.com/react/react-native/commit/e15b667cd3a3178d89f6ffffa0254892dbe58beb) by [@christophpurrer](https://github.com/christophpurrer)) + +#### iOS specific + +- **JavaScript API**: Remove deprecated RCTProfile systrace API ([d3c2bb8ed4](https://github.com/react/react-native/commit/d3c2bb8ed44d50179e4f843543799715462c3c3c) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove dead `RCTBridge` flag functions, `batchDidComplete`, and unused callback typedef ([01d55273bc](https://github.com/react/react-native/commit/01d55273bcf17b6b3b59eab7e9ea7da060d46491) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove deprecated `RCTBridge` initializers ([bfa64ad01a](https://github.com/react/react-native/commit/bfa64ad01addce6b98269007f65c85679dc8ff08) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove deprecated `RCTBridgeDelegate` `sourceURLForBridge:` ([34795cbc36](https://github.com/react/react-native/commit/34795cbc36d3f1e511b2b7a0fa9639afe258d7e1) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove deprecated `RCTFabricSurface` bridge initializer and `RCTBridge` surface-presenter category ([d4fee6d983](https://github.com/react/react-native/commit/d4fee6d9837c1044ce88d5eae54d948008d4c128) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove deprecated `RCTModuleData` class and its call-invoker provider protocol ([f76f251b62](https://github.com/react/react-native/commit/f76f251b62d785bf140a6135b52021c6219ddcac) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove legacy RCTTimingModule ([0e01003f53](https://github.com/react/react-native/commit/0e01003f532d2e22e96146e1f1f8fda3bcc16556) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove unused `RCTBridge (Inspector)` category ([e57dcb3cc4](https://github.com/react/react-native/commit/e57dcb3cc472d756fdbb784c60ddbbb76eade04e) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove unused `RCTCxxBridgeDelegate` protocol ([e362239300](https://github.com/react/react-native/commit/e362239300295157944e54a42fd71624f67e2c9e) by [@christophpurrer](https://github.com/christophpurrer)) +- **Legacy Architecture**: Remove unused per-module `RCTBridge` accessors ([0c68446f08](https://github.com/react/react-native/commit/0c68446f0864c5396cc1b577a30ea77ee47e3b84) by [@christophpurrer](https://github.com/christophpurrer)) +- **Performance**: Remove the non-functional Views counter from the PerfMonitor HUD ([200245eb09](https://github.com/react/react-native/commit/200245eb0946331550fef8197a26e0aa89227abe) by [@christophpurrer](https://github.com/christophpurrer)) +- **Runtime**: Remove `RCTInstanceSetRuntimeDiagnosticFlags` and `RCTInstanceRuntimeDiagnosticFlags` ([935f73302b](https://github.com/react/react-native/commit/935f73302b6013b7967ad5a03d49867830083d87) by [@javache](https://github.com/javache)) + +### Fixed + +- **Animated**: `Easing.bezier`: fix wrong values on steep curves such as `(1, 0, 0, 1)`; input outside [0, 1] now saturates ([2ae713e898](https://github.com/react/react-native/commit/2ae713e898f020f47eccf99d63eac16023c1a7a2) by @greweb) +- **Animated**: An Animated interpolation of a string that contains an `rgb()`, `hsl()` or `hwb()` color, such as a box shadow, interpolates the whole string instead of collapsing to the color ([1adb75ea3b](https://github.com/react/react-native/commit/1adb75ea3bd49341d3f074f13913ef63d66eebd3) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Animated**: Fix native-driven animations stepping backward when a native event update runs between frames with the shared animated backend ([dee5bb5762](https://github.com/react/react-native/commit/dee5bb5762f9f0def5e5f1732a1d53be5023aca3) by [@markv](https://github.com/markv)) +- **Animated**: Non-layout props animated on the shared animation backend no longer freeze while the same view or another view on the surface animates a layout prop ([14ace9beaa](https://github.com/react/react-native/commit/14ace9beaa4b191a00c34b92cc0462acb9b91d34) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Babel**: `experimentalImportSupport` in a Metro config now takes effect when `react-native/babel-preset` is named in a project Babel config ([a24bd322d7](https://github.com/react/react-native/commit/a24bd322d7c5e25698555ec9af97ace96aa05b02) by [@shubh73](https://github.com/shubh73)) +- **Babel**: Fix Platform.select inlining producing invalid output for object methods when discarding impure initializers is skipped ([88748a7973](https://github.com/react/react-native/commit/88748a7973b4420710f217d961b9dfedcb72bf44) by [@vzaidman](https://github.com/vzaidman)) +- **Babel**: Preserve side effects from discarded Platform.select property initializers in the Babel preset. ([f3fb55031d](https://github.com/react/react-native/commit/f3fb55031d6173bd567e2ad528071e4b791020dc) by [@mfkrause](https://github.com/mfkrause)) +- **Blob**: Fix Blob.slice end handling when start is omitted ([7619e9c58b](https://github.com/react/react-native/commit/7619e9c58be9f35ffef8ff6d04bafe42e465753a) by [@Shubham-Padkonde](https://github.com/Shubham-Padkonde)) +- **C++**: Fix native dispatcher callback ownership and shutdown synchronization ([03355ef9a1](https://github.com/react/react-native/commit/03355ef9a12f698c94d2fd83f3240f127ff97719) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **C++**: Restore public `parseUnprocessedTransformOriginString` in `react/renderer/components/view/conversions.h` ([7b11d48538](https://github.com/react/react-native/commit/7b11d4853884a1bfc77f1854efc84addbdfa4992) by [@cipolleschi](https://github.com/cipolleschi)) +- **Codegen**: Codegen now also reads `react-native.config.cjs`, so libraries declared in it are no longer skipped in ESM projects ([583c8f3afb](https://github.com/react/react-native/commit/583c8f3afb29a4f81eb04a621e8ac4c678ac56b4) by [@CAMOBAP](https://github.com/CAMOBAP)) +- **Codegen**: Reduce generated native component bundle overhead ([f156ef2b02](https://github.com/react/react-native/commit/f156ef2b028472071e4cf9439d6e637cc828f29d) by [@rubennorte](https://github.com/rubennorte)) +- **Dev Menu**: Toggling Touchables in the Element Inspector no longer remounts the app and resets its state ([d194d8b5c6](https://github.com/react/react-native/commit/d194d8b5c62a39af0f44648f3fe3b140c7fa90cc) by [@LESANF](https://github.com/LESANF)) +- **Dev Server**: Skip HMR client setup when the JS bundle was not loaded from Metro ([f109c0af86](https://github.com/react/react-native/commit/f109c0af8693b58e0716b77b0b7c0c2299fc0a0e) by [@javache](https://github.com/javache)) +- **DOM API**: Preserve an explicit null `thisArg` in NodeList.forEach callbacks. ([822cfc4e40](https://github.com/react/react-native/commit/822cfc4e40756a16af1d3b1d8709d879a3d37057) by [@OskarEichler](https://github.com/OskarEichler)) +- **DOM API**: Preserve NaN and signed zero in DOMRect values. ([99aefad9fb](https://github.com/react/react-native/commit/99aefad9fb51098bdde69159dadd2b0c82a2d05f) by [@OskarEichler](https://github.com/OskarEichler)) +- **ESLint**: Align the `react-native/no-deep-imports` auto-fix map with the package's public API ([29900fca26](https://github.com/react/react-native/commit/29900fca26e68b05ccb95abb95da105f0feca85e) by [@rubennorte](https://github.com/rubennorte)) +- **ESLint**: Fixed the issue when using the flat config with ESLint v9. ([099bcb444e](https://github.com/react/react-native/commit/099bcb444eb2f3432040461cad7b60fb07556c73) by [@tcK1](https://github.com/tcK1)) +- **ESLint**: Stop `no-deep-imports` from reporting `react-native/package.json`, which is a supported entry point ([46d00410e8](https://github.com/react/react-native/commit/46d00410e82404a07e7d4a4e01262b511192f6bb) by [@ahmdshrif](https://github.com/ahmdshrif)) +- **Events**: Handle native component event names that shadow Object prototype properties. ([665beff9df](https://github.com/react/react-native/commit/665beff9df7a32f157abe630d087a05d5dc48073) by [@OskarEichler](https://github.com/OskarEichler)) +- **Hermes**: Hermes profiles no longer lower generators, `for...of`, optional chaining, nullish coalescing or optional catch binding in dev, matching release ([ba0b3dbd6c](https://github.com/react/react-native/commit/ba0b3dbd6c7255e77be775e7667d2da63a260191) by [@robhogan](https://github.com/robhogan)) +- **Hermes**: Retain Unicode regex semantics while lowering property escapes for Hermes builds ([6e22123d6f](https://github.com/react/react-native/commit/6e22123d6fac2aa3f3661f39e7aa622b20b35420) by [@andrewdacenko](https://github.com/andrewdacenko)) +- **Image**: Fix explicit `resizeMode="stretch"` being ignored on newly created Android `Image`s ([e560782758](https://github.com/react/react-native/commit/e5607827587104a8b75fdb45fa5742100614330e) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **IntersectionObserver**: IntersectionObserver rootMargin now affects intersection against a clipping root ([5646c31dff](https://github.com/react/react-native/commit/5646c31dff5ac2310e2b841acb115fe55e7b06a7) by [@edkimmel](https://github.com/edkimmel)) +- **Jest**: Fix `react-native/jest-preset` failing to resolve `react-native` and to transform preset sources under pnpm and Yarn pnpm-mode installs ([b71d466561](https://github.com/react/react-native/commit/b71d466561f128272ab707e6a13b02ab76497abe) by [@amroaltah](https://github.com/amroaltah)) +- **LayoutAnimation**: Fix setLayoutAnimationEnabled not applying the value parameter ([550aadd200](https://github.com/react/react-native/commit/550aadd200f5796afabdfcd9bea893b2fd81fca4) by [@Nedunchezhiyan-M](https://github.com/Nedunchezhiyan-M)) +- **Metro**: Scope Metro `INTERNAL_CALLSITES_REGEX` to the `react-native` package to avoid collapsing unrelated frames ([03737541b1](https://github.com/react/react-native/commit/03737541b1313c24cb7c11a6cfe5dcf6ebbf65ba) by [@vzaidman](https://github.com/vzaidman)) +- **Networking**: WebSocket no longer dispatches `message` events after `close()` has been called ([a6c0c470ad](https://github.com/react/react-native/commit/a6c0c470ad9be0d4120a2edfb682509ca1305b34) by [@lazerg](https://github.com/lazerg)) +- **New Architecture**: Fix `minimumFontScale` with `adjustsFontSizeToFit` in the New Architecture ([b7357896e2](https://github.com/react/react-native/commit/b7357896e26b8c4677f75e6c0acf32c85365b4fb) by [@conner1reimers](https://github.com/conner1reimers)) +- **Performance**: Reject missing and non-function PerformanceObserver callbacks during construction. ([c2da17514e](https://github.com/react/react-native/commit/c2da17514e84b008a5c960aa771513630efe1833) by [@OskarEichler](https://github.com/OskarEichler)) +- **Performance**: Validate invalid PerformanceObserver observe option combinations before native registration ([e0224fd40b](https://github.com/react/react-native/commit/e0224fd40b673ad2143c8c395c20d23a115e0801) by [@ya-nsh](https://github.com/ya-nsh)) +- **React Native DevTools**: Fix "Unable to fetch script source" when debugging code evaluated in the DevTools console ([e8c06bb08b](https://github.com/react/react-native/commit/e8c06bb08be61c93d79bfaeb05f0116ef377b5ba) by [@vzaidman](https://github.com/vzaidman)) +- **React Native DevTools**: Fix launch failure when Chromium uses the SUID sandbox (Linux) ([954a7c2a97](https://github.com/react/react-native/commit/954a7c2a97cf2d9763479ae8b1ad156460876ceb) by [@huntie](https://github.com/huntie)) +- **React Native DevTools**: Fix React Native DevTools staying open but unresponsive after the debugged React Native instance is destroyed ([eec38e3c82](https://github.com/react/react-native/commit/eec38e3c82e672f058318c4ef149332511ad2401) by [@vzaidman](https://github.com/vzaidman)) +- **React Native DevTools**: Fix the inspector proxy leaking a pages polling timer, and sending duplicate `getPages` requests, each time a device reconnects with the same device ID ([268b3029ef](https://github.com/react/react-native/commit/268b3029efa16c449508d80c2c1b93d287a5345f) by [@vzaidman](https://github.com/vzaidman)) +- **Renderer**: Fix the differ creating a mounted view again, or deleting a moved view, when a child with a negative `zIndex` moves in a nested flatten/unflatten ([361bc240e4](https://github.com/react/react-native/commit/361bc240e42fb4db0568c1d411116c6bf8f7049d) by [@pawicao](https://github.com/pawicao)) +- **Runtime**: Fix deadlock in `RuntimeScheduler` when a task destructor schedules work while the queues are cleared after an error ([3181abc5c9](https://github.com/react/react-native/commit/3181abc5c9b0143090125d726e42aee4269d10b4) by [@hcbylmz](https://github.com/hcbylmz)) +- **Runtime**: Install globalEvalWithSourceUrl on bridgeless ReactInstance so debug bundle loaders can evaluate split bundles via JSI instead of eval() ([2a2ccaa522](https://github.com/react/react-native/commit/2a2ccaa522aa0930060611a0c305f9d6fc5b86f1) by [@abzokhattab](https://github.com/abzokhattab)) +- **Styles**: `hsl()` colors with an alpha, and alphas given as a percentage such as `rgb(0 128 0 / 50%)`, are no longer rejected ([3aee67bcb6](https://github.com/react/react-native/commit/3aee67bcb698900efcffe9b03c775e14d8ad4e30) by [@lazerg](https://github.com/lazerg)) +- **Styles**: Accept unitless zero stops and reject invalid layers in backgroundImage strings ([54905a2006](https://github.com/react/react-native/commit/54905a20063124919efb0127fe65fecfd8d62d1d) by [@lazerg](https://github.com/lazerg)) +- **Styles**: Default omitted filter amounts to 1 and reject px in processFilter ([888784ce89](https://github.com/react/react-native/commit/888784ce892612c30fb068abd951f835ffa65768) by [@lazerg](https://github.com/lazerg)) +- **Styles**: Keep percentages in `translateX`/`translateY` string transforms and parse numbers without a leading zero ([bd9348a32a](https://github.com/react/react-native/commit/bd9348a32a4720b328fc9d635f300790bec4b2b3) by [@camchis](https://github.com/camchis)) +- **Text**: `adjustsFontSizeToFit` text grows back when its container grows ([db5c52de8b](https://github.com/react/react-native/commit/db5c52de8bd222ef78e358f3525dccc27863e2f2) by [@tomekzaw](https://github.com/tomekzaw)) +- **Text**: Avoid state updates and re-layout of unchanged `Text` siblings when a sibling changes ([e7766ab2fa](https://github.com/react/react-native/commit/e7766ab2fa2c864d09822b036fb34e362a08c57c) by [@tomekzaw](https://github.com/tomekzaw)) +- **Text**: Text inside Modal now updates after a live font scale change ([e8e63cf79c](https://github.com/react/react-native/commit/e8e63cf79c366683adb0da67f1d6933a024f9e9a) by [@simongt](https://github.com/simongt)) +- **Touch Handling**: `Pressability` now invokes the current `onHoverIn`/`onHoverOut` rather than the ones captured when its event handlers were created ([8a4cf38576](https://github.com/react/react-native/commit/8a4cf385761900ed76315b310b05c9db7ebcf356) by [@rozele](https://github.com/rozele)) +- **Touch Handling**: Fix lost taps after a touched view unmounts when EventTarget event dispatching is enabled ([eb90a8d251](https://github.com/react/react-native/commit/eb90a8d2512493a52c3159bb77f3992da68c67aa) by [@rubennorte](https://github.com/rubennorte)) +- **Touch Handling**: Fix the responder not being released when a touch ends after its view unmounted ([f754dbd20a](https://github.com/react/react-native/commit/f754dbd20a8548cddfa548815a6e1f4bb25b6443) by [@lazerg](https://github.com/lazerg)) +- **TypeScript**: Fix the legacy TypeScript `ImageStyle` type rejecting valid `ViewStyle` props such as `filter`, `boxShadow` and `mixBlendMode` ([278e7f93c8](https://github.com/react/react-native/commit/278e7f93c81acc55cec6e14a8f37721ff817f595) by [@ramya-2196](https://github.com/ramya-2196)) +- **View**: Reset a removed `shadowRadius`, `shadowOffset`, `editable` or `persistentScrollbar` prop to its default ([86695d8eb6](https://github.com/react/react-native/commit/86695d8eb63599bf605e2d2ab0a18ffcd53a5bc7) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **VirtualizedList**: Avoid delaying urgent `VirtualizedList` rendering after queued no-op updates ([6dcc04bf21](https://github.com/react/react-native/commit/6dcc04bf21374952b3da2a418e07daca879bcf48) by [@javache](https://github.com/javache)) +- **VirtualizedList**: Clear the pending batch-update timer id in componentWillUnmount so a list hidden and revived by Suspense (react-freeze / freezeOnBlur) resumes rendering new cells ([381d74d788](https://github.com/react/react-native/commit/381d74d788851e42613338b430bb81d76b1c9821) by [@twelvearrays](https://github.com/twelvearrays)) +- **VirtualizedList**: Do not report viewable items for a cross-orientation nested list while its parent row is off screen ([4fec40e69d](https://github.com/react/react-native/commit/4fec40e69d18bbd90745f71a9ef748f0e3159465) by [@amroaltah](https://github.com/amroaltah)) +- **VirtualizedList**: Fix VirtualizedSectionList._setUpdateHighlightFor deleting from wrong target (memory leak) ([0941e95391](https://github.com/react/react-native/commit/0941e95391d23cb2e0490d9c5a5b13886da424f2) by [@bl4987637-code](https://github.com/bl4987637-code)) +- **VirtualView**: Fix `VirtualView` initial mode when `initialHidden` is not sent on creation ([cf583810a1](https://github.com/react/react-native/commit/cf583810a1a1b986f98a186bee8c92400b606293) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Web APIs**: Sort URLSearchParams names in UTF-16 code-unit order instead of locale order. ([778fef746d](https://github.com/react/react-native/commit/778fef746dd8bc6585b5c01556ab8c625ae0d967) by [@Marve10s](https://github.com/Marve10s)) +- **Yoga**: Avoid exponential min-content measurement during automatic minimum sizing of nested flex containers ([6e2edef96e](https://github.com/react/react-native/commit/6e2edef96e9c96b5024882b3be185c3eb0b3fc7e) by [@adityasharat](https://github.com/adityasharat)) +- **Yoga**: Fix `Style::operator==` ignoring `boxSizing` ([e0d0f011ee](https://github.com/react/react-native/commit/e0d0f011ee2b561f4661f7f6fb99fef376287e54) by Open Source Bot) +- **Yoga**: Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size, behind the new `FlexFirstPassUsesRunningTotals` errata (set by default) ([ca7acf62c5](https://github.com/react/react-native/commit/ca7acf62c5d941d8ea47c9a05c5657c7e9c28010) by [@Dagur](https://github.com/Dagur)) +- **Yoga**: Fix stale layout when a child switches to `display: contents` after being inserted ([19a6722f91](https://github.com/react/react-native/commit/19a6722f91c5b445f44eeff281cfb040d45e459d) by [@kwy404](https://github.com/kwy404)) + +#### Android specific + +- **Accessibility**: A `View` with `aria-live` or `accessibilityLiveRegion` is no longer flattened, so the live region is announced ([5e13324903](https://github.com/react/react-native/commit/5e13324903a531edb0d0be23a04d5ec651cd4923) by [@faciledictu](https://github.com/faciledictu)) +- **Accessibility**: Fix accessibilityState, a removed accessibilityRole, role or accessibilityValue, and role="none" with Props 2.0 ([4c103143c2](https://github.com/react/react-native/commit/4c103143c2c95aa5bf60b74b7adc88a5d23e9ed8) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Accessibility**: Preserve complete text for accessibility when prepared text layouts are ellipsized ([6afe9f134a](https://github.com/react/react-native/commit/6afe9f134ac82f890c51411be4f0c6d82d7f6203) by [@javache](https://github.com/javache)) +- **Accessibility**: Prevent invalid `accessibilityRole` values from crashing the app. ([9a20e06f51](https://github.com/react/react-native/commit/9a20e06f5119b4c333270b71c15d637f328d1b4f) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Accessibility**: Recycled views no longer keep the accessibility state of their previous props ([6f73542a45](https://github.com/react/react-native/commit/6f73542a454fd34d1983cbe8734f86cd09215258) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Accessibility**: Removing `accessibilityValue` no longer leaves its text in the content description or drops the `accessibilityLabel` ([25b05acd73](https://github.com/react/react-native/commit/25b05acd736249e2c0750034af8618a35461d085) by [@lazerg](https://github.com/lazerg)) +- **Build**: Fix Activity Result launcher compilation across AndroidX source variants ([d7ff82ebe4](https://github.com/react/react-native/commit/d7ff82ebe4ed5155b955fd60b31e02bbc76a3c66) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Dev Menu**: Pressing the menu key while the dev menu is open now closes it ([0e9d314184](https://github.com/react/react-native/commit/0e9d31418447b7fa57dc5356199ee867afa9e0b6) by [@alanjhughes](https://github.com/alanjhughes)) +- **Dev Server**: Warn when dev support is enabled but packager server access is disabled ([d365e6499a](https://github.com/react/react-native/commit/d365e6499a7675f2169d4e17a27795c9061c9e8a) by [@javache](https://github.com/javache)) +- **Gradients**: Stop logging "Unsupported type for radius property: Null" for gradient color stops without an explicit position ([585b28c5f0](https://github.com/react/react-native/commit/585b28c5f0a460dc7b8d50cc201776ae9cd290f1) by [@tshmieldev](https://github.com/tshmieldev)) +- **Gradle**: Invalidate the Android autolinking cache when `pnpm-lock.yaml` changes ([cd2de187e8](https://github.com/react/react-native/commit/cd2de187e8878119896159371225acbb9dfa5d9c) by [@JoelTowell](https://github.com/JoelTowell)) +- **Gradle**: Re-copy the prefab headers when a header under ReactCommon changes ([bf4fac3587](https://github.com/react/react-native/commit/bf4fac358714dddb13238d8c2749d3fb578ce11f) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Hermes**: Fix building Hermes from source on Windows failing on the JSI_DIR path ([7b21e74587](https://github.com/react/react-native/commit/7b21e74587f4b0bd63ed280a745f918eee03968c) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Hermes**: Fix Hermes source builds after the Hermes repository move ([f6a5042c84](https://github.com/react/react-native/commit/f6a5042c8445c29d169a8b0a641fdd5e47794ecd) by [@javache](https://github.com/javache)) +- **i18n**: Prevent a crash when resolving RTL layout direction on Android 6 ([eaa9d7f3c8](https://github.com/react/react-native/commit/eaa9d7f3c8a91619fb955cf05676976a272276c4) by Shreesh Ayachit) +- **Image**: Avoid blocking the UI thread while selecting multi-source images ([cf1fc01ce9](https://github.com/react/react-native/commit/cf1fc01ce9a23fbf9143f99bd062f61c9a6d18e5) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Image**: Fix Image sources, headers and a removed tintColor with Props 2.0 ([5e2f85a793](https://github.com/react/react-native/commit/5e2f85a7932b911e6ca584a2f9923a0144f1d2f9) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **MapBuffer**: Make the `React/View.h`, `React/Debug.h` and `React/MapBuffer.h` umbrella headers resolvable in CMake builds ([b936db95db](https://github.com/react/react-native/commit/b936db95db0992f610373c21f6e2658e0356081a) by [@j-piasecki](https://github.com/j-piasecki)) +- **Modal**: Fix Android navigation bar transparency for Modal ([b4d57abe12](https://github.com/react/react-native/commit/b4d57abe129d65d02a18ab4f5dd89e9e404357e9) by [@jasozh](https://github.com/jasozh)) +- **Modal**: Fix crash when dismissing a Modal whose Activity has already been destroyed ([7439937ef9](https://github.com/react/react-native/commit/7439937ef912fe4b416a983539a21c52f15afd5e) by generatedunixname1608173377072046) +- **Networking**: Fix WebSocket cookie lookup dropping path-scoped cookies ([0eb9b300b6](https://github.com/react/react-native/commit/0eb9b300b68d2a8edc2fe02dd7a45e424731a8e6) by [@lazerg](https://github.com/lazerg)) +- **PlatformColor**: Fix `PlatformColor` theme attributes that resolve to a ColorStateList, such as `?attr/textColorPrimary` ([4d536fa8cd](https://github.com/react/react-native/commit/4d536fa8cd1ce5a1bb8f158ec3c0ec780d94ab20) by [@lazerg](https://github.com/lazerg)) +- **ReactHost**: Fix `getCurrentActivity()` staying null after the Activity is destroyed during a reload ([ea5882bfb8](https://github.com/react/react-native/commit/ea5882bfb8d679e0972de54b8319dd65ccb92713) by [@lazerg](https://github.com/lazerg)) +- **Renderer**: Fix batches applied out of order when a surface's root view attaches ([879df0514e](https://github.com/react/react-native/commit/879df0514e30b6146324d90a24883b099cc86179) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Renderer**: Fix preallocated views leaking when `enableMountingCoordinatorPullModelAndroid` is enabled ([7624c9cacb](https://github.com/react/react-native/commit/7624c9cacbf4fde56b1d2eb971460b7df1461659) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Renderer**: Mount the commits of starting and stopping surfaces, and fix a freeze when the legacy `stopSurface(int)` runs on the UI thread ([1423ef001d](https://github.com/react/react-native/commit/1423ef001de538d50d0eed326d2b769db85d174e) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Runtime**: Fix crash in `UiThreadUtil` when the main handler is first accessed from multiple threads at once ([65b3e647f5](https://github.com/react/react-native/commit/65b3e647f540b9e8c66ebf01cc0c9b2f83cdb8a2) by [@locnp-active](https://github.com/locnp-active)) +- **ScrollView**: Finish interrupted ScrollView drags when receiving ACTION_CANCEL. ([0f17f27010](https://github.com/react/react-native/commit/0f17f270103950c5a63c9e7e05fb1958e61e419c) by [@ddx533534](https://github.com/ddx533534)) +- **ScrollView**: Fix crash in ScrollView accessibility delegate when `accessibilityCollection` is set and a child (e.g. a list header or footer) has no `accessibilityCollectionItem` ([2915fe02ca](https://github.com/react/react-native/commit/2915fe02cac2700005445b1f1dfcee90f1dfdfea) by [@iray-tno](https://github.com/iray-tno)) +- **ScrollView**: Fix crash when setting a percentage borderRadius on Text, TextInput, and ScrollView ([5fc6ccb165](https://github.com/react/react-native/commit/5fc6ccb165ff91f520a35561591cc11abbf1083b) by [@sbaiahmed1](https://github.com/sbaiahmed1)) +- **ScrollView**: Fix mouse wheel and joystick scrolling direction in inverted `FlatList` ([30e2d93b40](https://github.com/react/react-native/commit/30e2d93b405ef05b8e3daf47455607673ba9d440) by William Khoe) +- **ScrollView**: Fix Text letterSpacing and ScrollView scrollsChildToFocus, snapToAlignment, decelerationRate, nestedScrollEnabled and sendMomentumEvents with Props 2.0 ([973b31ba57](https://github.com/react/react-native/commit/973b31ba57b7d79207beea6a60503908a709ff9c) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Styles**: Preserve explicitly transparent colors during Props 2.0 reconciliation. ([022458fbb6](https://github.com/react/react-native/commit/022458fbb64f4303b7872e738134c021c62bc291) by [@ngocdevv](https://github.com/ngocdevv)) +- **Switch**: Fix `Switch` losing its outline, `boxShadow` and `thumbColor` ripple color when `backgroundColor` is set ([19d6d171f7](https://github.com/react/react-native/commit/19d6d171f778760b63340972e62fa56e1e93f657) by [@shubh73](https://github.com/shubh73)) +- **Text**: `aria-live` on `Text` now sets `accessibilityLiveRegion` ([9de6471df2](https://github.com/react/react-native/commit/9de6471df29c0e307540afc056cad4eefcd61277) by [@faciledictu](https://github.com/faciledictu)) +- **Text**: Fix `ellipsizeMode="clip"` being ignored on newly created `Text` ([8cd9b763e3](https://github.com/react/react-native/commit/8cd9b763e30cd24fc9eed6c6dcacbd3bb09b0a47) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Text**: Fix `fontVariant` being ignored on `Text` that doesn't also set `fontFamily`, `fontWeight` or `fontStyle` ([ababa4de06](https://github.com/react/react-native/commit/ababa4de060a40e44d65f368aad990c5d63f68a8) by Bora Shim) +- **Text**: Fix double text decorations rendering as a solid band when prepared text layout is enabled ([6f6fa0ad9f](https://github.com/react/react-native/commit/6f6fa0ad9faf06f369c430b4a1b934db9896fb8e) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Text**: Fix multi-paragraph RTL `Text` with blank or LTR lines being drawn off-screen on Android 15+ ([7b6516eb11](https://github.com/react/react-native/commit/7b6516eb110534ec0e898de8a98442bb6d10eb67) by [@fkgozali](https://github.com/fkgozali)) +- **Text**: Fix single-line LTR `Text` being ellipsized inside its measured width on Android 15+ ([12e066bfbb](https://github.com/react/react-native/commit/12e066bfbbfd3c12b279ed57ac5e22f6cbcee9ab) by generatedunixname1608173377072046) +- **Text**: Prevent RTL line-start glyph ink from clipping on Android 15 and later ([57f408012d](https://github.com/react/react-native/commit/57f408012d5f44ea2d14fe0172609a705973c209) by [@ngocdevv](https://github.com/ngocdevv)) +- **Text**: Respect maxFontSizeMultiplier for lineHeight and letterSpacing in Text ([c93ff90778](https://github.com/react/react-native/commit/c93ff907787cffc901abb537354b8af4e9e9a6c9) by [@sivefunc](https://github.com/sivefunc)) +- **Text**: The last line no longer disappears on Android 15+ when a font's glyphs overhang their advance (ReactTextView now breaks lines on advances, matching measurement) ([dcdb52bc80](https://github.com/react/react-native/commit/dcdb52bc80873c3d6697d930a28add09c542d073) by [@idoyana](https://github.com/idoyana)) +- **TextInput**: Fix `TextInput` outline collapsing when its padding is below the theme default ([da42db9c90](https://github.com/react/react-native/commit/da42db9c9075a09f5cab040bb0063ef05b8278c9) by [@mehulg-meta](https://github.com/mehulg-meta)) +- **TextInput**: Fix TextInput crash when an Enter key-up triggers native focus search ([04ccd832ab](https://github.com/react/react-native/commit/04ccd832abb34e7d4e19565311f6ee0e3f6089d7) by [@christophpurrer](https://github.com/christophpurrer)) +- **TextInput**: Prevent TextInput from preventing scroll gestures ([99fca5fcaf](https://github.com/react/react-native/commit/99fca5fcaf8cd5a951b03af1aa29a5224194f012) by [@jasozh](https://github.com/jasozh)) +- **TextInput**: Prevent TextInputs from interfering with nested scroll gestures ([7974af7d9f](https://github.com/react/react-native/commit/7974af7d9f0610cc0b5bf5cfb0922ef2d1a1605d) by [@jasozh](https://github.com/jasozh)) +- **TextInput**: Restore the text input class for URL keyboard types. ([0ca5cec66b](https://github.com/react/react-native/commit/0ca5cec66bbb0e2f7051d6e3cc40bef166453c0c) by [@dajiaohuang](https://github.com/dajiaohuang)) +- **TextInput**: Restore the text input class for visible-password keyboard types ([f99303c9f5](https://github.com/react/react-native/commit/f99303c9f5399706cebd1c93202086a633415061) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Touch Handling**: Fix Pressable and TouchableNativeFeedback losing their background color and ripple when using a borderless ripple ([ca3e76a7cd](https://github.com/react/react-native/commit/ca3e76a7cdb92b8bc4c080cde96b9bc09ac17012) by [@jasozh](https://github.com/jasozh)) +- **TypeScript**: Export the `SafeAreaInsets` type ([11f37bd6e7](https://github.com/react/react-native/commit/11f37bd6e784578d64b02361b133d20591f2aabe) by [@janicduplessis](https://github.com/janicduplessis)) +- **UIManager**: Avoid unnecessary getConstantsForViewManager calls during UIManager initialization. ([da7c29f6d7](https://github.com/react/react-native/commit/da7c29f6d747ab296c9f8f7d0066ae2aca741ef5) by [@fairysword](https://github.com/fairysword)) +- **View**: A `NaN` or infinite `elevation`, or deprecated `scaleX` or `scaleY`, no longer crashes the app on Android 9 and later ([d8789c6212](https://github.com/react/react-native/commit/d8789c6212d3c45bb0c6033320ecd022644809f0) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **View**: Avoid warning when clearing percentage border radii ([5e6b1081bc](https://github.com/react/react-native/commit/5e6b1081bc2e31379f4a8534c8759665c59aede8) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **View**: Clear the border path effect when borderStyle is removed on Android ([01145c9a7f](https://github.com/react/react-native/commit/01145c9a7f3387cd4af3322c62ed7a018c054dca) by [@lazerg](https://github.com/lazerg)) +- **View**: Correct safe-area inset measurements for scaled views and views clipped by ancestors. ([9641acdf30](https://github.com/react/react-native/commit/9641acdf30f2a92df010be9e9700aee30558aff7) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **View**: Drawing a view group no longer reads every sibling's mix-blend-mode for each child it draws ([089a101544](https://github.com/react/react-native/commit/089a1015443b614096945f5a14016aa86e5c7d10) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **View**: Fix `getOutlineWidth` returning the outline offset ([54b5f22c33](https://github.com/react/react-native/commit/54b5f22c33773a83de8fb6dc9a7091ba180842b4) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **View**: Fix bottom-start and bottom-end border radii resolving to the wrong corners in RTL when left/right style swapping is disabled. ([202d93931c](https://github.com/react/react-native/commit/202d93931ca8d2f326d02fa111178a511f5e800f) by [@ddx533534](https://github.com/ddx533534)) +- **View**: Fix View background, perspective, border width, shadow and gradient props with Props 2.0 ([0f03dd9a4c](https://github.com/react/react-native/commit/0f03dd9a4c187c6cf1617e6816b8a6806958fa7e) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **View**: Preserve safe-area updates for cancelling transforms and match iOS notification precision. ([95941fd368](https://github.com/react/react-native/commit/95941fd368bf1e83e8d10217eb474ec840bbf2d7) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **ViewManagers**: Fix `shadowColor`, `outlineOffset` and `outlineWidth` not resetting to their defaults on components with a codegen view manager delegate ([dfed2d925d](https://github.com/react/react-native/commit/dfed2d925d713cf8cab431cbb5851d53db4d4114) by [@shubh73](https://github.com/shubh73)) +- **ViewManagers**: Make the view manager prop setter caches thread-safe ([3b4abb3c7a](https://github.com/react/react-native/commit/3b4abb3c7a22f195028ca16f335fdbf216bd6f75) by [@brownrice777](https://github.com/brownrice777)) +- **VirtualView**: Fix VirtualView clipping on-screen content when its parent offset was not computed at attach time ([f9340f07dc](https://github.com/react/react-native/commit/f9340f07dcd13d6e9eb11d0d284eb11b030dc2be) by generatedunixname1608173377072046) +- **VirtualView**: Fix visible `VirtualView` children being clipped when an ancestor is positioned before attachment ([8c2ce771d8](https://github.com/react/react-native/commit/8c2ce771d87421b20d91934d73d60058f4c62b4b) by [@cortinico](https://github.com/cortinico)) + +#### iOS specific + +- **Accessibility**: `role="slider"` now gets the adjustable accessibility trait, like `accessibilityRole="adjustable"` ([05f99a7d25](https://github.com/react/react-native/commit/05f99a7d252cc908855e96aecbb1d40ae76c846a) by [@jeltehomminga](https://github.com/jeltehomminga)) +- **Accessibility**: Fix data race on accessibility content size multipliers in `RCTAccessibilityManager` ([ea2ca1b921](https://github.com/react/react-native/commit/ea2ca1b9211176bc482e33eef0118f1aefce2593) by [@christophpurrer](https://github.com/christophpurrer)) +- **Accessibility**: Prevent an accessibility module startup crash on early iOS 26.1 betas ([f9855add37](https://github.com/react/react-native/commit/f9855add37af5a427429e36d494ceb42742dfc57) by [@javache](https://github.com/javache)) +- **Accessibility**: VoiceOver announces "collapsed" for `aria-expanded={false}` on the new architecture ([1db1d893b2](https://github.com/react/react-native/commit/1db1d893b247b360ad78ad85262ba32232ea06e0) by [@lazerg](https://github.com/lazerg)) +- **CocoaPods**: `spm_dependency` embeds the dynamic frameworks of Swift packages in the app, and takes `embed_frameworks` for frameworks named differently from their product ([d7878263ca](https://github.com/react/react-native/commit/d7878263caadb347a7ddd02980bab189e18400ca) by [@mfazekas](https://github.com/mfazekas)) +- **CocoaPods**: Apply React Native's minimum iOS deployment target to CocoaPods resource bundles. ([d45fc2d289](https://github.com/react/react-native/commit/d45fc2d2895057cec5acbd857a2150d10b35a378) by [@Marve10s](https://github.com/Marve10s)) +- **CocoaPods**: Fix "module map file not found" for `spm_dependency` pods whose module name differs from the pod name ([87c3e8f5dc](https://github.com/react/react-native/commit/87c3e8f5dcbec41f1537d2af8efd700a5393173e) by [@mfazekas](https://github.com/mfazekas)) +- **CocoaPods**: Fix `'folly/coro/Coroutine.h' file not found` in libraries that set their own folly compiler flags ([52efed6437](https://github.com/react/react-native/commit/52efed6437f5caab5b2d511ee0ba95afb0962945) by [@cipolleschi](https://github.com/cipolleschi)) +- **CocoaPods**: Link `platform/ios` headers at `react/utils/…` in non-frameworks builds instead of a duplicated `react/utils/react/utils/…`, restoring `#include ` and `` ([024d5dafd5](https://github.com/react/react-native/commit/024d5dafd530412efe43c9c2f95c9da109f48092) by [@zhongwuzw](https://github.com/zhongwuzw)) +- **Codegen**: Skip third-party components whose class is not linked instead of crashing at launch ([acc0cca710](https://github.com/react/react-native/commit/acc0cca7108dfbdbb09cde571006b000915734f4) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Dev Menu**: Fix Cmd+D and other modifier key commands failing to open the Dev Menu when a view is the first responder ([d36f77d7e1](https://github.com/react/react-native/commit/d36f77d7e16068ae2ad2cd3db8eb83e1801aa6a0) by [@vzaidman](https://github.com/vzaidman)) +- **Dev Server**: Allow Metro reload after an initial bundle-load failure. ([df86c5e2a4](https://github.com/react/react-native/commit/df86c5e2a418769d940ee20b8f204004cb02022d) by [@janicduplessis](https://github.com/janicduplessis)) +- **Dev Server**: Clear the development loading banner when its React Native host is invalidated, including pending messages that could appear after teardown. ([62002039c0](https://github.com/react/react-native/commit/62002039c02f9e2b00702cc6759d834970d13f8f) by [@fairysword](https://github.com/fairysword)) +- **Dev Server**: Keep a `RCT_jsLocation` passed as a launch argument when the packager answers `/status` late, instead of switching to a guessed host ([1af1186b78](https://github.com/react/react-native/commit/1af1186b78b6e314b7a83e76bf53f8ad10c58f92) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **Hermes**: Fix Hermes Debug link failures after installing another pod following a Release build. ([8bfa9dd2ae](https://github.com/react/react-native/commit/8bfa9dd2aebdc253e784b7ac7f31f029e64545de) by [@fairysword](https://github.com/fairysword)) +- **Image**: Emit `Image`'s `onLoadStart` before `onLoad`/`onLoadEnd` when the image request has already completed ([5d84f62df1](https://github.com/react/react-native/commit/5d84f62df175cca5c78d1768a4519438e290bf1f) by [@SatyamBansal](https://github.com/SatyamBansal)) +- **Image**: Reuse prefetched images for subsequent sized image requests ([0e87de0fd9](https://github.com/react/react-native/commit/0e87de0fd94f7db414d4e740808870f87d500528) by [@CHANDRAMOHANnegi](https://github.com/CHANDRAMOHANnegi)) +- **Keyboard**: Report zero-height keyboard show notifications with no focused text field as `keyboardWillHide`/`keyboardDidHide` ([c99947ed4b](https://github.com/react/react-native/commit/c99947ed4bcc4189753e756e10e1a37d88496f21) by [@ybcd00](https://github.com/ybcd00)) +- **Modal**: Fix Modal staying onscreen when dismissed while presenting a child view controller ([f20f857241](https://github.com/react/react-native/commit/f20f857241df8ce7dba0c965f7f6748d20a48c6f) by [@lazerg](https://github.com/lazerg)) +- **Network Inspection**: Fix the `cancelled` parameter type of `RCTInspectorNetworkReporter`'s `reportRequestFailed:cancelled:` to match its declaration ([3e5a624d2d](https://github.com/react/react-native/commit/3e5a624d2dcaeea784d7607c7b9f66d1f7a741ab) by [@Saadnajmi](https://github.com/Saadnajmi)) +- **Networking**: Fix missing nullability annotations in networking headers. ([c7429b0e97](https://github.com/react/react-native/commit/c7429b0e97b400a88158f73d2250f8d5f16593cf) by [@mrousavy](https://github.com/mrousavy)) +- **PushNotificationIOS**: Fix remaining main-thread watchdog hang in PushNotificationIOS.setApplicationIconBadgeNumber ([79adf3498f](https://github.com/react/react-native/commit/79adf3498ff715b02114302042742f5324121076) by [@fkgozali](https://github.com/fkgozali)) +- **Renderer**: Process at most one synchronous event beat per Core Animation commit, so a mount performed during the display phase cannot re-enter it without bound ([c4b3894955](https://github.com/react/react-native/commit/c4b38949557863f178b75ee0047671f7ed533971) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **Runtime**: Fix deadlock in `RCTInstance` invalidation when a surface observer calls into JS ([88d296713c](https://github.com/react/react-native/commit/88d296713cae4838c46fbe85629c5de9dbe7cc94) by [@zeyap](https://github.com/zeyap)) +- **ScrollView**: Fix recycled RTL horizontal ScrollView starting at the end instead of the start ([51db0e4b3a](https://github.com/react/react-native/commit/51db0e4b3a7f5a831585ec721b2ec6bbe19770d4) by [@aljadan](https://github.com/aljadan)) +- **ScrollView**: Hide the misplaced iOS 26 scroll edge effects on inverted ScrollViews ([3b8f1f8225](https://github.com/react/react-native/commit/3b8f1f822532af57d3eb61983ffc788465b3f72d) by Calvin Liu) +- **SwiftPM**: Scaffolded `Package.swift` writes `resources:` before `publicHeadersPath:`, so libraries with podspec resources and public headers resolve ([d576b40bff](https://github.com/react/react-native/commit/d576b40bfff065a032359a254bd466fe0fd7b515) by [@chrfalch](https://github.com/chrfalch)) +- **SwiftPM**: SwiftPM autolinking: don't warn about spm fields mirrored in swiftpmConfig ([138c1a9a6e](https://github.com/react/react-native/commit/138c1a9a6e63f4af605ba54c1b6eb727cfdbaa7a) by [@chrfalch](https://github.com/chrfalch)) +- **Switch**: Fix crash in `Switch` when `onChange` fires after the view has been recycled ([7612536be3](https://github.com/react/react-native/commit/7612536be3b7e158fe806bed868fd41229c93958) by anvarbek) +- **Switch**: Report a disabled `Switch` as disabled to VoiceOver and XCUITest ([7bba6225af](https://github.com/react/react-native/commit/7bba6225af8af8a58722d7f7ea868c30ac8c93b6) by [@arun279](https://github.com/arun279)) +- **Text**: Fix `Text` containing only "I" being measured zero wide after an empty `Text` with the same style was measured ([4b0a6ebc67](https://github.com/react/react-native/commit/4b0a6ebc6784520fc47dbfb52022b4a365f27884) by [@parthematics](https://github.com/parthematics)) +- **Text**: Fix words jumping between lines while `LayoutAnimation` resizes a `Text` ([b97bd12bc4](https://github.com/react/react-native/commit/b97bd12bc4a8fe4ecb67f26570fffb386a86fe5f) by [@tomekzaw](https://github.com/tomekzaw)) +- **Text**: Natural text alignment follows the layout direction for LTR text, not the process language ([a340eec183](https://github.com/react/react-native/commit/a340eec183dd2fa208cd4c94718ffd5577682ccd) by [@qutrek](https://github.com/qutrek)) +- **Text**: Render selectable text when prepared text layout is enabled ([099915674f](https://github.com/react/react-native/commit/099915674f5187c4b18e08817e34eb37145b8faa) by [@abskmeta](https://github.com/abskmeta)) +- **Text**: Text no longer redraws when only its position changes, such as when content above it changes height ([631fd89f6a](https://github.com/react/react-native/commit/631fd89f6a2d55b0b93691b083f72fbd0f55ecce) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **Text**: Text no longer renders clipped when mounted from a synchronous event during layout ([7bee8abb69](https://github.com/react/react-native/commit/7bee8abb692f386411463540e5aaf932f2f69955) by [@janicduplessis](https://github.com/janicduplessis)) +- **TextInput**: Avoid a synchronous main-thread pasteboard query (and possible app hang) when a focused TextInput's keyboard becomes active on app foreground ([79c6c23061](https://github.com/react/react-native/commit/79c6c2306130adfa46c6711ce3aa3f6d43857df9) by generatedunixname1608173377072046) +- **TextInput**: Fix `TextInput` `dataDetectorTypes="all"` having no effect on the New Architecture ([0bd2cb1b42](https://github.com/react/react-native/commit/0bd2cb1b428fdc9b6a48e68569d666ff3b6c811c) by [@Cedric921](https://github.com/Cedric921)) +- **TextInput**: Fix `TextInput` placeholder drawn below centre after its view is reused from a `TextInput` with `lineHeight` ([8f5a1c0a8f](https://github.com/react/react-native/commit/8f5a1c0a8f0b7cd3dfba979df2119f9258b9b0ef) by [@jkasprzyk17](https://github.com/jkasprzyk17)) +- **TextInput**: Fix caret and text of a single-line `TextInput` drawn above center while focused, after its view was reused from a `TextInput` with a larger font ([e10d6ba3a6](https://github.com/react/react-native/commit/e10d6ba3a628a4cae97146b1b6872764f0d426e5) by [@jkasprzyk17](https://github.com/jkasprzyk17)) +- **TextInput**: Preserve TextInput returnKeyType when switching between single-line and multiline backing views. ([e0159c1f03](https://github.com/react/react-native/commit/e0159c1f038bae7cde86fb91aa4227e8bd561eed) by [@jamfromouterspace](https://github.com/jamfromouterspace)) +- **TextInput**: Preserve transformed `TextInput` edits without synchronously rewriting text inside UIKit delegate callbacks ([6f67e185ad](https://github.com/react/react-native/commit/6f67e185addf3a525be47b3aaca7b3398c81b2ee) by [@javache](https://github.com/javache)) +- **TextInput**: Reveal multi-line text inputs when using KeyboardAvoidingView with a ScrollView ([7ce27d0d07](https://github.com/react/react-native/commit/7ce27d0d07c44bdd77583525e09738806c6d3810) by [@jasozh](https://github.com/jasozh)) +- **TurboModules**: Stop apps from requesting the sample TurboModule that only rn-tester provides ([8f5355575a](https://github.com/react/react-native/commit/8f5355575a4642e4cefdbf64ce8aa64a6c1bd91a) by [@alanjhughes](https://github.com/alanjhughes)) +- **TurboModules**: Strings returned from native modules to JS convert faster, are no longer truncated at a `\0` character, and are no longer replaced with an empty string when they contain a lone surrogate ([4fac9c8f35](https://github.com/react/react-native/commit/4fac9c8f3547ac4b21f67295a34e4e7890d8525c) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **View**: `aria-modal` on `View` now sets `accessibilityViewIsModal` ([e3437cb8f0](https://github.com/react/react-native/commit/e3437cb8f076c1ea154b5602cee5778477f5f798) by [@faciledictu](https://github.com/faciledictu)) +- **View**: Apply `borderCurve` changes that are not accompanied by another border prop change ([c4356db573](https://github.com/react/react-native/commit/c4356db5734e52d55b318db09ff12b5cf23eb418) by [@tshmieldev](https://github.com/tshmieldev)) +- **View**: Opacity changes no longer rebuild a View's borders, shadows and background layers, which made opacity animations over many styled Views drop frames ([51d3e67af8](https://github.com/react/react-native/commit/51d3e67af8a055e30b874696fd290389d34ca537) by [@hryhoriiK97](https://github.com/hryhoriiK97)) +- **View**: Prevent unsuccessful tvOS focus requests from emitting stale focus events ([3e897cfdf8](https://github.com/react/react-native/commit/3e897cfdf8ac173b78bd9a6b0a3597f03191dfc4) by [@sbuggay](https://github.com/sbuggay)) +- **View**: RemoveClippedSubviews is kept on recycled views ([ff78e95e59](https://github.com/react/react-native/commit/ff78e95e59b9f572f4b5108de88d044437d7be15) by [@mozzius](https://github.com/mozzius)) +- **View**: Render a view untransformed when its transform is not finite, instead of hiding it and the siblings drawn before it ([a613baf9d1](https://github.com/react/react-native/commit/a613baf9d123399f367f877972eac3ae83e94d01) by [@YevheniiKotyrlo](https://github.com/YevheniiKotyrlo)) +- **View**: Views no longer rebuild their layer styling (borders, shadows, background and mask layers) when only their position changes ([c9d84b06d8](https://github.com/react/react-native/commit/c9d84b06d8f4fd8f6f005431935911e0b1525c1b) by [@hryhoriiK97](https://github.com/hryhoriiK97)) + ## v0.88.1 ### Added