React Native / iOS SDK. No matching function for call to 'RCTBridgeModuleNameForClass' after update iOS SDK to 14.5 React Native / iOS SDK. No matching function for call to 'RCTBridgeModuleNameForClass' after update iOS SDK to 14.5 ios ios

React Native / iOS SDK. No matching function for call to 'RCTBridgeModuleNameForClass' after update iOS SDK to 14.5


Put this code at the bottom of your ios/Podfile

post_install do |installer|  ## Fix for XCode 12.5      find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm",      "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")      find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm",      "RCTBridgeModuleNameForClass(module))", "RCTBridgeModuleNameForClass(Class(module)))")  enddef find_and_replace(dir, findstr, replacestr)  Dir[dir].each do |name|      text = File.read(name)      replace = text.gsub(findstr,replacestr)      if text != replace          puts "Fix: " + name          File.open(name, "w") { |file| file.puts replace }          STDOUT.flush      end  end  Dir[dir + '*/'].each(&method(:find_and_replace))end

save it, do a pod install on terminal and try to run/build your project again!


My post_install function had to be slightly different (using strongModule instead of module in the second replace):

  post_install do |installer|    ## Fix for XCode 12.5    find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm",    "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")    find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm",    "RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))")  end


I put together all the proposed solutions and got a working version.

Podfile

post_install do |installer|    ## Fix for XCode 12.5    find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm", "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")    find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm", "RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))")  enddef find_and_replace(dir, findstr, replacestr)  Dir[dir].each do |name|      text = File.read(name)      replace = text.gsub(findstr,replacestr)      if text != replace          puts "Fix: " + name          File.open(name, "w") { |file| file.puts replace }          STDOUT.flush      end  end  Dir[dir + '*/'].each(&method(:find_and_replace))end

After that I got a new error which is related to Flipper:

Flipper-Folly/folly/synchronization/DistributedMutex-inl.h:1051:5: 'atomic_notify_one<unsigned long>' is unavailable

I used the solution from Xcode throws 'atomic_notify_one' is unavailable to fix this problem.

# Enables Flipper.## Note that if you have use_frameworks! enabled, Flipper will not work and# you should disable the next line.# use_flipper!()

And commented out the line # flipper_post_install(installer) inside post_install do |installer|

Last, re-install your pods, rebuil and run your project.