From 0f26970da4abb1de246d723d69aa2d6349b537b5 Mon Sep 17 00:00:00 2001 From: KJ21-ENG Date: Tue, 7 Jul 2026 02:50:03 +0530 Subject: [PATCH] Remove iOSCoreAnimationBorderRendering RN patch causing HybridApp iOS AppHang (APP-8K6) The patch wrapped every Fabric mount in RCTMountingManager.mm in an explicit [CATransaction begin]/setDisableActions/[CATransaction commit] block. When no implicit CATransaction was already open, its commit flushed the layer tree to the render server synchronously on the main thread (CA::Layer::collect_animations_), which on the large HybridApp combined UIKit+Fabric tree could exceed the 2s AppHang threshold (Sentry APP-8K6). The border/background-stretching issue this patch worked around (#40243, from facebook/react-native#42604) was fixed upstream in RN 0.73.6 (d9794916b, RN #42922) and is already present in RN 0.83.1, so the workaround is no longer needed. Removes the patch and its details.md entry. --- patches/react-native/details.md | 7 ------ ...+008+iOSCoreAnimationBorderRendering.patch | 23 ------------------- 2 files changed, 30 deletions(-) delete mode 100644 patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 6bcf85cc1c8a..e24d57d680b3 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -51,13 +51,6 @@ - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch](react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch) - -- Reason: Fixes border rendering issues with Core Animation on iOS -- Upstream PR/issue: 🛑 -- E/App issue: 🛑 -- PR Introducing Patch: 🛑 - ### [react-native+0.83.1+009+copyStateOnClone.patch](react-native+0.83.1+009+copyStateOnClone.patch) - Reason: Ensures state is properly copied when cloning components diff --git a/patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch b/patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch deleted file mode 100644 index 478e282e387d..000000000000 --- a/patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm b/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm -index b4cfb3d..fdfae56 100644 ---- a/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm -+++ b/node_modules/react-native/React/Fabric/Mounting/RCTMountingManager.mm -@@ -265,6 +265,9 @@ static void RCTPerformMountInstructions( - - auto surfaceId = mountingCoordinator.getSurfaceId(); - -+ [CATransaction begin]; -+ [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; -+ - mountingCoordinator.getTelemetryController().pullTransaction( - [&](const MountingTransaction &transaction, const SurfaceTelemetry &surfaceTelemetry) { - [self.delegate mountingManager:self willMountComponentsWithRootTag:surfaceId]; -@@ -278,6 +281,8 @@ static void RCTPerformMountInstructions( - _observerCoordinator.notifyObserversMountingTransactionDidMount(transaction, surfaceTelemetry); - [self.delegate mountingManager:self didMountComponentsWithRootTag:surfaceId]; - }); -+ -+ [CATransaction commit]; - } - - - (void)setIsJSResponder:(BOOL)isJSResponder