Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sometimes an new view uses a Layout animation previously used on a different view #6869

Open
dcorbin opened this issue Jan 6, 2025 · 4 comments
Labels
Missing repro This issue need minimum repro scenario Platform: Android This issue is specific to Android Platform: iOS This issue is specific to iOS

Comments

@dcorbin
Copy link

dcorbin commented Jan 6, 2025

Description

This bug is not easily reproducible and appears to be non-deterministic.

I have two types of animated views that use entering One uses a Keyframe to do translation along a path based on a user-selection (or sometimes a programmatic selection based on context) This is often visually distinct, because it's often randomly generated movement. The other is strictly a FadeIn. Each type of animated view exists been many times (as many as 20) times on a given screen. If I use the app sufficiently (something in the range of 100s of animated views), occasionally one of the fade-in-views will animate exactly like one of the translation views.

It is not seem deterministic. With my app, it takes me 1-2 minutes of heavy usage before it seems to manifest.
Video where you can see it happen: https://imgur.com/a/5HKTHZY. Right before the end, at about "3:30" on the dial (right side, below halfway) you can see the small colored circle bounce around and end up in the wrong location, instead of just fading in.

Steps to reproduce

@MatiPl01 said in this discussion thread #6756 the team was aware of the issue and working on a solution. Based on his comments, I assume that it's creating a destroy a lot of animated views with different animations.

I have attempted to a create small repo to reproduce the problem, but have not had success yet.

Snack or a link to a repository

Still working on it.

Reanimated version

3.16.6

React Native version

0.76.5

Platforms

Android, iOS

JavaScript runtime

Hermes

Workflow

React Native

Architecture

Fabric (New Architecture)

Build type

Debug app & dev bundle

Device

Android emulator

Device model

Pixel 7 Pro

Acknowledgements

Yes

@github-actions github-actions bot added Platform: Android This issue is specific to Android Platform: iOS This issue is specific to iOS labels Jan 6, 2025
Copy link

github-actions bot commented Jan 6, 2025

Hey! 👋

The issue doesn't seem to contain a minimal reproduction.

Could you provide a snack or a link to a GitHub repository under your username that reproduces the problem?

@github-actions github-actions bot added the Missing repro This issue need minimum repro scenario label Jan 6, 2025
@dcorbin
Copy link
Author

dcorbin commented Jan 6, 2025

I reported this issue here so that I can track it even though the team seems to know about it. I will continue trying to create the problem in a small sample repo.

@MatiPl01
Copy link
Member

MatiPl01 commented Jan 6, 2025

I reported this issue here so that I can track it even though the team seems to know about it. I will continue trying to create the problem in a small sample repo.

I think you won't succeed in creating a repro as this behavior is related to React's view recycling and you won't be able to create a deterministic example. It's fine to leave this issue open without a repro.

@dcorbin
Copy link
Author

dcorbin commented Jan 6, 2025

I was expecting determinism, but I was hoping for something that could reproduce it in a minute or two. And of course trying to be good user-citizen :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Missing repro This issue need minimum repro scenario Platform: Android This issue is specific to Android Platform: iOS This issue is specific to iOS
Projects
None yet
Development

No branches or pull requests

2 participants