software-mansion / react-native-screens

Native navigation primitives for your React Native app.
MIT License
3.01k stars 510 forks source link

[RN 0.75 new arch] 'utils/RectUtil.h' file not found #2306

Closed jankosecki closed 2 weeks ago

jankosecki commented 4 weeks ago

Description

Hi team,

I've been testing upgrading RN 0.74 to 0.75-RC7 with basic stack including react-navigation and react-native-screens. The iOS build fails for me with the following error:

In file included from /Users/jkosecki/repos/custom/ReactNativeUpgradeTester/node_modules/react-native-screens/ios/RNSScreen.mm:15:
/Users/jkosecki/repos/custom/ReactNativeUpgradeTester/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h:10:10: fatal error: 'utils/RectUtil.h' file not found
#include "utils/RectUtil.h"

I have applied the following patch locally (included in the reproduction repo):

diff --git a/node_modules/react-native-screens/RNScreens.podspec b/node_modules/react-native-screens/RNScreens.podspec
index be7cc24..14cd2e4 100644
--- a/node_modules/react-native-screens/RNScreens.podspec
+++ b/node_modules/react-native-screens/RNScreens.podspec
@@ -27,7 +27,7 @@ Pod::Spec.new do |s|
     s.subspec "common" do |ss|
       ss.source_files         = ["common/cpp/**/*.{cpp,h}", "cpp/**/*.{cpp,h}"]
       ss.header_dir           = "rnscreens"
-      ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp\"" }
+      ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp/react/renderer/components/\"" }
     end
   end

but I'm not sure if that's correct way to fix this issue.

Steps to reproduce

  1. Remove patches/react-native-screens+3.34.0.patch
  2. Run yarn setup && yarn ios

Snack or a link to a repository

https://github.com/jankosecki/react-native-upgrade-tester/tree/rn-0.75

Screens version

3.34.0

React Native version

0.75-RC7

Platforms

iOS

JavaScript runtime

Hermes

Workflow

React Native (without Expo)

Architecture

Fabric (New Architecture)

Build type

Debug mode

Device

None

Device model

No response

Acknowledgements

Yes

necmettindev commented 3 weeks ago

same issue

nthtrung09it commented 3 weeks ago

same issue

rayson-intrack commented 3 weeks ago

same issue

tboba commented 3 weeks ago

Hey, thanks for posting this issue! Unfortunately, I can't reproduce this bug with the reproducer you provided. After removing patch I'm not receiving any error during the pod install phase, nor the compile phase. Is this reproducer correct? I can't find any line for enabling new architecture in this repro 🤔

0xDing commented 3 weeks ago

same issue +1

tboba commented 3 weeks ago

@necmettindev @nthtrung09it @rayson-intrack @0xDing could you provide a reproducer that reproduces this issue? As I said above, I didn't manage to deduce any bug from provided RN project (even after removing the patch).

jankosecki commented 3 weeks ago

@tboba I can reproduce the issues using provided repo. I did the following steps:

  1. Delete patches/react-native-screens+3.34.0.patch
  2. Clean up node_modules in case patch already applied
  3. Run yarn setup (it invokes "pod-install": "(cd ./ios ; RCT_NEW_ARCH_ENABLED=1 USE_FRAMEWORKS=static bundle exec pod install --repo-update)" which enables new architecture)
  4. Open XCode to set up development team (provided repro contains None team in Signing & Capabilities)
  5. Run yarn start
  6. Run yarn ios or trigger build from XCode (yarn ios causes a massive error output with different "error" lines but XCode offers a clear reason: image
matinzd commented 3 weeks ago

This is also happening in 0.75.2. Seems like there is something wrong with the pod installation in 75.

I tried this patch but it didn't work. (Fixed the issue but other errors started to come up)

diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h
index 37aac4e..5fb5505 100644
--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h
+++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h
@@ -6,8 +6,8 @@
 #include <react/debug/react_native_assert.h>
 #include <react/renderer/components/rnscreens/Props.h>
 #include <react/renderer/core/ConcreteComponentDescriptor.h>
+#include <react/renderer/components/rnscreens/utils/RectUtil.h>
 #include "RNSScreenShadowNode.h"
-#include "utils/RectUtil.h"

 namespace facebook {
 namespace react {

With that being said, there is something wrong with the headers linking.

New arch is turned on.

FurySwordXD commented 3 weeks ago

Can reproduce on RN 0.75.2. Using this patch seems to fix it.

This is also happening in 0.75.2. Seems like there is something wrong with the pod installation in 75.

I tried this patch but it didn't work. (Fixed the issue but other errors started to come up)

diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h
index 37aac4e..5fb5505 100644
--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h
+++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h
@@ -6,8 +6,8 @@
 #include <react/debug/react_native_assert.h>
 #include <react/renderer/components/rnscreens/Props.h>
 #include <react/renderer/core/ConcreteComponentDescriptor.h>
+#include <react/renderer/components/rnscreens/utils/RectUtil.h>
 #include "RNSScreenShadowNode.h"
-#include "utils/RectUtil.h"

 namespace facebook {
 namespace react {

With that being said, there is something wrong with the headers linking.

New arch is turned on.

@matinzd Could you highlight what are the other errors that were introduced, I don't use this library directly but through "react-navigation" and I don't face any other issues/errors.

WoLewicki commented 2 weeks ago

#include <react/renderer/components/rnscreens/utils/RectUtil.h> instead of #include "utils/RectUtil.h" seems to work in my setups.

cjones26 commented 2 weeks ago

Same issue +1

TowhidKashem commented 2 weeks ago

same issue +1

tboba commented 2 weeks ago

@matinzd this patch sounds better. Thanks!

matinzd commented 2 weeks ago

Should I open a PR for that? Is that gonna break paper builds?

tboba commented 2 weeks ago

@matinzd Nope, it shouldn't. C++ layer is being built only on new architecture, so the old arch should work well 👍