Q:

Should the main App component be Pure or Stateless?

In React-Native, should we use Pure Component or Stateless Function for the main Component ?
Here is two ways of doing it:
import React from 'react';
import { Provider } from 'react-redux';

import store from './reducers/AppReducers';
import AppRoutes from './routes/AppRoutes';

// Pure Component
class App extends React.PureComponent {
    render() {
        return (
            <Provider store={store}>
                <AppRoutes />
            </Provider>
        );
    }
}

// Stateless Function
const App = () => {
    return (
        <Provider store={store}>
            <AppRoutes />
        </Provider>
    );
};

A:

If your component is simple, use stateless. For simple components it is not required to use Pure Components
Let's say if you have a component that displays a text and you make it a pure component, Everytime it re-renders it will first do the shallow comparison. 
In this situation a re-render would be performant then a shallow comparison.
It's upto you to decide weather your component would be performant if it checks for a shallow comparison or re-renders 
TIP: If you have a very basic component, which only displays some basic stuff, use stateless. 
https://medium.com/groww-engineering/stateless-component-vs-pure-component-d2af88a1200b
here it is explained in detail.
in your case, I would advice Pure Component as it contains your whole app, and a re-render would be more costly then a shallow comparison  

