Transition components are enhanced versions of React Native primitives that integrate with the screen transition system. They enable shared element animations, custom style interpolation, and gesture coordination.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/eds2002/react-native-screen-transitions/llms.txt
Use this file to discover all available pages before exploring further.
Available Components
All transition components are accessible via the default export:Transition.View
Animated view component with support for shared element transitions and custom style interpolation.Basic Usage
Props
Marks this component for measurement to enable shared element transitions. Components with the same tag across different screens will animate between each other.
Connects this component to custom animated styles defined in
screenStyleInterpolator. When you return custom styles from your interpolator with a matching key, those styles will be applied to this component during transitions.Re-measures this component when the screen regains focus and updates any matching shared-bound source link in place.Useful when layout can change while unfocused (for example, programmatic ScrollView/FlatList scrolling triggered from another screen).
Transition.View accepts all standard View props and passes them to the underlying animated component.Transition.Pressable
Pressable component that measures bounds when pressed, enabling shared element transitions from interactive elements.Basic Usage
How It Works
- When pressed,
Transition.Pressablemeasures its layout bounds - Stores the bounds with the specified
sharedBoundTag - On the destination screen, a
Transition.Viewwith the same tag retrieves these bounds - The interpolator animates between the two bounds
Example: Instagram-Style Image Transition
Props
Inherits all props fromTransition.View plus all standard Pressable props.
Transition.ScrollView
ScrollView with gesture coordination that works correctly with screen dismiss gestures.Basic Usage
Gesture Coordination
When used inside a screen with dismiss gestures,Transition.ScrollView automatically coordinates with the screen gesture:
- Vertical dismiss: Only activates when scrolled to top
- Vertical-inverted dismiss: Only activates when scrolled to bottom
- Horizontal dismiss: Only activates at left/right scroll edges
With Snap Points (Bottom Sheets)
Scroll Behavior with expandViaScrollView
- true (Apple Maps style)
- false (Instagram style)
- At scroll top, swipe up expands the sheet
- At scroll top, swipe down collapses (or dismisses if at minimum)
- Scrolled into content: Normal scroll behavior
Props
Inherits all props fromTransition.View plus all standard ScrollView props.
Transition.FlatList
FlatList with gesture coordination, following the same principles asTransition.ScrollView.
Basic Usage
Example: Scrollable Bottom Sheet
Props
Inherits all props fromTransition.View plus all standard FlatList props.
Transition.MaskedView
Special component that creates reveal effects for shared element transitions. Required for Instagram and Apple Music-style presets.Installation
- Expo
- Bare React Native
Basic Usage
How It Works
Transition.Pressableon source screen measures bounds on pressTransition.Viewon destination registers as the target for that tagTransition.MaskedViewclips content to the animating shared element bounds- The preset interpolates position, size, and mask for a seamless expand/collapse effect
Complete Example with Apple Music Preset
Props
Style for the container. Typically includes
flex: 1 and a backgroundColor for the revealed content area.Content to render inside the masked view. Typically includes a
Transition.View with sharedBoundTag matching the source element.Custom Transition Component
You can create your own transition-aware components using the factory function:For Scrollable Components
Best Practices
Use sharedBoundTag for Transitions
When animating elements between screens, always use
sharedBoundTag on both source and destination. This enables accurate measurement and smooth transitions.Use styleId for Custom Animations
For elements that need custom animations beyond the screen-level interpolator, use
styleId to target specific components without affecting others.Always Use Transition Scrollables
Replace
ScrollView and FlatList with Transition.ScrollView and Transition.FlatList when inside gesture-enabled screens to ensure proper gesture coordination.Install MaskedView for Premium Transitions
To use Instagram and Apple Music-style transitions, install
@react-native-masked-view/masked-view and rebuild your app. These presets won’t work without it.