Package Surface
react-native-screen-transitions exposes four main API surfaces:
- navigator creators from subpaths
- adapter helpers for existing navigators
- the default
Transitionexport from the main package - named hooks, helpers, constants, and types from the main package
TSX
Use the blank-stack subpath export to build the recommended navigator. Use withScreenTransitions() to adapt existing native-stack navigators. Use Transition for transition-aware primitives, boundary components, presets, and specs.
For hooks and factories such as useScreenAnimation(), useScreenGesture(), createTransitionAwareComponent(), and createBoundaryComponent(), see API.
Navigator Creators
createBlankStackNavigator()
TSX
All transition configuration still lives on screen options.
Related reading: Stack Types and Adapters.
Transition-Aware Primitives
The default Transition export wraps common React Native primitives so they can receive slot-driven styles and participate in bounds measurement.
Transition.View
Use this for non-pressable elements that need transition-aware styling.
TSX
Transition.Pressable
Use this when the element is interactive.
TSX
Transition.ScrollView
This participates in the scroll registry, hands off gestures, and publishes scroll metadata to current.layouts.scroll.
TSX
Transition.FlatList
This gives list content the same gesture-aware scroll behavior.
TSX
Use transition-aware scrollables inside sheets and other gesture-driven screens whenever possible. Custom scrollables can opt into the same behavior with Transition.createTransitionAwareComponent(Component, { isScrollable: true }).
Common Primitive Props
styleIdfor element targeting fromscreenStyleInterpolator
Boundary Components
Transition.Boundary is the compound API for bounds-driven transitions.
Transition.BoundaryTransition.Boundary.TargetTransition.Boundary.Host
Transition.Boundary
Use this for both pressable and passive boundary registration.
When onPress is present, it renders as a pressable boundary. When onPress is omitted, it renders as a passive view boundary.
TSX
This is the default recommendation for new code.
Transition.Boundary.Target
Use this when the measured element is nested inside the owner.
TSX
It does not take its own id. It inherits the surrounding boundary owner and changes which descendant gets measured.
Transition.Boundary.Host
Use this to make handoff or clipping-escape placement explicit inside a scrollable or otherwise constrained coordinate space.
TSX
Most flows do not need an explicit host. Add one when escapeClipping or handoff content should be placed inside a specific local coordinate space.
Deprecated Aliases
Transition.Boundary.View and Transition.Boundary.Trigger are still exported for compatibility.
TSX
Boundary Config Props
Transition.Boundary, deprecated boundary aliases, and components created with createBoundaryComponent() share the same boundary config:
idgroupanchorscaleModetargetmethodenabledhandoffescapeClipping
They keep the wrapped component props as well. The root Transition.Boundary accepts onPress for pressable usage.
Presets and Specs
The default export also includes Transition.Presets and Transition.Specs.
Preset builders:
SlideFromTop()SlideFromBottom()ZoomIn()DraggableCard()ElasticCard()SharedIGImage()SharedAppleMusic()SharedXImage()
Specs:
Transition.Specs.DefaultSpecTransition.Specs.DefaultSnapSpecTransition.Specs.FlingSpecTransition.Specs.Zoom(paired open and close springs fornavigation.zoom())
TSX
Transition Start Blocking
blockTransition() and unblockTransition() are named exports that hold a screen's pending lifecycle transition at its initial frame while the destination prepares work.
TSX
Blocking is reference-counted per route. Pair every call with one unblock for the same route. Passing a route key is the clearest option; when it is omitted, the most recently focused screen in navigation history is used.
These functions affect when the animation starts. They do not reduce JavaScript work, move rendering to another thread, or improve actual runtime performance. Use them when delaying the visual transition produces a cleaner result than animating while the destination is still preparing.
Hooks, Factories, and Helpers
See API for useScreenAnimation(), useScreenGesture(), useHistory(), createTransitionAwareComponent(), createBoundaryComponent(), snapTo(), and reserved mask ids.
Legacy Compatibility
Transition.MaskedView is still exported for legacy masked-view flows.
Prefer:
- screen options on one of the stack creators
Transition.BoundarynavigationMaskEnabledstyleIdtargets and layer slots
Related reading: Stack Types, Custom Animations, Layers, and Bounds Transitions.