I recently encountered this Reddit post from 2023
that links an article about how Walmart and Skype
used React Native for their apps.
One of the commenters claims to have worked at Walmart
and talks about his experience working on the mobile app,
as well as another commenter pointing out
that with React Native, speed to market is inane.
The linked article attributes all of Walmart's
$559 billion of revenue to React Native,
as well as all of a Bloomberg's 10 billion.
There's also this Medium article I found via Google
talking about how Walmart and Skype used React Native.
Each article has a different author,
but both authors specifically mention Walmart
and Skype together.
So I suspect one of these AI articles
is plagiarizing the other.
Finally, the React Native showcase,
hosted by Meta Open Source,
clearly states that Walmart uses React Native
for iOS and Android.
The only problem is,
the Walmart app doesn't use React Native.
What's going on here?
First, I should explain how to know
when an app is built using React Native.
When an iPhone app is compiled,
the output is an IPA file.
In reality, this is a zip file,
so you can unzip it to reveal the .app folder.
Inside this folder is a compiled binary.
Using a command line program called Otool,
we can see which shared libraries and frameworks
are bundled with the app.
If an app is built with React Native,
it will include the Hermes framework,
a JavaScript runtime that is bundled with React Native.
Keep in mind that there are some exceptions to this,
since Hermes only became the default JavaScript engine
in 2022, and some apps may not be using
the latest React Native version.
In these cases, the JavaScript Core framework
will be present, but JavaScript Core is also prevalent
in non-React Native apps,
meaning we'll have to rely on other detection methods.
To be extra careful, we can also check
that there are no other frameworks being used,
like Flutter or Unity or Cordova or Capacitor.
To be extra, extra careful,
we can use a tool called RipGrip
to quickly search all files for strings like React Native,
React Dash Native, Redux, and more.
There are other weird quirks
that I don't have time to fully explain,
but after looking through dozens of apps,
I can confidently state that the Walmart app
uses a combination of SwiftUI and UIKit.
But what about the Android version of the app?
Maybe the Walmart app only uses React Native
for Android and not iOS.
Android apps are stored as APK files on the device.
These two are simply zip files,
but the contents are encoded in a binary format
that normally isn't human readable.
Using a tool called APK tool,
we can decompile the app and all of its Java bytecode
to see what's inside.
With Android, it's a little less clear
how to know what app framework is being used,
so we're going to be relying very heavily on grep.
However, in the case of Walmart,
it's pretty clear that they're not using React Native.
To further confirm this,
I downloaded an old version of the app from 2018
from APKmirror.com.
In that version, they definitely were using React Native,
so at some point, they switched over to native code.
Once I confirmed that the Walmart app
doesn't use React Native on either platform,
I began to wonder,
how accurate is the React Native showcase?
If it was wrong about Walmart,
could it be wrong about other apps?
The problems begin in the first section with the Meta apps.
By the way, if you didn't know,
Meta is the company that created React Native.
The first link they show, the Facebook iOS app,
is not built with React Native.
This isn't even some big secret.
Facebook literally says it
in one of their engineering blog posts.
They use another framework they developed
called ComponentKit.
It may be React-inspired in its design,
but it doesn't use JavaScript like React Native.
To be clear, the Facebook app might be using React Native
in some indirect way,
like embedding a React Native web application
in a web view for a subset of the pages.
But the showcase implies that the majority of the app
is built with React Native, which is simply not true.
Next up are the Facebook and Instagram MetaQuest apps.
I didn't actually check whether these use React Native,
but I wanted to include them
because of their uniquely abysmal ratings
in the MetaQuest store.
The bad ratings aren't because their Facebook apps
preloaded onto a VR headset.
They're just legitimately that bad.
According to the reviews,
the apps lack most of the features
of the mobile and web versions and are riddled with bugs.
I don't want this entire video to be clowning on Facebook,
but keep in mind that if you made a showcase of MetaApps
that didn't use React Native,
it would look something like this.
Scrolling down to the Amazon section,
we see more problems with the showcase.
When you follow the Amazon App Store link,
it tells you that the Amazon App Store
is about to be discontinued on Android.
Next, we have the Amazon Kindle app.
This one's a little tricky.
There are references to React Native in the Android app,
but only as related to com.com.amazon.identity.auth.
However, there are 20,000 references to AndroidX.compose,
which indicates the use of the Jetpack Compose UI framework.
My guess is that the Kindle app
uses React Native for a login screen,
but the rest of the app is built with Jetpack Compose.
Finally, scrolling down to the user's showcase,
we have more apps that don't actually use React Native.
Pinterest used React Native in 2018,
but at some point, they switched over to Jetpack Compose.
Tencent QQ doesn't appear to have used React Native
even back in 2018, but in any case,
they are currently using Flutter.
Walmart, as previously mentioned,
switched from React Native to Native Code at some point.
Words with Friends 2 used React Native in 2018,
but currently is using the Unity game engine.
This section of the showcase
also includes a few broken links as well.
Both links for the Call of Duty Companion app are broken,
because the app doesn't exist anymore.
And Lend MN, Gyroscope, and Baidu
all have broken Android links
because they aren't offered on the Play Store anymore,
although the iPhone apps definitely do use React Native.
At this point, you might be questioning the value
of going through the React Native showcase
since it's all anecdotal evidence
about the popularity of React Native.
I think there are two key takeaways
from what we've seen here.
The first takeaway is that there are corporate interests
involved in the marketing of mobile app frameworks.
Although the React Native showcase website is hosted by Meta,
the actual list of apps is maintained
by a company called Infinite Red,
a React Native consulting company
you may have encountered on YouTube at some point.
Consulting companies are extremely prevalent
in the mobile app space,
with React Native and Flutter consultants
constantly writing puff pieces
about their respective frameworks.
The second takeaway is that you should look carefully
at what companies do rather than what they say.
Out of the 76 apps on my iPhone,
not including the first-party Apple apps
bundled with the operating system,
only seven of them use React Native.
All of the apps with initial release dates after 2020
use Native code.
Moving away from my phone,
the newest AI apps, including Copilot, Perplexity,
CalfGBT, Claude, DeepSeek, Gemini, and Grok
are all built with Native code
and almost exclusively use SwiftUI and Jetpack Compose.
You might not think it,
but SwiftUI and Jetpack Compose
are actually relatively recent frameworks.
Although the Swift programming language
was released in 2014,
SwiftUI was released in 2019,
and although the Kotlin programming language
was released in 2011,
Jetpack Compose was released in 2021.
This explains why larger app developers
seem to be shifting away from cross-platform frameworks.
Ideally, we could confirm this trend
with official framework adoption statistics
from Apple or Google,
but they don't release anything like that.
There's this report from Statista
that shows mobile app framework adoption,
but it only considers cross-platform frameworks
and not Native ones.
We could also look at the Stack Overflow 2024 developer survey,
which includes this beautiful chart
showing overlapping developer interest
for React Native and RabbitMQ for some reason.
Suffice to say, we aren't going to get a straight answer
about which mobile frameworks are the most popular,
but wait, React Native downloads on NPM
are skyrocketing right now.
Doesn't this mean React Native is taking over the world?
Well, if you look a little closer,
you'll see that the curve has an inflection point
around January, 2022,
soon after the announcement of Expo Application Services.
Expo is a company that builds tools
for React Native developers,
and they launched a product that allows you
to push updates to your app
while bypassing App Store review.
As part of this service,
they rebuild your app on their servers,
which triggers more downloads from NPM.
Not coincidentally, the download curve for EAS CLI
also starts taking off around January, 2022.
Expo would claim that they're attracting more developers
by making React Native better with their services,
which is true,
but taking into account the extra downloads caused by EAS
and all of the content and influencer marketing
that Expo does on YouTube,
telling you that React Native is the best way
to build mobile apps.
React Native is still growing,
but probably not growing faster
than the mobile app ecosystem as a whole.
If I had to guess,
I would say that React Native's market share
will stay stable over the next five years.
So next time you see one of these clickbait SEO articles
about which mobile app framework to choose,
at least take it with a grain of salt.
By the way, I'm working on a tool to determine
which technologies and third-party services
are used in mobile apps.
Subscribe if you want to see it in action once it's done.
And as always, thanks for watching.