-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Fix SET in Expo Go #6116
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
Merged
Merged
Fix SET in Expo Go #6116
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Member
Author
|
@EvanBacon - fixed, thanks for the help yesterday 🤝 |
tomekzaw
approved these changes
Jun 14, 2024
This was referenced Jul 25, 2024
r0h0gg6
pushed a commit
to r0h0gg6/react-native-reanimated
that referenced
this pull request
Jul 28, 2025
## Summary
This pull request aims to address the lack of Shared Element Transition
in Expo Go. The issue stemmed from the initialization process of SET. In
Expo Go, Reanimated gets instantiated twice (once for the Expo client
and once for the actual application). During initialization,
`REASharedTransitionManager` attempts to swizzle certain methods from
`react-native-screens` but aims to do so only once:
```objc
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
...
_isConfigured = YES;
});
```
The variable `_isConfigured` was only set to true if the swizzling
process completed successfully. The problem appeared when the second
instance attempted to set up the `screens` integration, as it had
already been done, resulting in the new instance failing to set
`_isConfigured` to true, even if the method swizzling was successful.
The solution involves changing `_isConfigured` to a class field instead
of an instance field.
## Test plan
Run Shared Element Transition in Expo Go
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This pull request aims to address the lack of Shared Element Transition in Expo Go. The issue stemmed from the initialization process of SET. In Expo Go, Reanimated gets instantiated twice (once for the Expo client and once for the actual application). During initialization,
REASharedTransitionManagerattempts to swizzle certain methods fromreact-native-screensbut aims to do so only once:The variable
_isConfiguredwas only set to true if the swizzling process completed successfully. The problem appeared when the second instance attempted to set up thescreensintegration, as it had already been done, resulting in the new instance failing to set_isConfiguredto true, even if the method swizzling was successful.The solution involves changing
_isConfiguredto a class field instead of an instance field.Test plan
Run Shared Element Transition in Expo Go