React Native at STRV in 2023
One year ago, I wrote a thorough review of the general state of the React Native cross-platform framework and its position at STRV. It’s time for a follow-up.
Some of my predictions (opens in a new tab), such as the framework's convergence to Expo and transition to the new architecture, have proven to be easy bets — but what I wouldn’t have predicted is the rise of React Native projects under our Frontend department development.
Over the last year, we have worked on a record 10 React Native projects, which demonstrates the ever-increasing demand from clients matched by our successful hiring.
Looking back at 2022, there were quite a few notable events to mention.
Version 0.68 released in March was the first to include the new architecture opt-in (opens in a new tab) flag, allowing everyone to get a taste of it and for community libraries maintainers to start experimenting with its adoption.
After a long Covid break, the whole community finally gathered in June for a face-to-face conference to exchange ideas, share common struggles and get a peek at the future of React Native. STRV participated and confirmed that our development practices utilize the best React Native can offer.
Personally, I attended a new architecture workshop to get a better understanding of its adoption timeline. It was clear that it will be a bumpy road for the community since it’ll take at least two years before the architecture reaches wider adoption — but the commitment from Meta to support library maintainers going through the transition was reassuring.
We also attended an animations and React Native Skia workshop to up our skills in building performant and interactive user experiences, and to understand Skia’s capabilities.
Worth mentioning is that as a conference partner, Expo established itself as a React Native leader and re-introduced its new features, many of which we’d already been utilizing on STRV projects and which I also wrote about in my last article.
But the announcement that stole the show (opens in a new tab) was the introduction of Shopify’s Flashlist, a drop-in and significantly more performant replacement for the infamously slow Flatlist. The community’s excitement was like nothing I’d ever seen before; nobody had been expecting someone to provide a solution for one of the most common React Native issues — slow long lists — just like that, even before the new architecture had arrived.
Another great innovation came from Expo in September in the form of Expo Router’s initial beta release (opens in a new tab). File-based routing is a feature that web developers take as a given; almost every major frontend framework supports it — yet only now, with Expo Router, can we utilize it to scale projects on mobile. I believe there are many more web features the router will unlock for mobile development but, most importantly, it will likely become an essential tool in building shared navigation between mobile and web in case of multi-platform applications.
One positive surprise came in October, when Meta opened up an active discussion (opens in a new tab) among the React Native community to figure out the biggest pain points, with core contributors to the framework acknowledging the issues and providing necessary visibility into their action plans. I believe the community finally feels heard and that this step strengthened the overall relationship between developers and Meta — especially during the crucial transition to the new architecture, where we just have to trust it will unlock the benefits we were promised.
Also notable was the ever-increasing adoption of React Native, with Discord (opens in a new tab), Replit (opens in a new tab), Steam (opens in a new tab) and Starlink (opens in a new tab) apps echoing most among the programming community. Even the Windows 11 Settings (opens in a new tab) app is now using React Native, proving the framework's capabilities in what was otherwise a largely uneventful year for desktop support, with Microsoft (opens in a new tab) remaining the leader in the space.
And finally, at the end of 2022, we got our first State of React Native (opens in a new tab) survey. As I write this, the results are still pending.
2023 will be the year of a full-speed transition of common libraries to the new architecture. Yet as far as wider adoption among developers is concerned, I expect that to come in 2024.
The current Expo SDK 47 — together with the new Expo Modules API (opens in a new tab) — is paving the way for the seamless creation of libraries with support for the new architecture in mind, so I wonder how many maintainers will be tempted to abandon their existing solutions, choosing to create a new one from scratch. One common library, React Native Pager View, decided something in that sense (opens in a new tab). Better than stitching together a new compatibility upgrade, the architecture transition is a good reason to reevaluate the project and start fresh.
This is as exciting as it is worrying. The community will be required to keep a close eye on which versions of the library are still compatible with the old architecture until all essential ones have transitioned. We can’t use the new architecture unless all dependencies are compatible. One way to find libraries that already support the new architecture is reactnative.directory (opens in a new tab).
At STRV, we will monitor the community closely to keep ourselves informed so that we can prevent potential incompatibilities on our projects. And with the progressing adoption, we will start building a demo application based on the new architecture to test common functionalities and to serve as a benchmark for our own adoption.
Besides the typical cost efficiency and speed of development reasons, our clients also choose React Native as a mobile solution due to its potential to share business logic with the web. Moreover, if there’s already a working website in React, the client's own developers can eventually become the maintainers of the React Native application we deliver.
In cases when we deliver a website (e.g., landing page, mobile app web equivalent, admin), node backend and a mobile application, monorepos have practically become the norm for STRV, with their utilization in many React and React Native projects. While they add complexity early on — especially for new adopters — the investment usually pays off by sharing simple things like various constants, translations and input validation rules, as well as more complex business logic and API.
Yet it’s always tempting to push code sharing even further and utilize React Native capabilities to build both mobile and web applications from a single codebase. While many websites already utilize the solution, developers working on those projects usually face problems and complexities trying to make their code performant, compatible, functional and accessible on all platforms. As you can imagine, these developers are usually not the happiest ones and actually, their retention becomes a big risk given their mobile and web know-how accumulation.
React Native Web is a good representation of all the high hopes developers put into React Native; yet instead of them being fulfilled, it has often led to misuse of the framework — resulting in many developers getting burned and vowing not to touch it again. But with the latest innovations around the corner, even the hardest deniers may come back to give it one more chance.
At STRV, we reevaluate the multi-platform approach every year and scan the landscape for solutions that would make it easier to develop and maintain. Though still too early for production, 2023 finally feels like we may experience the React Native Web renaissance with new solutions for sharable routing and UI. The above-mentioned Expo Router (opens in a new tab) has the potential to provide unified routing for both web and mobile, and the recent release of Tamagui v1.0 (opens in a new tab) offers a performant, shareable UI and styling solution. Moreover, React Native 0.71 (opens in a new tab) brings many web and mobile API unification improvements, answering the community’s demand for reduced compromises which are inevitable when building web with React Native. Let’s try and see.
At STRV, we’ve pretty much moved all React Native development to the modern Expo set of tools, starting with Expo dev clients (opens in a new tab) and config plugins (opens in a new tab) for bringing any iOS or Android dependencies, all the way to Expo Application Services (opens in a new tab) (EAS) — allowing fast builds and credentials management. While I wrote about it as a trend for 2022 (opens in a new tab), 2023 shows that it’s undeniably become the most efficient way to build a React Native application.
With a clearly defined path forward, our team will finally be focusing on establishing best practices and a knowledge base for React Native development, subsequently sharing it with our team members.
In 2023, the community will benefit from two face-to-face conferences: App.js (May 10-12) in Krakow, which is expected to be a blast like last year, and Chain React (May 17-19) in Portland, Oregon, which is returning after a long break.
Thanks to the high demand for React Native projects, we have also decided to share our newly gathered know-how and organize two meetups ourselves, one in Brno (Feb. 14) and one in Prague (Feb. 16).
React Native Skia has been actively developed (opens in a new tab) and this year, we might get V1 and see bigger adoption. The new architecture is expected to unlock many innovations, from much faster Android and iOS builds (opens in a new tab) to even faster list libraries, such as WishList (opens in a new tab). Bundling in React Native has been ripe for innovation and it finally seems that the default Metro bundler will get improvements (opens in a new tab). Expo-image (opens in a new tab) is going to bring modern image formats and loading techniques the web has utilized for years already. All in all, speed is the common denominator.
While the longevity of frontend technologies is always in question, React Native is here to stay. With strong investments from Meta, Microsoft and Shopify, the best is yet to come. In the current macroeconomic situation, React Native’s cost efficiency and speed of development are ever-attractive for our clients, yet one still has to be realistic and expect potential compromises and limits — which native iOS and Android solutions just do not have to face. That is why we are so excited about 2023 when, once again, many of those limits and compromises will be broken.© Aron BerezkinRSS