diff --git a/React/CxxBridge/RCTMessageThread.mm b/React/CxxBridge/RCTMessageThread.mm index f1d5bee23a1a8d..a510b9942e0022 100644 --- a/React/CxxBridge/RCTMessageThread.mm +++ b/React/CxxBridge/RCTMessageThread.mm @@ -36,7 +36,12 @@ // This is analogous to dispatch_async void RCTMessageThread::runAsync(std::function func) { - CFRunLoopPerformBlock(m_cfRunLoop, kCFRunLoopCommonModes, ^{ func(); }); + CFRunLoopPerformBlock(m_cfRunLoop, kCFRunLoopCommonModes, ^{ + // Create an autorelease pool each run loop to prevent memory footprint from growing too large, which can lead to performance problems. + @autoreleasepool { + func(); + } + }); CFRunLoopWakeUp(m_cfRunLoop); }