Skip to content

build(deps): Bump expo react native and deps to expo 55#13576

Merged
gkartalis merged 16 commits into
mainfrom
gkartalis/bump-expo
May 20, 2026
Merged

build(deps): Bump expo react native and deps to expo 55#13576
gkartalis merged 16 commits into
mainfrom
gkartalis/bump-expo

Conversation

@gkartalis
Copy link
Copy Markdown
Member

@gkartalis gkartalis commented May 13, 2026

This PR resolves PHIRE-3069

Description

Bumps Expo SDK 54 → 55 and React Native 0.81.5 → 0.83.6, plus the surrounding ecosystem and native toolchain.

Non-standard changes (beyond what expo upgrade / RN upgrade helper produces)

These are the manual interventions worth flagging for reviewers — none of them come out of the upgrade helpers, they were hand-rolled for specific issues we hit:

  • android/settings.gradlejcenter() compatibility shim. Gradle 9 removed jcenter() entirely, but several transitive node_modules still reference it. Rather than patching each one, a gradle.beforeProject shim redefines jcenter() to point at https://jcenter.bintray.com/.
  • scripts/utils/clean — wipe app/.cxx and app/build/generated before gradlew clean. Under RN New Arch, the CMake regenerate step runs during Gradle configuration and references codegen dirs that clean itself is about to delete, so the script was failing without this pre-step.
  • New Segment patch (2.22.0). Even on the latest version, @segment/analytics-react-native still instantiates a legacy ReactNativeHost, which is gone under New Arch in 0.83. Patch keeps it working until segmentio/analytics-react-native#1146 lands.
  • MainApplication.kt — manual migration to ExpoReactHostFactory.getDefaultReactHost. Helper doesn't migrate this because we had a custom ArtsyNativePackage() registered via the old ReactNativeHostWrapper + DefaultReactNativeHost path; redone by hand.
  • android/app/build.gradlegetRuntimeVersion() now reads app.json directly via JsonSlurper instead of shelling out to node ../../scripts/deploys/expo-updates/get-runtime-version.js. Faster Gradle config + one less Node dependency in the Android build.
  • tsconfig.json — added "types": ["jest"]. RN 0.83's bundled types pulled in globals that conflicted with our test setup; this scopes type roots to just Jest.
  • src/app/Scenes/Map/Components/PinsShapeLayer.tsxonPress typed as any. @rnmapbox/maps 10.3.0 stopped re-exporting OnPressEvent from its lib/typescript/src/types/OnPressEvent path; left a // TODO until upstream re-exposes it.
  • Info.plist tweaks. Added CADisableMinimumFrameDurationOnPhone=true (enables ProMotion 120Hz) and removed UIDesignRequiresCompatibility (legacy iOS 26 liquid-glass opt-out — not needed on RN 0.83).
  • Dropped legacy com.android.support:support-core-utils:24.2.1 from android/app/build.gradle — it was a pre-AndroidX holdover.
  • CI cache invalidation.
    • CircleCI: every cache version prefix in .circleci/config.yml was bumped (node_modules v29→v30, gems v13→v14, pods v31→v32, ios_build v30→v31, android_build v16→v17, ios_native v20→v21, android_native v20→v21).
    • GitHub Actions: cache keys bumped in setup-android-environment, setup-ios-environment, setup-javascript-environment composite actions.
    • The Expo build-cache S3 layer auto-invalidates via fingerprint change — no action needed there.
  • HACKS.md — removed the expo-updates patch note (upstream fixed), added the Segment patch note.

Updated dependencies (for visibility)

Runtime

Package From To
expo 54.0.20 ^55.0.0
expo-build-properties ~1.0.10 55.0.13
expo-navigation-bar 5.0.10 55.0.12
expo-updates 29.0.11 (patched) 55.0.21 (unpatched)
react 19.1.0 19.2.0
react-native 0.81.5 (patched) 0.83.6 (patched)
react-native-gesture-handler 2.28.0 2.30.0
react-native-screens 4.16.0 4.23.0
react-native-safe-area-context 5.6.1 (patched) 5.6.2 (patched)
react-native-svg 15.14.0 15.15.3
react-native-webview 13.15.0 13.16.0
react-native-worklets 0.7.2 0.7.4
@react-native-community/netinfo 11.4.1 11.5.2
@react-native-google-signin/google-signin 15.0.0 16.1.2
@rnmapbox/maps 10.1.44 10.3.0
@segment/analytics-react-native 2.21.3 2.22.0 (patched)
@stripe/stripe-react-native 0.50.3 0.63.0

