Expo has been working closely with the React Native team at Meta to support several of the largest React Native apps in the world in adopting the New Architecture. While we can’t share details of all apps, we’ve seen apps that have experienced significant performance improvements, while others have been more performance neutral. In other cases, app developers have encountered regressions in performance.
These reports often turn out to be unrelated, caused by changes to their app that were coincidentally bundled with their New Architecture release. But there were certainly some legitimate performance regressions that we discovered. Thankfully, those have almost all been resolved over recent releases. There are several remaining that occur in specific circumstances that may or may not impact your app, and there are mitigations available:
- facebook/react-native#52314: This issue blocked Bluesky from migrating in June, but it is now resolved in React Native 0.81 with the use of an experimental flag. If you have a header in your Android app that animates in response to a scroll gesture, then we recommend enabling this fix. You can do this by setting
android.reactNativeReleaseLeveltoexperimentalwith expo-build-properties. - facebook/react-native#51869: This issue only impacts debug builds on Android. In a future React Native release, it will be improved by using
debugOptimizedbuild variants. In the meantime, using the experimentalreactNativeReleaseLevelmentioned above includes other mitigations. - facebook/react-native#52373: This issue is a bit different in that it does not result in dropped frames, but it may create that perception because an intermediate state is rendered.
Both the Meta and Software Mansion teams have been working on definitively resolving these issues. We believe that these issues, in particular with the available mitigations, are not blockers for almost any app.