🌐
GitHub
github.com › eds2002 › react-native-screen-transitions
GitHub - eds2002/react-native-screen-transitions: Easy screen transitions 😎
# Expo npx expo install @react-native-masked-view/masked-view # Bare React Native npm install @react-native-masked-view/masked-view cd ios && pod install ... // app/index.tsx import { router } from "expo-router"; import { View } from "react-native"; import Transition from "react-native-screen-transitions"; export default function HomeScreen() { return ( <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}> <Transition.Pressable sharedBoundTag="album-art" style={{ width: 200, height: 200, backgroundColor: "#1DB954", borderRadius: 12, }} onPress={() => { router.push({ pathname: "/details", params: { sharedBoundTag: "album-art" }, }); }} /> </View> ); }
Starred by 1.4K users
Forked by 38 users
Languages   TypeScript 93.8% | MDX 6.1%
🌐
npm
npmjs.com › package › react-native-screen-transitions
react-native-screen-transitions - npm
January 5, 2026 - Customizable screen transitions for React Native.
      » npm install react-native-screen-transitions
    
Discussions

How can you have different transition animations between screens with react-navigation? - Stack Overflow
I'm currently working on a ReactNative app that has 2 screens. The goal is to animate the screens such that they push each other up or down depending on which screen you're coming from. The GIF bel... More on stackoverflow.com
🌐 stackoverflow.com
Is it possible to set up a screen transition like this with React Native
So it is a navigation to another screen, or just open a modal? However you should achieve it using react-native-reanimated More on reddit.com
🌐 r/reactnative
23
27
February 12, 2025
Reanimated - Transitions between screens?
following up - seems like Reanimated "Shared Element Transitions" is a solution I might be looking for, but still experimental? More on reddit.com
🌐 r/reactnative
7
2
July 14, 2024
How can I do screen transitions with screens in tab navigator?
You can use react navigation’s material top navigator. It has a slide animation and can be configured to show the tab bar at the bottom of the screen. More on reddit.com
🌐 r/reactnative
1
1
November 7, 2023
🌐
npm
npmjs.com › package › react-navigation-transitions
react-navigation-transitions - npm
July 26, 2019 - ScreenC: { screen: ScreenC }, }, { transitionConfig: (nav) => handleCustomTransition(nav) }) If you are having trouble with SafeAreaView like in this issue, try adding forceInset={{ top: 'always', bottom: 'always' }} The basis for these functions can be found in the react-navigation docs here. react-native · react · react-navigation · navigation · transitions · animations · npm i react-navigation-transitions ·
      » npm install react-navigation-transitions
    
Published   Jul 26, 2019
Version   1.0.12
Author   Phil Mok
🌐
React Native
reactnative.dev › docs › navigation
Navigating Between Screens · React Native
April 8, 2026 - npm install react-native-screens react-native-safe-area-context · For iOS with bare React Native project, make sure you have CocoaPods installed. Then install the pods to complete the installation: ... Once you've installed and configured the ...
🌐
npm
npmjs.com › package › react-native-screens
react-native-screens - npm
February 23, 2026 - Latest version: 4.24.0, last published: 2 months ago. Start using react-native-screens in your project by running `npm i react-native-screens`. There are 1453 other projects in the npm registry using react-native-screens.
      » npm install react-native-screens
    
Published   Feb 23, 2026
Version   4.24.0
🌐
OneUptime
oneuptime.com › home › blog › how to add custom transitions and animations to react navigation
How to Add Custom Transitions and Animations to React Navigation
January 15, 2026 - The transition system is highly customizable, allowing you to control every aspect of the animation. import { createStackNavigator } from '@react-navigation/stack'; import { NavigationContainer } from '@react-navigation/native'; const Stack ...
🌐
npm
npmjs.com › package › react-native-transition
react-native-transition - npm
September 8, 2017 - A fully customizable view transition library for react-native. The library could be used to transition entire screens or small parts within a View.
      » npm install react-native-transition
    