Dev / tooling

Package From To
@react-native/babel-preset 0.81.5 0.83.6
@react-native/eslint-config 0.81.5 0.83.6
@react-native/metro-config 0.81.5 0.83.6
@react-native/typescript-config 0.81.5 0.83.6
@babel/core 7.25.2 7.26.0
@types/react 19.0.14 / 19.1.0 19.2.10
react-dom 19.1.0 19.2.0
react-test-renderer 19.1.0 19.2.0
typescript 5.8.3 5.9.2
babel-preset-expo (dev) 14.0.0 (moved to runtime deps)
metro-config 0.81.5 removed

Native toolchain

Tool From To
Gradle wrapper 8.14.3 9.0.0
Android enableJetifier true false
Android jcenter() present removed (with runtime shim)
iOS deployment target 16.6 16.6 (unchanged)

Follow ups

PR Checklist

  • I have tested my changes on the following platforms:
    • Android.
    • iOS.
  • I hid my changes behind a feature flag, or they don't need one.
  • I have included screenshots or videos at least on Android, or I have not changed the UI.
  • I have added tests, or my changes don't require any.
  • I added an app state migration, or my changes do not require one.
  • I have documented any follow-up work that this PR will require, or it does not require any.
  • I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

  • I would like at least one of the reviewers to run this PR on the simulator or device.
Changelog updates

Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

  • bump expo react native and deps for expo 55

Need help with something? Have a look at our docs, or get in touch with us.

@gkartalis gkartalis self-assigned this May 13, 2026
@MounirDhahri
Copy link
Copy Markdown
Member

Nice it's definitely faster to start this from scratch than to build on top of the other PR. I will close the old one

@gkartalis gkartalis force-pushed the gkartalis/bump-expo branch from 98b4a7f to c75eb3e Compare May 13, 2026 15:14
@artsy artsy deleted a comment from ArtsyOpenSource May 13, 2026
@artsy artsy deleted a comment from ArtsyOpenSource May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 13, 2026

🎉 Beta Versions Generated (commit: b13dd30)

iOS 🍏

  • 9.9.0 (2026.05.13.15.49) - Available on Firebase
  • 9.9.0 (2026.05.13.15.49) - Available on TestFlight

Android 🤖

  • 9.9.0 (2026051315) - Available on Firebase
  • 9.9.0 (2026051315) - Available on Play Store

@gkartalis
Copy link
Copy Markdown
Member Author

Screenshot 2026-05-13 at 18 15 27

without cache - cleared everything before that

@artsy artsy deleted a comment from ArtsyOpenSource May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 13, 2026

🎉 Beta Versions Generated (commit: 4a24ae3)

Android 🤖

  • 9.9.0 (2026051316) - Available on Firebase
  • 9.9.0 (2026051316) - Available on Play Store### iOS 🍏
  • 9.9.0 (2026.05.13.16.25) - Available on Firebase
  • 9.9.0 (2026.05.13.16.23) - Available on TestFlight

@gkartalis
Copy link
Copy Markdown
Member Author

with cache:
Screenshot 2026-05-13 at 19 00 28

@MounirDhahri
Copy link
Copy Markdown
Member

WOOW 🔥 who would have guessed that we will get here some day 😄

<dict>
<key>AppIdentifierPrefix</key>
<string>$(AppIdentifierPrefix)</string>
<key>CADisableMinimumFrameDurationOnPhone</key>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice

