How to migrate to Xcode 12.5 How to migrate to Xcode 12.5 reactjs reactjs

How to migrate to Xcode 12.5


I fixed this by changing a parameter cast in the React module RCTCxxBridge.mm like so:

- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules                               withDispatchGroup:(dispatch_group_t)dispatchGroup                                lazilyDiscovered:(BOOL)lazilyDiscovered

To:

- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<Class> *)modules                               withDispatchGroup:(dispatch_group_t)dispatchGroup                                lazilyDiscovered:(BOOL)lazilyDiscovered

I am running 0.59 and not using CocoaPods, but the basic fix is that casts of the form:

NSArray<id<RCTBridgeModule>> *)modules

Should be replaced with:

NSArray<Class> *)modules


This one worked for me.

  1. Open RCTCxxBridge.mm (line 770) and change parameter type from: (NSArray<id<RCTBridgeModule>> *)modules to (NSArray<Class> *)modules
  2. Open RCTTurboModuleManager.mm (line 300) and change from:RCTBridgeModuleNameForClass(module)) to RCTBridgeModuleNameForClass(Class(module)));


This one worked for me. Update the PODFILE with:

post_install do |installer|    ## Fix for XCode 12.5 beta    find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm",    "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")end

And at the end of podfile add a function:

def 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

The last step if to run:

pod install