Vicenti traces the project from React Native’s early Navigator component through NavigationExperimental, which enabled native-driver animations but required substantial boilerplate. He and Expo’s Brent Vatne created React Navigation to make navigation easier to start with while keeping its logic, URL handling, views, and gestures customizable. He notes that apps including PlayStation, Urban Dictionary, and the NFL use it.
Owning Transitions
Speaker
Eric Vicenti, a React Navigation contributor, explains how React Navigation handles screen transitions and how developers can customize them, at a Callstack tech talk.
React Navigation v2 clarified the division between navigation logic and the view that renders screens. Vicenti shows how `createNavigator` can combine a `StackRouter` with `StackView`, letting developers retain stack behavior while changing the view. For example, the stack can be configured to present screens as modals instead of cards.
Vicenti introduces a transitioner intended to let each screen manage its own animation and gesture. In his examples, screens define transition setup and execution, then render animated opacity or modal movement based on transition progress. He also shows how a shared `FadeTransition` component can reuse transition behavior across screens.
Vicenti explains that Gesture Handler tracks gestures on the native thread, while Reanimated lets gesture responses and follow-through animations run there as well. He demonstrates a custom swipe-to-dismiss modal and a shared-element example where product photos and labels animate between screens. The shared-element behavior is built outside the transitioner, which he presents as a test of whether the abstraction supports independently developed transitions.
Vicenti describes animating screens behind a modal as a possible future capability, while noting that the API and implementation are still speculative. He is optimistic that the transitioner could support UIKit-style effects, including animated headers and shared text, but says some keyboard behavior may remain beyond JavaScript-based navigation. He invites developers to experiment with the transitioner and contribute documentation, bug reports, and fixes.
Takeaways
- Separate navigation state logic from screen rendering to make each easier to customize.
- Let screens own their transitions when different routes need different animations or gestures.
- Use native-thread gesture handling and animation tools when smooth gesture tracking matters.
- Shared-element transitions can be implemented outside the navigator if the transition API exposes enough state.
- Treat speculative APIs as experiments and invite focused feedback from the developer community.
Mentioned in this talk
Search inside this talk
What was claimed 12
- builtEric Vicenti built React Navigation
“One of them was React Navigation, which he created together with some other folks from the community.”
1:28inHow you can Server-Render without Rendering on the ServerYouTube Verified2 sources· Talk
- builtBrent Vatne built React Navigation
“I teamed up with Brent Vatne from Expo to develop React Navigation.”
YouTube Unverified1 source· Talk
- builtSatyen built React NativeiOS mask view support and a spring animation port
“Satyen went and ported over the built-in mask for iOS”
YouTube Unverified1 source· Talk
- featureReact Navigation: Separates navigation view from navigation logic
“we wanted to make the division of responsibility between the navigation view and the navigation logic clearer”
YouTube Unverified1 source· Talk
- featureReact Navigation: CreateNavigator API combines a navigation view with a router
“We can use an API called createNavigator.”
YouTube Unverified1 source· Talk
- featureReact Navigation: Transitioner lets screens define their own animations and gestures
“each screen would be responsible for managing its own animation and its own gesture”
YouTube Unverified1 source· Talk
- integrates withReanimated integrates with React Native Gesture Handler
“React Native Gesture Handler and Reanimated offer a really nice pair for creating gesture-driven animations.”
10:05inModern Animating in RN - an Introduction to Reanimated V2YouTube Verified4 sources· Talk
- featureReact Native Gesture Handler: Tracks gesture position at 60 frames per second on the native thread
“allows you to track the position of a gesture at 60 frames per second entirely on the native thread”
YouTube Unverified1 source· Talk
- featureReanimated: Runs custom gesture-responsive animation logic on the UI thread
“Because we're using the Reanimated library, all of this runs on the UI thread”
YouTube Unverified1 source· Talk
- featureFluid Transitions: Provides an API for shared element transitions
“it provides a really clean API for shared elements”
YouTube Unverified1 source· Talk
- invested inExpo invested in Reanimatedfinancial support
“financially supporting React Navigation, Gesture Handler, and Reanimated”
YouTube Unverified1 source· Talk
- invested inExpo invested in React Navigationfinancial support
“to Expo for financially supporting React Navigation”
YouTube Unverified1 source· Talk