@artsy artsy deleted a comment from ArtsyOpenSource May 19, 2026
gkartalis added 14 commits May 19, 2026 10:35
…and react-native to version 0.83.6 with corresponding patches
- upgraded @react-native-google-signin/google-signin from 15.0.0 to 16.1.2
- upgraded @rnmapbox/maps from 10.1.44 to 10.3.0
- upgraded @stripe/stripe-react-native from 0.50.3 to 0.63.0
- added @types/react-test-renderer@19.1.0
- removed babel-preset-expo@14.0.0 and updated to ~55.0.21
- updated peer dependencies for @rnmapbox/maps and @stripe/stripe-react-native
- removed unused dependencies from yarn.lock
@gkartalis gkartalis force-pushed the gkartalis/bump-expo branch from 5cb45bc to 4ac2da1 Compare May 19, 2026 08:35
@artsy artsy deleted a comment from ArtsyOpenSource May 19, 2026
- Bump @rnmapbox/maps from 10.3.0 to 10.3.1
- Update expo and related packages to latest patch versions:
  - expo: 55.0.24
  - expo-build-properties: 55.0.14
  - expo-navigation-bar: 55.0.13
  - expo-updates: 55.0.22
- Upgrade react-native-image-crop-picker from 0.51.0 to 0.51.1
- Update @expo/cli from 55.0.29 to 55.0.30
- Update @expo/config and @expo/config-plugins to latest minor versions
@artsy artsy deleted a comment from ArtsyOpenSource May 19, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 19, 2026

🎉 Beta Versions Generated (commit: d3dfa49)

iOS 🍏

  • 9.9.0 (2026.05.19.12.42) - Available on Firebase
  • 9.9.0 (2026.05.19.12.42) - Available on TestFlight

Android 🤖

  • 9.9.0 (2026051912) - Available on Firebase
  • 9.9.0 (2026051912) - Available on Play Store

@MounirDhahri
Copy link
Copy Markdown
Member

@gkartalis please let me know when I can review this 👀

araujobarret
araujobarret previously approved these changes May 20, 2026
Copy link
Copy Markdown
Contributor

@araujobarret araujobarret left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks solid, thanks for addressing it! 💪
Left minor comments only

Comment thread android/gradle.properties
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
android.enableJetifier=false
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does that mean we don't have any lib using something < AndroidX? 😄

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

crazy time right!

Comment thread android/settings.gradle
MounirDhahri
MounirDhahri previously approved these changes May 20, 2026
Copy link
Copy Markdown
Member

@MounirDhahri MounirDhahri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome - thanks for doing this

@MounirDhahri
Copy link
Copy Markdown
Member

@gkartalis could you please confirm that you can build the app with the latest Xcode 26.5 ? the build is failing for me locally

I believe it's succeding on older version (just like on CI)

@gkartalis
Copy link
Copy Markdown
Member Author

@gkartalis could you please confirm that you can build the app with the latest Xcode 26.5 ? the build is failing for me locally

This is a really common case for latest xcode versions, 26.5 was released 9 days ago - the react native repo will probably address this issue at some point but most of us are not using this version cause it is pretty new so I would downgrade for now

MrSltun
MrSltun previously approved these changes May 20, 2026
Copy link
Copy Markdown
Member

@MrSltun MrSltun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀🚀🚀

Copy link
Copy Markdown
Contributor

@dariakoko dariakoko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 🚒

dariakoko
dariakoko previously approved these changes May 20, 2026
@MounirDhahri
Copy link
Copy Markdown
Member

Yes, I agree with that. I actually also couldn’t build the current main when I was on 26.4 because of fmt issues and this upgrade fixes it for me.

It sucks though that we will need a patch to be able to build with xcode 26.5 or we need to use a lower version. i like to upgrade to test the app on latest iOS and quite often I need to also upgrade Xcode for that. Anyway this is not a blocker and I think we can already merge this

@artsy artsy deleted a comment from ArtsyOpenSource May 20, 2026
@ArtsyOpenSource
Copy link
Copy Markdown
Contributor

This PR contains the following changes:

  • Dev changes (bump expo react native and deps for expo 55 - gkartalis)

Generated by 🚫 dangerJS against c7414d8

@gkartalis gkartalis merged commit da300e0 into main May 20, 2026
11 checks passed
@gkartalis gkartalis deleted the gkartalis/bump-expo branch May 20, 2026 15:42
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.

6 participants