wix / react-native-navigation

A complete native navigation solution for React Native
https://wix.github.io/react-native-navigation/
MIT License
13.05k stars 2.67k forks source link

ReactTextShadowNode.UNSET is not available on RN 0.74.1 #7881

Open manakuro opened 6 months ago

manakuro commented 6 months ago

What happened?

The build failed on Android because of not resolving the symbol ReactTextShadowNode.UNSET on RN 0.74.1 anymore.

        || ((oldStyle & Typeface.BOLD) != 0 && weight == ReactTextShadowNode.UNSET)) {
                                                                            ^
  symbol:   variable UNSET
  location: class ReactTextShadowNode

https://github.com/wix/react-native-navigation/blob/dde5643bba30a32f9c38b9910da2cbc05355342a/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java#L99

Since the code was refactored in this PR on 0.74.1, instead of using the ReactTextShadowNode.UNSET, we need to switch it to the ReactConstants.UNSET.

What was the expected behaviour?

The build succeeded.

Was it tested on latest react-native-navigation?

Help us reproduce this issue!

Build on RN 0.74.1.

In what environment did this happen?

React Native Navigation version: 7.39.2 React Native version: 0.74.1 Has Fabric (React Native's new rendering system) enabled: no Node version: 20.12.2 Device model: Android version: 14

Pobx commented 5 months ago

I have a same problem with you.

bisak commented 5 months ago

Yup, same.

ygundewar commented 5 months ago

Same issue on Android. In iOS navigation is working fine.

SpiZeak commented 5 months ago

I'm dealing with this aswell, anyone got a temp fix?

ertugruldogan commented 5 months ago

Workaround RN: 0.74.2 RNN: 7.40.0

node_modules\react-native-navigation\lib\android\app\src\main\java\com\reactnativenavigation\utils\ReactTypefaceUtils.java

if ((weight == Typeface.BOLD) || ((oldStyle & Typeface.BOLD) != 0 && weight == ReactTextShadowNode.UNSET)) { replace if ((weight == Typeface.BOLD) || ((oldStyle & Typeface.BOLD) != 0)) {


if ((style == Typeface.ITALIC) || ((oldStyle & Typeface.ITALIC) != 0 && style == ReactTextShadowNode.UNSET)) { replace if ((style == Typeface.ITALIC) || ((oldStyle & Typeface.ITALIC) != 0)) {

manakuro commented 5 months ago

The workaround could be to change the ReactTextShadowNode.UNSET to the ReactConstants.UNSET and apply the patch.

diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java b/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java
index 834d734f154a9e25cbf53a8ae20de6b9f7e215b7..fe0336d17e8ea689a7ae3cab06554b7da76f5a1b 100644
--- a/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java
+++ b/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java
@@ -18,8 +18,8 @@ import android.graphics.Typeface;
 import android.text.TextUtils;
 import androidx.annotation.Nullable;
 import com.facebook.react.bridge.ReadableArray;
+import com.facebook.react.common.ReactConstants;
 import com.facebook.react.views.text.ReactFontManager;
-import com.facebook.react.views.text.ReactTextShadowNode;
 import java.util.ArrayList;
 import java.util.List;

@@ -96,12 +96,12 @@ public class ReactTypefaceUtils {

     int want = 0;
     if ((weight == Typeface.BOLD)
-        || ((oldStyle & Typeface.BOLD) != 0 && weight == ReactTextShadowNode.UNSET)) {
+        || ((oldStyle & Typeface.BOLD) != 0 && weight == ReactConstants.UNSET)) {
       want |= Typeface.BOLD;
     }

     if ((style == Typeface.ITALIC)
-        || ((oldStyle & Typeface.ITALIC) != 0 && style == ReactTextShadowNode.UNSET)) {
+        || ((oldStyle & Typeface.ITALIC) != 0 && style == ReactConstants.UNSET)) {
       want |= Typeface.ITALIC;
     }
diolegend commented 5 months ago

Any solution?

simonecorsato commented 4 months ago

The merge request https://github.com/wix/react-native-navigation/pull/7886 is still in draft status

nicolaosm commented 4 months ago

Still looking forward for this fix to be merged. Thanks

ygundewar commented 4 months ago

I have resolved this issue by changing navigation library. Used @react-navigation/native-stack for navigation. Change your navigation library & then try it will work.

sayurimizuguchi commented 4 months ago

The merge request #7886 is still in draft status

I am just waiting for them to remove the CI exception to run and be able to check if everything is all right or if any other changes are needed. I recommend using patch-package for now, while we do not have a version, in the case where it is not so easy to switch a navigation library of your app mainly if you have lots of functionality to use from it.

fxricky commented 3 months ago

pending for this fix too

brifiction commented 3 months ago

Thanks a bunch @manakuro, for https://github.com/wix/react-native-navigation/issues/7881#issuecomment-2164213896 solution! ❤️

Also waiting on this patch (see https://github.com/wix/react-native-navigation/issues/7821#issuecomment-2276987954) 🙏 .

These issues are halting dev progression for react-native = 0.73.x (and above, including 0.74.5).