Skip to content

New Architecture - Builds fail when Podfile uses static linking #8026

Open
@kevin-madden-gf

Description

@kevin-madden-gf

What happened?

When using static frameworks in the Podfile:

Use static frameworks

use_frameworks! :linkage => :static

Build fail with an error in RNNButtonView (RCTHost.h file not found) - see the image from Xcode below:

Image

Static linking is required for some packages, e.g. react-native-firebase.

This seems to have something to do with the builds that support new architecture. Build 8.0.0 with new architecture disabled builds fine.

What was the expected behaviour?

The build completes without issue.

Was it tested on latest react-native-navigation?

  • I have tested this issue on the latest react-native-navigation release and it still reproduces.

Help us reproduce this issue!

Try using a Podfile like the one below, on 8.1.0 RC1, to replicate

$RNFirebaseAsStaticFramework = true
# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
  'require.resolve(
    "react-native/scripts/react_native_pods.rb",
    {paths: [process.argv[1]]},
  )', __dir__]).strip

platform :ios, '15.1'
prepare_react_native_project!

# Use static frameworks
use_frameworks! :linkage => :static

config = use_native_modules!

linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
  use_frameworks! :linkage => linkage.to_sym
end

target 'AwesomeProject' do
  ENV['RCT_NEW_ARCH_ENABLED'] = '1'

  use_react_native!(
    :path => config[:reactNativePath],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
    :hermes_enabled => true
  )
  
    pod 'Firebase', :modular_headers => true
    pod 'FirebaseCore', :modular_headers => true
    pod 'FirebaseCoreInternal', :modular_headers => true
    pod 'GoogleUtilities', :modular_headers => true

  target 'AwesomeProjectTests' do
    inherit! :complete
    # Pods for testing
  end

  post_install do |installer|
    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      # :ccache_enabled => true
    )
  end
end

In what environment did this happen?

React Native Navigation version: 8.1.0 RC1
React Native version: 0.76.9
Has Fabric (React Native's new rendering system) enabled: (yes/no) yes
Node version: 22
Device model: iPhone 11
iOS version: 18.1

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions