🎫 The application entries points might be multiple in React Web apps whereas there is a single entry point on React Native

➡️ Using react web

First thing to notice is that while using React in the web, your app can boot from multiple entry points, at least when using some kind of Framework such as NextJS.

Those entry points depends on the requested URL, which trigger some specific components rendering.

It means that you should rather think your bootstrapping code as a blocking Higher Order Component (HOC) instead of the method we will see below presented by react-navigation.

This way, no matter from where the app boot, an App loading component will take precedence and do mandatory things before give control back to the user.

I already described that approach in another article, you might have a look:

➡️ Using react native (RN)

At the opposite, React native as a single entry point (react native web is not part of this assertion) which is generally index.js .

This allows different patterns such as the one described here with redirections through screens.

While this looks like a great approach, I highly recommend however to consider that the endpoint can be multiple and avoid the redirection strategy from react-navigation’s doc for compatibility reasons with eventual react-native-web future releases.

You might also handle Deeplink through this bootstrapping HOC. Deeplinking is a way to trigger an app opening action with specific intent and params.

📵 Offline experience and cache strategies should be first class citizen in mobile apps whereas they are less in web.

As network connectivity is not a constant, you might live in some places in the world where the network is flaky.

That being said, the app will be able to boot without network connection and it can end in a state of being loaded but not being able to fetch data required for content display.

The user might think that he will have access to some contents, whereas he hasn’t and in the best situation he will see stale content.

That’s why you should really consider offline as the heart of your application and structure around this.

Nowadays, even if the network is getting better and better, there is no point making an app without taking this in consideration.

⚡️The network has to be considered as an improvement of your app.

This might be a bit tricky at first glance, especially when coming from a web background, but there are a lot of tools that make this task easier such as Cloud Firestore with Firebase or Apollo-client with GraphQL.

I also made an article about all of this, you may be interested in having a look at it.

💡Note: What we just discussed can also apply to progressive web apps, which are kind of mobile applications sibling using the web browser capabilities and APIs.

Web libraries that are not isomorphic cannot work on React native

You should really take care of the libraries you are going to use, some of them are badly built and might make your app crashing upon importing them as they try to access the window global object, which is unavailable on NodeJS and React Native.

You can’t also use most of NodeJS API based libraries, such as the one reading and writing on the filesystem: fs .

Also take note that React Portals are not available in the React Native API, instead you can have a look at this:

React native depends on all mobile problematic, while react web is just web…

When building a mobile app you’ll will need to keep in mind a lot of problematic and rules: