Published April 14, 2025
Theo (t3.gg) made a response to my video in which he pointed out a few mistakes that I made.
• 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.
There are also several points from Theo that are more of "zingers" than anything else, so I won't address them here. (They were kind of funny though.)
One commenter came to the defense of Inifite Red by invoking a variation of Hanlon's Razor: "Never attribute to malice that which is adequately explained by stupidity." (Or, in this case, less stupidity and more apathy.)
agent_kater
It annoys me that he confirms that Walmart was in fact using React at some point but then continues talking about how the React Showcase page is "wrong". I don't consider it wrong just because it doesn't keep up with the latest decisions of every company it lists.
agent_kater
If they do it on purpose, sure, that's scammy. But in my professional experience it's much more likely that simply no one is in charge of keeping that page updated.
I never explicitly stated the main point of my video, so I will do so here. There is a job title known as "developer advocate", which is essentially a marketer for developer technologies. These advocates will shout from the rooftops when Coinbase switches to React Native, but stay dead silent when Walmart switches away from React Native. They have an incentive to be willfully ignorant about the current state of the mobile app ecosystem.
This results in funny situations where an app is "claimed" by both the React Native and Flutter ecosystems (I believe Tencent QQ falls into this category).
I understand that Meta and Infinite Red probably made the showcase once and never bothered to update it. But there was no way they were going to change the showcase unless someone publicly called out the inaccuracies, so that's what I did. (They did remove a couple of the apps from the showcase btw.)
Many commenters asked what mobile app framework they should use if React Native isn't good.
@cant_sleeeep
so? what do i use then
First of all, I never said that React Native was bad - only that React Native isn't dominating mobile development like some people would have you believe. Truthfully, I think headphonejack_90 on Reddit put it best.
headphonejack_90
Learn whatever you want, just be good at it. I have worked in places using all sorts of technologies, and the quality of the product was always determined by the quality of the devs working on it.
The reality is that with an app of sufficient complexity, you will likely need to write native code to implement some features. No matter which framework you end up using, I think it's helpful to understand how the platform works underneath the hood. This is in contrast to Expo marketing about how "you don't need Xcode to build iPhone apps". This is sometimes true, until it isn't, in which case developers love to complain that "the package I need doesn't exist".
There was a lot of discussion about how mobile frameworks have waxed and waned through the years.
Otherwise_Bee_7330
Bit of fud,
Most of these companies that moved out of RN did understandingly because back then RN sucked
Today is rly a different story, and soon it will be even better with static-hermes that will hopefully solve the biggest issue with RN (javascript)
Otherwise_Bee_7330 may be onto something here. I personally think the golden years for React Native were between 2014 (when it was created) and 2019, when SwiftUI was created and Flutter started to take off. However, in the video I didn't consider that Flutter development has slowed down (probably due to Google's rumored Fuchsia layoffs) and that Expo Application Services could have a delayed impact on the popularity of React Native. I probably did come across as too much of a doomer in the video...
An extremely common comment across all framework-related posts on Reddit has to do with job listings.
ILikeOldFilms
LinkedIn seems to have a different opinion.
I specifically looked at LinkedIn jobs (for the United States) to see which mobile app frameworks were in demand. However, there are several problems with doing this.
• When you search for "React Native" (the mobile app framework), you get many jobs listings for "React" (the web framework).
• Many job listings include a laundry list of frameworks, including all of React Native, Flutter, SwiftUI, Cordova, etc.
In my opinion, the number of search results for job listings is too unreliable and imprecise to take that seriously.
In Theo's response video, he mentions Indeed job listings, which have the exact same problem. (I literally just searched for "React Native" and the first search result is for a web developer.)
The most egregious comment I saw on Reddit was on r/FlutterDev.
technobopp
It turns out that "flutter" is a dictionary word unrelated to "Flutter" the app framework. Google Trends is extremely unreliable because of things like this. What's funny is that someone pointed out this issue on similar comment on r/FlutterDev years ago, yet somehow no one pointed it out this time.