Skip to content

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

Open
gkartalis wants to merge 13 commits into
mainfrom
gkartalis/bump-expo
Open

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

Conversation

@gkartalis
Copy link
Copy Markdown
Member

@gkartalis gkartalis commented May 13, 2026

This PR resolves []

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 added 10 commits May 13, 2026 17:09
…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 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
@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 4a24ae3

@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

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.

3 participants