Clarifications for "React Native Isn't as Popular as You Think"
I recently posted this video to YouTube about how React Native isn't as widely used as you may have been led to believe.
In the video, I used some basic reverse engineering techniques to determine which app frameworks were being used by mobile apps in the wild. And the React Native showcase, which showed up for me as the first search result in Google when searching for "who uses react native", included dead links, apps that were about to be discontinued, and apps that have since moved away from React Native.
The video definitely...ruffled some feathers, and spurred all sorts of discussion about the state of React Native and how it compares to other frameworks.
However, my takeaways from the investigation involved some speculation and hand-wavy arguments, so I wanted to address them here. Many of these issues were pointed out by Theo (t3.gg), and I've linked his response video below (which is very thorough).
Here is my response to Theo's response, as well as some of the comments posted on YouTube and Reddit (where the video was shared). Since there were a lot of data points cited in the video, I'm only going to cover the most egregious items here.
Misleading Statements by Me
- React Native might only constitute 20% of the code in a hybrid app, but deliver 80% of the value to users, loosely speaking. A good example of this is Facebook Marketplace inside of the Facebook app. I was very dismissive of hybrid apps in the video and could have used it as an opportunity to educate viewers about the complexities of building apps at large companies, where hybrids apps are not uncommon.
- I included a graphic that shows which frameworks were used for all the apps on my phone. Because it's hard to isolate SwiftUI and UIKit usage from each other, I bundled them in the same category, with 64 out of 76 apps on my phone using them. The problem is that I'm trying to claim that SwiftUI is pulling developers away from other frameworks, including UIKit, so bundling them in the same category is nonsensical.
- I attempted to explain why React Native's NPM downloads have an inflection point around the beginning of 2022. I attributed this to
eas-cli
and Expo build, but the correlation between their download trends is not perfect and has some unexplained quirks. There is definitely some correlation between Expo and the downloads for react-native
taking off, and I have some new guesses as to why that is, but the explanation I gave in the video is definitely incomplete.
Misleading Statements by Others
- Theo actually made one misleading statement in his response video, which is also mentioned ad nauseam on YouTube and Reddit. Looking at Indeed/LinkedIn/etc. job postings for technologies has way too many issues to be reliable. For example, many job listings include every mobile app framework in their descriptions because they aren't picky about your past experience with any particular framework. This means searching for "Flutter" and "React Native" could surface some of the same job listings. Also, at least on LinkedIn, searching for "React Native" gives results for React web developers, which is unrelated to mobile development.
- The top comment on the thread on r/FlutterDev was related to using Google Trends to look at occurrences of "flutter" vs. "react native". This is extremely misleading since "flutter" is a word in the English language that is used outside of programming contexts, whereas "react native" is almost exclusively in the context of programming. Of course, "flutter" occurs more often than "react native". (The fact that no one called this out in the comments is really sad, especially since someone made the same mistake a year ago and was corrected on it back then.)
- There were a lot of comments along the lines of "RN is trash, Flutter is the way to go". I imagine most of the people leaving comments like this didn't actually watch the entire video, because I showed that only 3 out of 76 apps on my phone use Flutter. Two of them are Google apps and the other one is mine, so I would personally be very hesitant to say that Flutter (or any other cross-platform framework, for that matter) is overtaking React Native.