Transcription
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 "Wallmart" 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 "Boomberg"'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 JavaScriptCore framework will be present, but JavaScriptCore 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 ripgrep to quickly search all files for strings like "reactnative", "react-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 apktool, 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 Meta Quest 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 Meta Quest 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 Meta apps 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 Appstore link, it tells you that the Amazon Appstore 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/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 users 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're 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 the LendMN, 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, ChatGPT, 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!