software-mansion / react-native-reanimated

React Native's Animated library reimplemented
https://docs.swmansion.com/react-native-reanimated/
MIT License
8.61k stars 1.27k forks source link

【Bug】Modal displays incorrectly if use reanimated #6035

Open rabbitmouse opened 1 month ago

rabbitmouse commented 1 month ago

Description

Our project uses the new ReactNative architecture. In the release environment, when the page contains both reanimted and modal, the modal display will be abnormal, and the sub-nodes in the modal will be displayed in the upper left corner.

https://github.com/software-mansion/react-native-reanimated/assets/11554140/98f0bbe2-da08-4b1a-829a-527a88daf089

931cef0ee839e509eacbe8a5bf956a6d

Steps to reproduce

  1. cd ModalBugDemo
  2. npm install
  3. npm run prebuild
  4. expo start --clear
  5. open xcode and running as release
  6. First click the Show Modal button, then the modal will be displayed correctly.
  7. Click the animation switch button
  8. Then click the Show Modal button again and the modal will be displayed in the upper left corner

Snack or a link to a repository

https://github.com/rabbitmouse/ModalBugDemo

Reanimated version

3.11.0

React Native version

0.73.6

Platforms

Android, iOS

JavaScript runtime

Hermes

Workflow

React Native

Architecture

Fabric (New Architecture)

Build type

Release app & production bundle

Device

Real device

Device model

iphone12, Galaxy S22

Acknowledgements

Yes

D2cGen commented 1 month ago

same problem, Fatal defect,please fix this as soon as possible

szydlovsky commented 1 month ago

@rabbitmouse Hello, I ran your repro and it worked perfectly for me. Definitely one thing I can suggest you is to run: npx expo start --clear instead of expo start... But other than that, I ran the exact same repo and didn't see any of the issues.

https://github.com/software-mansion/react-native-reanimated/assets/77503811/6d6912bc-13f1-4cc3-bcfd-a81938971f01

rabbitmouse commented 1 month ago

@rabbitmouse Hello, I ran your repro and it worked perfectly for me. Definitely one thing I can suggest you is to run: npx expo start --clear instead of expo start... But other than that, I ran the exact same repo and didn't see any of the issues.

Screen.Recording.2024-05-21.at.15.13.24.mov

@szydlovsky hi, I think you are running in debug mode. This bug will only exist in release mode. Please try to run the release environment

iOS: Please modify the running mode in xcode scheme

image

Android: Please refer to the steps below and install apk into your device

cd ModalBugDemo/ npm i npm run prebuild npm run release_android adb install -r 'android/app/build/outputs/apk/release/app-release.apk'

szydlovsky commented 1 month ago

hey @rabbitmouse, I have created a yarn-based repo using exact same versions (RN 0.73.6, REA 3.6.2, release mode) - and the bug isn't there. Same happens when I use your repro code in the Reanimated Example app - there are no bugs whatsoever. Please take a look at the repo: https://github.com/szydlovsky/modalrepro, there has to be something wrong with your setup then.

(With yarn you have to run: yarn && cd ios && bundle install && bundle exec pod install and then run the project from Xcode)

rabbitmouse commented 1 month ago

hey @rabbitmouse, I have created a yarn-based repo using exact same versions (RN 0.73.6, REA 3.6.2, release mode) - and the bug isn't there. Same happens when I use your repro code in the Reanimated Example app - there are no bugs whatsoever. Please take a look at the repo: https://github.com/szydlovsky/modalrepro, there has to be something wrong with your setup then.

(With yarn you have to run: yarn && cd ios && bundle install && bundle exec pod install and then run the project from Xcode)

Thank you for your reply! @szydlovsky
I noticed that the new react-native architecture was not enabled in your demo.

Modal is normal in the old architecture, but problems will occur in the release environment of the new architecture. Please modify app.json to enable the new architecture.

like this code below

"plugins": [
      "expo-router",
      [
        "expo-build-properties",
        {
          "ios": {
            "newArchEnabled": true,
            "flipper": true
          },
          "android": {
            "newArchEnabled": true
          }
        }
      ],
    ],
rabbitmouse commented 1 month ago

This bug will only appear when the new architecture + release mode.

image

and i use expo to create the demo.

  1. npx create-expo-app StickerSmash --template blank
  2. expo eject
  3. modify app.json and open a new architecture
  4. npm install
  5. Build release mode app

Please refer to my process and try again, thank you very much! 😭 @szydlovsky

ThienMD commented 1 month ago

Same issue