Upgrade Project to Expo 56#1189
Conversation
|
sorry im late to the party, none of these are blocking - up to you if you want to follow up on any or not 🙂 (AI helped!)
Suggestion to consider a shared helper like:
This is the standard approach, but react-native-reanimated/mock was deprecated in Reanimated 3+. The recommended mock is react-native-reanimated/src/mocks/mock or using jest-setup.js from their docs. Check if tests actually run correctly with this.
|
The change here is to match |

This PR bumps the project up to Expo 56 (the current expo!) as well as includes other project improvements.
Expo 54 Upgrade
The main changes involved updating the imports for
expo-file-systemand pulling inreact-native-workletsto go alongsidereact-native-reanimatedAndroid Edge-to-Edge
Updates views to support Android's Edge-to-Edge display which allows views to take up the full screen. Most of the changes involved setting
statusBarTranslucenton modals and fixing thekeyboardAvoidingViewExpo 55 Upgrade
Very straightforward upgrade. It worked without needing to change any code.
Remove NWAC Obs code
This code isn't being used anymore.
Removed 2 patched dependencies
react-native-tab-viewis fixed as of the latest version so it no longer requires a patch.react-native-collapsibleis no longer being updated. I was able to use Claude to create our own custom component that does the same thing so that we could remove the dependencyExpo 56
Splash screen changes
Expo removed the
splashoption from the config and moved it to a plugin. We can no longer access the splash properties by doingConstants.expoConfig?.splash?....Typescript 6
Expo 56 introduces Typescript 6 to the repo. The main changes here is that in the
ts.configbaseURLis deprecated and replaced bypaths:. The bigger breaking change was that@types/jestglobals were not auto-included which resulted in breaking changes to our tests. The fix here (that Claude added) was to add a specific reference to@types/jestindeclarations.d.tsReact Native 0.85
The new React Native changed
StyleSheet.absoluteFillObjecttoStyleSheet.absoluteFill. This was updated in 5 files.iOS only: Xcode 26.4 introduces breaking changes for React Native which meant that we couldn't compile the app using newer versions of Xcode. Starting with Expo 56, the app now must be compiled on Xcode 26.4+
Upgrade
rnmapbox/mapsandreact-native-posthogrnmapbox/mapsWhen we added
rnmapboxto the repo, there was issue with the EAS build preventing us from moving on from version 10.1.45. The issue stemmed from"RNMapboxImpl": "mapbox"being removed from the config options but EAS not being able to resolve it. That issue seems to be fixed so I updated to the latest version, 10.3.1react-native-posthogThis should have been done as a part of the Expo 54 bump, but I didn't notice it until I did an EAS dev build. The old version we were on was still using the deprecated
writeAsStringAsyncfromexpo-file-system. The bump to the latest version fixes that, but the main methods that we use like.screen(),.capture(), etc changed their signature to now beasyncand return aPromise. As a result, these needed to be updated