Skip to content

Upgrade to Expo 58 - #1271

Open
kevinherdez wants to merge 1 commit into
NWACus:mainfrom
kevinherdez:kevinherdez/expo58
Open

kevinherdez wants to merge 1 commit into
NWACus:mainfrom
kevinherdez:kevinherdez/expo58

Conversation

@kevinherdez

@kevinherdez kevinherdez commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

This updates the repo to Expo 58. With Expo 58, we're upgrading to RN 0.88 and most of the changes stem from changes in type declarations

Big Changes

View types in RN are now functional components

In RN 0.88 view types are now functional components. This means that the views themselves can no longer be used with useRef. Instead, the built in types now come with an *Instance instance type that can be passed to the refs. For example, ScollView has a ScrollViewInstance that's used to pass to the useRef.

As lot of changes are adding the necessary types.

Image.resolveAssetSource -> resolveAssetSource

Image.resolveAssetSource can now be undefined. A new helper, resolveAssetSource, and type, BundledAssetSource were added so that fetching and unwrapping our assets happens in 1 place. This ensures that assets that we reference in code always have the properties we expect and the individual call sites don't need to worry about unwrapping

Deliberate Package Changes

This PR changes a few packages either through upgrades or replacing unmaintained packages

  • @rnmapbox/maps upgraded to 10.3.11. This fixed a crash in the new Expo
  • react-native-render-html was replaced with @html-native/render
    • It's a drop in replacement now that react-native-render-html is no longer maintained
  • @expo/vector-icons was replaced with react-native-vector-icons
    • This is a change expo recommends https://expo.dev/blog/moving-away-from-expo-vector-icons. One big thing to call out here is that we are now static bundling the icons. This is an optimization so that there's never a delay to load the icons. However, it means that if we want to change icon sets, we'll need to do a new build for it
  • Adding @expo/ui
    • This was done mainly to replace @react-native-segmented-control/segmented-control. However, this is a modern UI package from expo that has a lot of built in SwiftUI (iOS)/Jetpack Compose (Android) native components that could be worthwhile to slowly migrate to

UI Changes

On Android, there's a big UI change with the segmented control now that it's using a native, material UI style, component.

Before After
146 145

Other Changes

The remaining changes fix either deprecated code or make changes to syntax based on upgrades in the package


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant