nandorojo / moti

🐼 The React Native (+ Web) animation library, powered by Reanimated 3.
https://moti.fyi
MIT License
3.9k stars 120 forks source link

☂️ Identify Performance Issues #336

Open nandorojo opened 4 months ago

nandorojo commented 4 months ago

Is there an existing issue for this?

Do you want this issue prioritized?

Current Behavior

Let's find if there are any performance problems that have been identified in #322 (and somewhere else for skeletons.)

I think there may have been a regression with Moti related to reanimated 3 causing issues for MotiPressable and Skeleton. It's possible it's a simple fix. I'd also like to compare Animated.View with MotiView directly to identify potential causes.

From what I've heard, the issue lies somewhere in useMotify. It is likely worklet related (I think).

I welcome any feedback and support on how to identify performance issues. Thank you!

Expected Behavior

It should be as fast as Reanimated raw.

Steps To Reproduce

No response

Versions

- Moti: Latest

Screenshots

No response

Reproduction

N/A

fuelkoy commented 1 month ago

After updating from Expo SDK 50 to SDK 51 (react-native-reanimated 3.6.2 to 3.10.1), there were big performance issues using Moti, but it seems to me that the problem lies within 'react-native-reanimated` as stated by @efstathiosntonas in #322. There have been multiple issues raised relating to performance degradation since version 3.6.1, in addition to 5800 namely 5816, 5781, even though all are not probably related to this one mentioned here in Moti.

I am just mentioning this here to add some information.

EDIT Let me come back to this after testing now. In my use case, actually changing to use pure react-native-animated animations instead of Moti fixed the performance issue. It was appearing when calling handleSubmit from react-hook-form with many inputs, and actually passing the handleSubmit took 2 seconds due to input rendering again as I had <InputHeader /> with placeholder text animations in it. So I changed those from Moti to react-native-reanimated, and now everything works as previously in Moti without performance issues.

I can show the code I used if requested. I don't have a repo to showcase this at the moment.