diff --git a/packages/react-native/React/CxxModule/RCTCxxMethod.mm b/packages/react-native/React/CxxModule/RCTCxxMethod.mm index 4fc4a2abbc3..ff67a470327 100644 --- a/packages/react-native/React/CxxModule/RCTCxxMethod.mm +++ b/packages/react-native/React/CxxModule/RCTCxxMethod.mm @@ -98,14 +98,22 @@ using namespace facebook::react; NSNumber *id2 = arguments[arguments.count - 1]; second = ^(std::vector args) { - [bridge enqueueCallback:id2 args:convertFollyDynamicToId(folly::dynamic(args.begin(), args.end()))]; + folly::dynamic obj = folly::dynamic::array; + for (auto &arg : args) { + obj.push_back(std::move(arg)); + } + [bridge enqueueCallback:id2 args:convertFollyDynamicToId(std::move(obj))]; }; } else { id1 = arguments[arguments.count - 1]; } first = ^(std::vector args) { - [bridge enqueueCallback:id1 args:convertFollyDynamicToId(folly::dynamic(args.begin(), args.end()))]; + folly::dynamic obj = folly::dynamic::array; + for (auto &arg : args) { + obj.push_back(std::move(arg)); + } + [bridge enqueueCallback:id1 args:convertFollyDynamicToId(std::move(obj))]; }; } diff --git a/packages/react-native/ReactCommon/cxxreact/CxxNativeModule.cpp b/packages/react-native/ReactCommon/cxxreact/CxxNativeModule.cpp index e62ec1a79f4..ad0ba710f95 100644 --- a/packages/react-native/ReactCommon/cxxreact/CxxNativeModule.cpp +++ b/packages/react-native/ReactCommon/cxxreact/CxxNativeModule.cpp @@ -47,9 +47,12 @@ namespace { CxxModule::Callback convertCallback( std::function callback) { return [callback = std::move(callback)](std::vector args) { - callback(folly::dynamic( - std::make_move_iterator(args.begin()), - std::make_move_iterator(args.end()))); + // after unpinning folly, can use folly::dynamic::array_range + folly::dynamic obj = folly::dynamic::array; + for (auto& arg : args) { + obj.push_back(std::move(arg)); + } + callback(std::move(obj)); }; }