Skip to main content
This page only covers caveats that are useful when choosing between the available stack types or shipping transitions in production.

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
Use Native Stack when native-stack integration is the priority. Use Blank Stack when transition control is the priority.

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