feat(set): SharedTransitionBoundary#9435
Merged
bartlomiejbloniarz merged 24 commits intoJun 15, 2026
Merged
Conversation
This PR introduces a new concept for SETs, called SharedTransitionBoundary. It is supposed to replace the current approach where we use Screens from RNScreens to separate which shared elements should be displayed. With the new approach one can still wrap a screen to get the old behavior, but also new patterns are available, such as running a SharedTransition within one RNScreen. Main pros of this solution: - easier to adapt to different navigators (this allows us to use the TabNavigator with no weird native changes) - more customization options for users - no native dependency on RNScreens Cons: - the minimal manual setup that has to be done to enroll a RNScreen in running transitions - we have to guess the target boundary when doing a native back gesture on iOS. This should not be a big problem for the usual use-case Screenless example ghstack-source-id: 0464881 Pull Request resolved: software-mansion#9036
Summary: Test Plan: Summary: Test Plan: ghstack-source-id: 22f8029 Pull Request resolved: software-mansion#9037
…re-mansion#9053) This updates React Navigation with fixes to `useIsFocused` behavior to avoid workarounds for SET. It also disables `detachInactiveScreens`, which seems to conflict with SETs. Note that it'll be removed in React Navigation 8, so this is temporary. https://github.com/user-attachments/assets/e1ba5aca-1fe2-44c3-9a50-7088079c0da2 --------- Co-authored-by: Bartłomiej Błoniarz <bartlomiej.bloniarz@swmansion.com>
c634220 to
8fff62d
Compare
tomekzaw
requested changes
Jun 3, 2026
tomekzaw
left a comment
Member
There was a problem hiding this comment.
Looks good overall, left couple of comments
…ndary Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dary # Conflicts: # apps/fabric-example/ios/Podfile.lock # packages/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp
tomekzaw
approved these changes
Jun 15, 2026
Merged
via the queue into
software-mansion:main
with commit Jun 15, 2026
ae7306d
20 of 21 checks passed
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
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 MR introduces
<SharedTransitionBoundary>.It cherrypicks commits from #9107 and #9132 and resolves conflicts.
Those MR are combined into one to keep main branch consistent.
NOTE: Found a non-deterministic bug on Android (check recording at 1:41). Not sure if this is a regression.
Test plan
[SET] Screenless Basicexample[SET] *examples for regressions in FabricExample app on iOS and on AndroidAttachments
iOS after
ios-after-compressed.mp4
Android after
android-after-compressed.mp4