React Native React-RCTFabric compile issue

42 Views Asked by At

I added React Native 0.73.6 to the project, adjusted podfile, did Codegen and project compiled successfully. But after I added some other dependencies to the package.json file and did same steps - project failed to compile. From what I understood, it is related to react-native-safe-area-context and react-native-screens dependencies. I use latest versions of all dependencies.

I tried to create a new RN project but on clear project I have the same compile issue.

React-RCTFabric compile issue ld: Undefined symbols: _RNCSafeAreaProviderCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNCSafeAreaViewCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNCViewPagerCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNGestureHandlerButtonCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNGestureHandlerRootViewCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSFullWindowOverlayCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSScreenCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSScreenContainerCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSScreenNavigationContainerCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSScreenStackCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSScreenStackHeaderConfigCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSScreenStackHeaderSubviewCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o _RNSSearchBarCls, referenced from: _RCTThirdPartyFabricComponentsProvider in RCTThirdPartyFabricComponentsProvider.o clang: error: linker command failed with exit code 1 (use -v to see invocation)

My package.json dependencies:

"dependencies": { "@babel/core": "^7.24.0", "@babel/preset-env": "^7.24.0", "@react-native/metro-config": "^0.75.0-main", "@react-navigation/bottom-tabs": "^6.5.20", "@react-navigation/core": "^6.4.16", "@react-navigation/drawer": "^6.6.15", "@react-navigation/elements": "^1.3.30", "@react-navigation/material-bottom-tabs": "^6.2.28", "@react-navigation/material-top-tabs": "^6.6.13", "@react-navigation/native": "^6.1.17", "@react-navigation/native-stack": "^6.9.26", "@react-navigation/routers": "^6.1.9", "@react-navigation/stack": "^6.3.29", "@types/react": "^18.2.67", "react": "^18.2.0", "react-native": "^0.73.6", "react-native-gesture-handler": "^2.15.0", "react-native-pager-view": "^6.2.3", "react-native-paper": "^5.12.3", "react-native-reanimated": "^3.8.1", "react-native-safe-area-context": "^4.9.0", "react-native-screens": "^3.29.0", "react-native-tab-view": "^3.5.2", "react-native-vector-icons": "^10.0.3", "typescript": "^5.4.2" }

My podfile:

require Pod::Executable.execute_command('node', ['-p',
  'require.resolve(
    "react-native/scripts/react_native_pods.rb",
    {paths: [process.argv[1]]},
  )', __dir__]).strip

platform :ios, min_ios_version_supported
prepare_react_native_project!

use_frameworks!

def __apply_Xcode_14_3_RC_post_install_workaround(installer)
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      current_target = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
      minimum_target = min_ios_version_supported
      if current_target.to_f < minimum_target.to_f
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = minimum_target
      end
    end
  end
end

def __apply_Xcode_12_5_M1_post_install_workaround(installer)
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
      end
  end

  sed -i -e  $'s/__IPHONE_10_0/__IPHONE_12_0/' Pods/RCT-Folly/folly/portability/Time.h
end

def pods
#my pods
end

 config = use_native_modules!
 use_react_native!(
    :path => config[:reactNativePath],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

target 'MyApp' do
    pods
end
  pre_install do |installer|
    installer.pod_targets.each do |pod|
      if ['RNScreens', 'RNReanimated'].include? pod.name
        def pod.build_type
          Pod::BuildType.static_library
        end
      end
    end
  end
    
post_install do |installer|
 react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      # :ccache_enabled => true
    )
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
    __apply_Xcode_14_3_RC_post_install_workaround(installer)
        target.build_configurations.each do |config|
            config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
            config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
        end
    end
end

I tried to add everything as static libraries(use_framework with static linkage) but this didn't help

Steps to reproduce

  1. Install packages via yarn install
  2. cd iod && pod install
  3. cd .. && node node_modules/react-native/scripts/generate-codegen-artifacts.js --path ./ --outputPath iOS/
  4. open Xcode project and try to compile

React Native Version

0.73.6

Affected Platforms

Build - MacOS

Output of npx react-native info

System: OS: macOS 14.2.1 CPU: (10) x64 Apple M1 Pro Memory: 29.82 MB / 16.00 GB Shell: version: 3.2.57 path: /bin/bash Binaries: Node: version: 20.11.1 path: /usr/local/bin/node Yarn: version: 1.22.21 path: /usr/local/bin/yarn npm: version: 10.5.0 path: /usr/local/bin/npm Watchman: Not Found Managers: CocoaPods: version: 1.15.2 path: /usr/local/bin/pod SDKs: iOS SDK: Platforms: - DriverKit 23.2 - iOS 17.2 - macOS 14.2 - tvOS 17.2 - visionOS 1.0 - watchOS 10.2 Android SDK: Not Found IDEs: Android Studio: 2022.3 AI-223.8836.35.2231.10671973 Xcode: version: 15.2/15C500b path: /usr/bin/xcodebuild Languages: Java: Not Found Ruby: version: 2.6.10 path: /usr/bin/ruby npmPackages: "@react-native-community/cli": Not Found react: installed: 18.2.0 wanted: ^18.2.0 react-native: installed: 0.73.6 wanted: ^0.73.6 react-native-macos: Not Found npmGlobalPackages: "*react-native*": Not Found Android: hermesEnabled: Not found newArchEnabled: Not found iOS: hermesEnabled: true newArchEnabled: false

Repo with issue repro https://github.com/LevRozhkov/react-fabric-issue-repro

I tried to create a new RN project, expected it to compile successfully with same dependencies but on clear project I have the same compile issue.

0

There are 0 best solutions below