This content originally appeared on Level Up Coding - Medium and was authored by Tom McIntosh
React Native Fundamentals — Is it really “Native”?
Why your app feels better than a website

This morning I started my day like I always do. Wake up, make coffee, grab a seat on the couch and browse some news on the iPad.
The story I was reading had a video embedded, so I hit play, but was annoyed to see that it opened YouTube through the in-app browser. Straight away I started looking for the “Open in App” button, but alas; it did not appear. Combined that with a 15 second no-skip ad… forget about it.
This tiny inconvenience got me thinking: Why do I care? Why does anyone care? Why do Facebook, Twitter, Google and every other company maintain mobile apps, when their web apps work perfectly fine?
Believe me when I say that this is an unnerving thought to have before heading to my job — as an app developer. That being said, I’m all for things being quicker and easier, so if there’s no need for Native apps, let’s get rid of them.
This brings us back to the main question: What does “Native” mean? Is React Native even really “Native”?. This was one of my main points of confusion when learning React Native, and I believe that understanding this is key to really knowing the strengths and weaknesses of the platform.
Define Native.
To help us unpack how “Native” React Native really is, we need to define some terms. We usually consider apps to fall into one of these three categories:

Native: Programmed specifically to run on a target operating system, and runs on a device without additional software layers.
Web: Relying primarily on browser technology — just showing web pages.
Hybrid: A Using a combination of operating-system specific code and platform agnostic code to create an app, usually for multiple platforms in one codebase.
Note: Many people use the term ‘Native’ to refer to any installable app; anything that’s not a website. For this reason, people sometimes refer to Native apps as Pure Native or Bare Native.
What’s RN?
React Native is a framework for creating Hybrid apps.
Instead of writing our app in two or three different languages, we write it all in JavaScript. Then we bundle up all the JavaScript, bundle up our app, and run it on the device. To make a broad simplification, the React Native framework is responsible for:
- Running the JavaScript
- Communicating between JavaScript runtime and the main thread
- Communicating with native APIs
- Creating native UI elements
The last point is really the core of why React Native apps feel better than Web apps: React Native creates native views that are naturally fast and responsive, as they’re not being hindered by some additional layer of software. Even though we are writing business logic and creating the UI with (relatively) slow JavaScript, the UI itself is 100% native.
In the case of ‘Web’ mobile apps and plain websites accessed on the browser, there is only one native view: the actual browser window. Everything inside that is drawn using HTML, CSS and JavaScript, which is much less performant than native views. For this reason, Apple have continually pushed against this style of app, often rejecting them for violating the “Minimum Functionality” clause of the App Store Review guidelines:
4.2 Minimum Functionality
Your app should include features, content, and UI that elevate it beyond a repackaged website. If your app is not particularly useful, unique, or “app-like,” it doesn’t belong on the App Store.
What about PWAs?

The Progressive Web App is often promoted as a simple way to create installable mobile apps. A PWA is a website that includes some additional information, allowing a mobile device to ‘install’ it. Once the app is installed, it can be opened and multitasked like a real app, send push notifications and even work offline.
To many, this seems to be a quick and simple alternative to React Native, especially if you already have well developed mobile-web product. However, the fact that the app has an icon on the home screen does not resolve any of the aforementioned weaknesses of web-based apps. Primarily: They can’t make native views. They also have severely limited access to native APIs. For this reason, I consider PWAs to be basically no different than Web-based apps.
So is it Native?
React Native occupies a delicate middle ground between Native and Web. It’s not a simple Web wrapper, but it’s certainly not a Pure Native app.
The general consensus is that a well crafted React Native app offers an experience that is not distinguishable from a Pure Native app, whilst halving development cost and complexity.
A PWA or web-based app could be considered a great RN alternative from a pure functionality perspective, but why should that be our only concern? Users know when an app is put together with a “good enough” attitude. They might not complain directly, and they certainly won’t have the technical insight to know what your app is built on, but they will notice. React Native is about bridging the gap between business efficiency and excellent user experience, so our compromises are kept to a minimum.
Clearly there are technical differences between a React Native and Pure Native app, but from the perspective of a user: They are often the same. Even though React Native brings its own challenges, the ability to create a native experience for many platforms at once is unparalleled.
React Native Fundamentals — Is it really “Native”? was originally published in Level Up Coding on Medium, where people are continuing the conversation by highlighting and responding to this story.
This content originally appeared on Level Up Coding - Medium and was authored by Tom McIntosh

Tom McIntosh | Sciencx (2021-03-10T13:32:32+00:00) React Native Fundamentals — Is it really “Native”?. Retrieved from https://www.scien.cx/2021/03/10/react-native-fundamentals%e2%80%8a-%e2%80%8ais-it-really-native/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.