Blank Stack
Blank Stack is the most predictable option when you want fully custom transitions. What to know:- you are responsible for the animation design because Blank Stack does not impose built-in platform transitions
- if React Navigation can handle the navigation event, Blank Stack generally follows that behavior too
- for highly customized transitions, Blank Stack is usually the safer choice than Native Stack
Native Stack
Native Stack is useful when you specifically want native-stack integration, but it is not always the best choice for heavy custom animation work. What to know:- custom transitions on Native Stack are more constrained than on Blank Stack
- the transition layer is not identical to Blank Stack, because the native screen container is still part of the presentation model
- if you run into visual quirks or transition behavior that feels harder to control, the usual workaround is to use Blank Stack instead
Component Stack
Component Stack is best treated as an isolated internal navigator. What to know:- it is not meant for deep linking or normal app-level routing
- its state is isolated from the main React Navigation tree
- it is better suited for embedded flows, experiments, or internal navigation UIs than for top-level app navigation
Shared Elements and Bounds
Bounds-based transitions are powerful, but they still depend on real layout and measurement. Good practice:- keep source and destination layouts stable
- avoid overly complex matching setups unless you need them
- test on real devices when using large shared elements or multiple animated elements at once
Performance
As with any Reanimated-heavy transition system:- complex interpolators cost more than simple opacity or translate animations
- bounds-heavy transitions should be tested on lower-end devices
- real devices matter more than the simulator when judging gesture feel and animation smoothness
Web
This package is not intended for web, and there are no plans to support web.Recommendation
- start with Blank Stack for most custom transition work
- move to Native Stack only when native-stack integration is worth the trade-off
- keep Component Stack for isolated or embedded flows, not primary app navigation
