Shopify is moving from React Native to native Swift/Kotlin
Native is now the future of mobile at Shopify (via):
Native still means building and maintaining software on two platforms, that cost has not disappeared. What changed is that agents can now do enough of the implementation, translation, testing, and review work that it’s no longer the deciding factor it was in 2020.
React Native apps can be fast. Ours are. We are making this change because agents have reduced the advantages of sharing implementation, while the advantages of building for each platform remain. Native keeps us closer to platform capabilities and first-party tooling, with fewer framework and dependency layers between our code and the platform.
I’ve noted before that React Native can make more sense for larger teams that have more bandwidth for more testers and have expertise in React/JS tooling as well as native code/tooling, which helps manage the “write once, debug everywhere” problem. With smaller teams, I find that it’s harder to manage, as code changes can easily scatter bugs across platforms. And with React Native, you still need platform expertise, but now you need both native expertise and React Native expertise.
From their engineering blog, it also looks like they were bumping into issues managing code re-use between the React Native and native layers:
For the Shop App, this coincided with our next major React Native investment: adopting the New Architecture. That work would have required us to revisit native module integrations, rendering, and the boundaries between shared and platform-specific code.
I imagine some of the code re-use complications come from trying to build native widgets, extensions (looking at you, Notifcation Service Extension), and things like App Clips. It’s already complicated enough to manage and architect modules and shared code for a single platform (with varying platform versions too!): now think about having to consider how to do it across multiple platforms!