The most recent release of Expo had some big changes and a couple of surprises.
Let’s take a deeper look at what changed.
It’s a big one, going from RN59 to RN61 represents around 6 months of changes from the library at Expo’s core.
Expo highlight Fast Refresh, Accessibility improvements and React 16.9 but there’s a lot more going on.
You might expect that Hermes is included since it was released in RN60 but in actual fact it has not been enabled and looks like it’s set for a SDK37 release https://github.com/expo/expo/issues/4927
WebView and NetInfo and Geolocation have now been removed from React Native. If you were importing the WebView from
'react-native' and not
'react-native-webview' then its time to change it.
useWindowDimensions Hook which looks like a nicer way to handle subscriptions to the device dimensions.
Bare and ExpoKit users
Another big change which wasn’t mentioned in the release notes is AndroidX support. Anyone in Managed Workflow wont need to think about this since Expo have looked after the native libraries for you. It may mean that external libraries in ejected apps will break though!
Native Modules are now auto linked so no more need for
react-native link when adding new libraries.
Third party libs
There are a ton here so I’ll try be brief. It’s from my viewpoint so sorry if I overlook something important to you.-context
@react-native-community/masked-view — This is something I would definitely use. Allows for clipping a view with another view and will open up some fresh designs.
@react-native-community/viewpager — A way to navigate between pages using native animation — will be interesting to see how this affects the use of react-navigation
@react-native-community/datetimepicker — Personally I’m not the biggest fan of Android native date time picker but it’s good that it’s now available in Expo
react-native-appearance on Android and Web — Allows you to react to dark mode settings on the user’s device. This was already available in SDK35 but it seems it only worked with iOS
@react-native-community/netinfo — mainly androidX support and bug fixes
react-native-branch — mainly androidX support and bug fixes
react-native-gesture-handler — mainly bug fixes
react-native-maps — heatmaps, more event listeners and default GeoJSON support
react-native-reanimated — web support and bug fixes
react-native-svg — loads of versions, take a look if you’re interested https://github.com/react-native-community/react-native-svg/releases
react-native-view-shot — mainly bug fixes
react-native-webview — quite a few bug fixes and new props to access functionality. If you’ve been struggling with a webview bug then this will make you happy https://github.com/react-native-community/react-native-webview/releases
react-native-safe-area-context — Nested providers support
react-native-screens —looks like some good stuff is happening, no release notes though https://github.com/kmagiera/react-native-screens/compare/2.0.0-alpha.8...master
The elephant in the room 🐘
Many people are waiting to migrate from ExpoKit to Bare Workflow. It’s the official recommendation of Expo to not eject to ExpoKit but there isn’t feature parity. OTA updates and notifications were included in the SDK36 project on Github and were expected to be available in this release.
On the bright side, they are now in code review state which hopefully means they won’t be delayed any longer than SDK37. Here’s a link to the project so you can keep tabs on it https://github.com/orgs/expo/projects/5
There are a ton of other changes I haven’t detailed here. Let me know in the comments if there’s something important that I didn’t include so I can add it in. The full change log is here: https://github.com/expo/expo/blob/master/CHANGELOG.md