Published   Sep 08, 2017
Version   1.1.8
Author   Ranjan Shrestha
🌐
Tessl
tessl.io › registry › tessl › npm-react-native-reanimated › 4.1.0 › files › docs › screen-transitions.md
4.1.0 • npm-react-native-reanimated • tessl • Registry • Tessl
January 29, 2026 - const ScreenTransition: { /** Swipe right transition (iOS-style back navigation) */ SwipeRight: AnimatedScreenTransition; /** Swipe left transition */ SwipeLeft: AnimatedScreenTransition; /** Swipe down transition (modal dismiss) */ SwipeDown: AnimatedScreenTransition; /** Swipe up transition */ SwipeUp: AnimatedScreenTransition; }; interface AnimatedScreenTransition { /** Style function for the top screen during transition */ topScreenStyle: ( event: PanGestureHandlerEventPayload, screenDimensions: MeasuredDimensions ) => Record<string, unknown>; /** Style function for the screen below during
Find elsewhere
🌐
React Libraries
reactlibraries.com › libraries › animation › react-native-screen-transitions
react-native-screen-transitions - React Libraries
Easy screen transitions for React Native and Expo · View on GitHubView on NPMDocumentation · 1.0K · Stars · 14.7K · last month · npm install react-native-screen-transitionsCopy · yarn add react-native-screen-transitionsCopy · GitHub Stars · 1.0K · Downloads ·
🌐
Mintlify
mintlify.com › mintlify atlas › mintlify-atlas/docs-atlas-097b39ff › react native screen transitions
React Native Screen Transitions - React Native Screen Transitions
March 4, 2026 - Get up and running with beautiful screen transitions in minutes. ... npm install react-native-reanimated react-native-gesture-handler \ @react-navigation/native @react-navigation/native-stack \ @react-navigation/elements react-native-screens \ react-native-safe-area-context
🌐
React Navigation
reactnavigation.org › docs › shared-element-transitions
Animating elements between screens | React Navigation
If you are using Reanimated 4 (New Architecture), you must enable the ENABLE_SHARED_ELEMENT_TRANSITIONS feature flag. ... Use Animated components imported from react-native-reanimated. Assign the same sharedTransitionTag to elements on different screens.
🌐
NotJust
notjust.dev › blog › react-native-screens-transitions
React Native Screens - How to use navigation transitions based on gestures
To enable custom screen transition with gesture let’s install the following packages. ... Then install React Native Reanimated, React Native Gesture Handler, React Native Screens (Latest version is important) & its dependencies: ... npm install react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context
🌐
Medium
medium.com › @islamrustamov › custom-screen-transition-based-on-user-touch-in-react-native-98f1c4c831ee
Custom screen transition based on user touch in React Native | by Islam Rustamov | Medium
November 26, 2024 - What they do is actually pretty simple, they start the new screen’s transition from the X and Y position of our touch AND scale up the screen. So it creates an animation of you screen appearing from the position of your touch. And that’s prerry much it. Some things that you need to take into consideration: You still need to create a closing animation of the screen going back the same way it was opened. It can be done by using the next argument or by using inverted property of Animated from react-native;
🌐
GitHub
github.com › saulsharma › react-native-sheet-transitions
GitHub - saulsharma/react-native-sheet-transitions: Beautiful iOS-like sheet transitions for React Native · GitHub
Feel free to contribute by submitting PRs or reporting issues! npm install react-native-sheet-transitions # or yarn add react-native-sheet-transitions # or bun add react-native-sheet-transitions
Starred by 957 users
Forked by 22 users
Languages   TypeScript 99.1% | JavaScript 0.9%
🌐
LogRocket
blog.logrocket.com › home › using react native reanimated for seamless ui transitions
Using React Native Reanimated for seamless UI transitions - LogRocket Blog
June 4, 2024 - React Native Reanimated v3 does not introduce any breaking changes, as was the case in v2. Hence, every code written in v2 will work fine in v3. However, an additional feature was introduced, which we will look at extensively. This feature is called Shared Element Transitions. This new feature introduced in v3 is a transition feature that allows you to animate views between navigation screens.
🌐
React Navigation
reactnavigation.org › blog › 2026 › 04 › 27 › building-custom-screen-transitions
Building custom transitions with react-native-screen-transitions | React Navigation
2 weeks ago - If the JS stack already gives you ...e-screen-transitions fits when a specific flow needs more freedom: custom gesture choreography, snap points, bounds-driven motion, or a Reanimated-first transition model....
🌐
npm
npmjs.com › package › react-native-animatable
react-native-animatable - npm
October 26, 2023 - This function will try to determine the current styles and pass it along to transition() as fromValues. import * as Animatable from 'react-native-animatable'; class ExampleView extends Component { handleTextRef = ref => this.text = ref; render() { return ( <TouchableWithoutFeedback onPress={() => this.text.transitionTo({ opacity: 0.2 })}> <Animatable.Text ref={this.handleTextRef}>Fade me!</Animatable.Text> </TouchableWithoutFeedback> ); } }
      » npm install react-native-animatable
    
Published   Oct 26, 2023
Version   1.4.0
Author   Joel Arvidsson
Top answer
1 of 2
3

Did some researching and was able to get this working with the following code:

const AppNavigator = createStackNavigator({
    Home: {
        screen: Home
    },
    Page2: {
        screen: Page2
    }
},
{
    initialRouteName: "Home",
    headerMode: "none",
    defaultNavigationOptions: {
        gesturesEnabled: false
    },
    transitionConfig: () => ({
        transitionSpec: {
          duration: 1400,
          easing: Easing.out(Easing.poly(4)),
          timing: Animated.timing,
        },
        screenInterpolator: sceneProps => {
          const { layout, position, scene } = sceneProps;
          const { index } = scene;

          const height = layout.initHeight;
          const translateY = position.interpolate({
            inputRange: [index - 1, index, index + 1],
            outputRange: [height, 0, -height],
          });

          const opacity = position.interpolate({
            inputRange: [index - 1, index - 0.99, index],
            outputRange: [0, 1, 1],
          });

          return { opacity, transform: [{ translateY }] };
        },
      }),
});

The hardest part was understanding interpolation as there seems to be a lot of seemingly arbitrary values. I didn't find the documentation the greatest, however was able to come up with the following understanding:

Take the code below for example. Here the first thing is setting the type of translation, which in this case is translateY

const translateY = position.interpolate({
            inputRange: [index - 1, index, index + 1],
            outputRange: [height, 0, -height],
          });

The next confusing part is the input and output ranges, what do these numbers mean? Well the input range actually maps to the output range. Looking something like this:

inputRange: [newScreen, currentScreen, previousScreen]

In inputRange we specify which screens we want to animate, then in output range we specify what we want to do with those screens. Modifying outputRange[0] would modify the newScreen, etc.

Since we already set the translation type to translateY we know the screen is either moving up or down.

outputRange: [height, 0, -height]

This is now telling the new screen to move up to the top of the screen and the old screen to also move up, beyond the top of the screen (hence the -height, which would be the same as -100vh in CSS).

2 of 2
1

Here is a guide for react-navigation-stack 2.0 alpha/react-navigation 5

https://callstack.com/blog/custom-screen-transitions-in-react-navigation/

🌐
Reddit
reddit.com › r/reactnative › is it possible to set up a screen transition like this with react native
r/reactnative on Reddit: Is it possible to set up a screen transition like this with React Native
February 12, 2025 - You can also use react native shared transition. ... not sure it's possible because that effect when the background "lowers" can only trigger with a native modal, and you can't have a native modal sitting normally in the screen like that.
🌐
npm
npmjs.com › package › react-native-shared-element
react-native-shared-element - npm
November 17, 2023 - Native shared element transition primitives for react-native 💫. Latest version: 0.8.9, last published: 2 years ago. Start using react-native-shared-element in your project by running `npm i react-native-shared-element`. There are 7 other projects in the npm registry using react-native-s...
      » npm install react-native-shared-element
    
Published   Nov 17, 2023
Version   0.8.9