Version: 4.x

Community-developed Navigators and Libraries

Navigators

Fluid Transitions

Fluid Transitions is a library that provides Shared Element Transitions during navigation between screens using react-navigation.

A Shared Element Transition is the visualization of an element in one screen being transformed into a corresponding element in another screen during the navigation transition.

The library implements a custom navigator called FluidNavigator that makes all this and more possible.

Links

github.com/fram-x/FluidTransitions

Libraries

react-navigation-collapsible

react-navigation-collapsible is a library and a Higher Order Component that adjusts your navigationOptions and makes your screen header collapsible.

Since react-navigation's header is designed as Animated component, you can animate the header by passing Animated.Value from your ScrollView or FlatList to the header.

Links

github.com/benevbright/react-navigation-collapsible

Demo on Snack

react-native-screens

This project aims to expose native navigation container components to React Native and React Navigation can integrate with it since version 2.14.0. Using react-native-screens brings several benefits, such as support for the "reachability feature" on iOS, and improved memory consumption on both platforms.

Links

github.com/software-mansion/react-native-screens

react-navigation-header-buttons

Helps you to render buttons in the navigation bar and handle the styling so you don't have to. It tries to mimic the appearance of native navbar buttons and attempts to offer a simple interface for you to interact with.

Links

github.com/vonovak/react-navigation-header-buttons

Demo on expo

react-navigation-props-mapper

Provides simple HOCs that map react-navigation props to your screen components directly - ie. instead of const user = this.props.navigation.getParam(activeUser, null), you'd write const user = this.props.activeUser.

react-native-header-scroll-view

This component implements iOS large header with grow/shrink on scroll, made by @jonsamp. Note that it doesn't handle header animation between screens, it only handles animating the header title on scroll.

To use this component, we'd want to disable the built-in header. There are 2 ways to disable the header in React Navigation:

  1. Disable the default header for one screen:
static navigationOptions = {
headerShown: false
};
  1. Disable header globally in createStackNavigator
const Home = createStackNavigator(
{
ExampleScreen1,
ExampleScreen1,
},
{
headerMode: 'none',
}
);

Links

github.com/vonovak/react-navigation-props-mapper