Skip to content

chore(deps): upgrade all apps to RN 0.84.0 and Expo SDK 55#398

Closed
ignaciosantise wants to merge 6 commits intomainfrom
chore/upgrade-expo-rn
Closed

chore(deps): upgrade all apps to RN 0.84.0 and Expo SDK 55#398
ignaciosantise wants to merge 6 commits intomainfrom
chore/upgrade-expo-rn

Conversation

@ignaciosantise
Copy link
Collaborator

Summary

  • Expo apps (appkit-expo-wagmi, pos-app, poc-pos-app, expo-wallet): SDK 54 → 55, RN → 0.84.0, React → 19.2.4
  • W3MEthers & W3MEthers5: RN 0.73.4 → 0.84.0, modernized native code (Gradle 9.0, compileSdk 36, removed Flipper)
  • W3MWagmi: RN 0.81.4 → 0.84.0, removed Expo integration
  • W3MEthers: removed expo, @coinbase/wallet-mobile-sdk, @reown/appkit-coinbase-react-native
  • rn_cli_wallet: RN 0.82.0 → 0.84.0
  • Removed deprecated app.json fields (newArchEnabled, edgeToEdgeEnabled, predictiveBackGestureEnabled)

Native code changes (W3MEthers, W3MEthers5)

  • Android: new pluginManagement/autolinkLibrariesFromCommand() pattern, Gradle 9.0, Kotlin 2.1.20, compileSdk/targetSdk 36
  • iOS: modern node_require Podfile pattern, removed Flipper references
  • Removed Flipper integration from both platforms

Expo removal (W3MEthers, W3MWagmi)

  • Removed use_expo_modules! / expo_patch_react_imports! from Podfile
  • Removed useExpoModules() from Android settings.gradle
  • Removed ReactActivityDelegateWrapper, ReactNativeHostWrapper, ApplicationLifecycleDispatcher from Kotlin
  • Replaced expo/metro-config with @react-native/metro-config
  • Changed AppDelegate bundle root from .expo/.virtual-metro-entry to index

Test plan

  • npx expo-doctor passes on all 4 Expo apps (expected minor mismatch: RN 0.84.0 vs Expo 55's bundled 0.83.2)
  • Metro bundler starts without errors for each app
  • iOS build succeeds for each app (after pod install)
  • Android build succeeds for each app
  • Verify WalletConnect flows still work end-to-end

🤖 Generated with Claude Code

- Expo apps (appkit-expo-wagmi, pos-app, poc-pos-app, expo-wallet): SDK 54 → 55, RN 0.84.0, React 19.2.4
- Bare RN apps (W3MEthers, W3MEthers5): RN 0.73.4 → 0.84.0, modernized native code (Gradle 9.0, SDK 36, removed Flipper)
- W3MWagmi: RN 0.81.4 → 0.84.0, removed Expo integration
- W3MEthers: removed Expo, Coinbase SDK, and @reown/appkit-coinbase-react-native
- rn_cli_wallet: RN 0.82.0 → 0.84.0
- Removed deprecated app.json fields (newArchEnabled, edgeToEdgeEnabled, predictiveBackGestureEnabled)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings February 27, 2026 14:24
@vercel
Copy link

vercel bot commented Feb 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
react-native-examples Ready Ready Preview, Comment Feb 27, 2026 3:21pm

Request Review

@claude
Copy link

claude bot commented Feb 27, 2026

Claude finished @ignaciosantise's task in 5m 51s —— View job


PR Review: chore(deps): upgrade all apps to RN 0.84.0 and Expo SDK 55

  • Gather context and read CLAUDE.md
  • Analyze changed files
  • Run license compliance check (subagent)
  • Run breaking changes check (subagent)
  • Run data classification check (subagent)
  • Compile and post final review

🚨 PR Too LargeFiles: 43 Lines: +13,651/−19,253 Severity: HIGH Category: maintainability

This PR bundles 6 distinct concerns. Suggested split:

  • PR 1: Expo apps SDK 54→55 — dapps/appkit-expo-wagmi, dapps/poc-pos-app, dapps/pos-app, wallets/expo-wallet
  • PR 2: W3MEthers + W3MEthers5 native upgrade (Gradle 9, compileSdk 36, Expo removal) — dapps/W3MEthers/**, dapps/W3MEthers5/**
  • PR 3: W3MWagmi upgrade + Expo removal — dapps/W3MWagmi/**
  • PR 4: rn_cli_wallet RN 0.82→0.84 — wallets/rn_cli_wallet/**

Found 5 issue(s)

Issue 1: React major version bump 18 → 19 without audit

ID: brk-packagejson-react-major-version-f1a9
File: All package.json files
Severity: HIGH
Category: breaking_change

Context:

  • Pattern: react bumped from 18.x to 19.2.4 across all apps. React 19 removes defaultProps on function components, string refs, legacy contextTypes/childContextTypes, and changes act() semantics.
  • Risk: Any @reown/appkit-* or third-party package that only declares React 18 as peer dependency, or that uses removed APIs, will break at runtime.
  • Impact: Silent runtime failures or peer dependency warnings across all example apps.
  • Trigger: At app startup if any consumed library uses React 18-only APIs.

Recommendation: Verify all @reown/appkit-* packages (pinned at 2.0.1/2.0.2) declare React 19 as valid peer dependency before merging.


Issue 2: Node.js minimum raised to 20 without CI config update evidence

ID: brk-packagejson-node-engine-requirement-a3f2
File: dapps/W3MEthers/package.json:54, dapps/W3MEthers5/package.json:53, dapps/W3MWagmi/package.json:76, etc.
Severity: MEDIUM
Category: breaking_change

Context:

  • Pattern: "engines": { "node": ">=20" } set across all apps (previously >=18).
  • Risk: CI pipelines or developer environments pinned to Node 18 will fail yarn install / npm install under strict engine checking, or encounter Metro bundler errors.
  • Impact: Blocked builds for any contributor or CI runner using Node 18.
  • Trigger: On yarn install with --frozen-lockfile or strict engine mode.

Recommendation: Ensure .nvmrc, .node-version, .tool-versions, and any .github/workflows/*.yml files are updated to Node 20.


Issue 3: Android minSdkVersion raised from 23 to 24

ID: brk-buildgradle-minsdk-version-raise-b7c1
File: dapps/W3MEthers/android/build.gradle:5, dapps/W3MEthers5/android/build.gradle:5
Severity: MEDIUM
Category: breaking_change

Context:

  • Pattern: minSdkVersion raised from 23 (Android 6.0) to 24 (Android 7.0).
  • Risk: Android 6.0 devices/emulators can no longer install these apps.
  • Impact: CI jobs using API 23 AVDs will fail at install time with INSTALL_FAILED_MIN_SDK_VERSION.
  • Trigger: APK installation on any device/emulator running API 23 or below.

Recommendation: Update CI AVD configurations to API 24+. This is consistent with RN 0.84's own minimum requirement.


Issue 4: Gradle major version 8.3 → 9.0.0

ID: brk-gradlewrapper-gradle-major-version-d4e8
File: dapps/W3MEthers/android/gradle/wrapper/gradle-wrapper.properties:3, dapps/W3MEthers5/android/gradle/wrapper/gradle-wrapper.properties:3
Severity: MEDIUM
Category: breaking_change

Context:

  • Pattern: Gradle wrapper bumped from gradle-8.3-bin.zip to gradle-9.0.0-bin.zip.
  • Risk: Gradle 9.0 removed deprecated APIs from 8.x. Any Gradle plugin not yet updated for 9.0 compatibility will produce build errors.
  • Impact: ./gradlew assembleRelease failures if any plugin (e.g., AGP, Sentry Gradle plugin) hasn't declared Gradle 9 support.
  • Trigger: First Android build after pulling this branch.

Recommendation: Verify com.android.tools.build:gradle AGP version and io.sentry.android.gradle are Gradle 9 compatible before merging.


Issue 5: Unused mergeConfig import in metro.config.js

ID: w3mwagmi-metro-unused-import-c3a1
File: dapps/W3MWagmi/metro.config.js:2
Severity: LOW
Category: code_quality

Context:

  • Pattern: const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config')mergeConfig is imported but never called; config is passed directly to withSentryConfig(config).
  • Risk: Dead code that misleads readers into thinking config merging is occurring.
  • Impact: Minor maintainability noise.

Recommendation:

const {getDefaultConfig} = require('@react-native/metro-config');

License compliance: ✅ No issues — only new dependency added is react-native-mmkv (MIT)

Data classification: ✅ No hardcoded credentials or PII found

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This is a comprehensive upgrade PR that updates multiple React Native apps to version 0.84.0, Expo SDK from 54 to 55, and React from various versions to 19.2.4. The PR includes significant native code modernization for Android (Gradle 9.0, Kotlin 2.1.20, compileSdk 36) and iOS (modern Podfile patterns, Flipper removal), plus the removal of Expo dependencies from W3MEthers and W3MWagmi apps.

Changes:

  • Upgraded 8 apps to React Native 0.84.0 and React 19.2.4
  • Upgraded 4 Expo apps to SDK 55 with all related dependencies
  • Removed Expo integration from W3MEthers and W3MWagmi, converting them to pure React Native apps
  • Modernized Android build configuration (Gradle 9.0, Kotlin 2.1.20, compileSdk/targetSdk 36, new autolinking pattern)
  • Updated iOS configuration with modern Podfile patterns and removed Flipper
  • Removed deprecated app.json fields (newArchEnabled, edgeToEdgeEnabled, predictiveBackGestureEnabled)

Reviewed changes

Copilot reviewed 35 out of 43 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
wallets/rn_cli_wallet/package.json Upgraded React Native to 0.84.0, React to 19.2.4, and related RN tooling
wallets/rn_cli_wallet/yarn.lock Lock file updates reflecting dependency upgrades
wallets/expo-wallet/package.json Upgraded to Expo SDK 55, RN 0.84.0, React 19.2.4
wallets/expo-wallet/app.json Removed deprecated fields, added expo-image and expo-web-browser plugins
dapps/pos-app/package.json Upgraded to Expo SDK 55, RN 0.84.0, React 19.2.4, added expo-crypto
dapps/pos-app/app.json Removed deprecated fields, added @sentry/react-native and expo-image plugins
dapps/poc-pos-app/package.json Upgraded to Expo SDK 55, RN 0.84.0, React 19.2.4
dapps/poc-pos-app/app.json Removed deprecated fields, added @sentry/react-native and expo-image plugins
dapps/appkit-expo-wagmi/package.json Upgraded to Expo SDK 55, RN 0.84.0, React 19.2.4
dapps/appkit-expo-wagmi/app.json Removed deprecated fields, added expo-font and expo-image plugins
dapps/W3MWagmi/package.json Upgraded to RN 0.84.0, React 19.2.4, removed expo and coinbase dependencies
dapps/W3MWagmi/metro.config.js Changed from expo/metro-config to @react-native/metro-config with Sentry
dapps/W3MWagmi/ios/Podfile Removed expo integration (use_expo_modules, expo_patch_react_imports)
dapps/W3MWagmi/app.json Removed Sentry Expo plugin configuration
dapps/W3MWagmi/android/settings.gradle Removed Expo autolinking, added modern React Native autolinking
dapps/W3MWagmi/android/gradle.properties Removed newArchEnabled and edgeToEdgeEnabled properties
dapps/W3MWagmi/android/app/build.gradle Removed Expo-specific build configuration
dapps/W3MEthers5/package.json Upgraded to RN 0.84.0, React 19.2.4, modernized dependencies
dapps/W3MEthers5/ios/Podfile Modernized with node_require pattern, removed Flipper
dapps/W3MEthers5/android/settings.gradle Added modern pluginManagement and autolinking pattern
dapps/W3MEthers5/android/gradle/wrapper/gradle-wrapper.properties Upgraded to Gradle 9.0.0-bin
dapps/W3MEthers5/android/gradle.properties Removed newArchEnabled and android.enableJetifier
dapps/W3MEthers5/android/build.gradle Updated to Gradle 9.0, Kotlin 2.1.20, compileSdk 36
dapps/W3MEthers5/android/app/src/main/java/com/web3modalethers5/MainApplication.kt Removed Flipper initialization
dapps/W3MEthers5/android/app/build.gradle Added autolinkLibrariesWithApp, updated JSC flavor, removed Flipper
dapps/W3MEthers/package.json Upgraded to RN 0.84.0, React 19.2.4, removed expo and coinbase dependencies
dapps/W3MEthers/metro.config.js Changed from expo/metro-config to @react-native/metro-config
dapps/W3MEthers/ios/Podfile Modernized with node_require pattern, removed Expo and Flipper
dapps/W3MEthers/ios/AppDelegate.mm Changed bundle root from .expo/.virtual-metro-entry to index
dapps/W3MEthers/android/settings.gradle Added modern pluginManagement, removed Expo autolinking
dapps/W3MEthers/android/gradle/wrapper/gradle-wrapper.properties Upgraded to Gradle 9.0.0-bin
dapps/W3MEthers/android/gradle.properties Removed newArchEnabled and android.enableJetifier
dapps/W3MEthers/android/build.gradle Updated to Gradle 9.0, Kotlin 2.1.20, compileSdk 36
dapps/W3MEthers/android/app/src/main/java/com/web3modalethers/MainApplication.kt Removed Expo wrappers and Flipper
dapps/W3MEthers/android/app/src/main/java/com/web3modalethers/MainActivity.kt Removed ReactActivityDelegateWrapper from Expo
dapps/W3MEthers/android/app/build.gradle Added autolinkLibrariesWithApp, removed Expo config, updated JSC, removed Flipper

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

}
]
],
"@sentry/react-native",
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

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

Potential duplicate Sentry configuration: Both "@sentry/react-native/expo" (lines 63-70) and "@sentry/react-native" (line 133) plugins are listed. This could cause conflicts or unexpected behavior. Verify if both are needed, or if only one should be used. Typically, "@sentry/react-native/expo" is sufficient for Expo apps.

Copilot uses AI. Check for mistakes.
}
]
],
"@sentry/react-native",
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

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

Potential duplicate Sentry configuration: Both "@sentry/react-native/expo" (lines 63-70) and "@sentry/react-native" (line 119) plugins are listed. This could cause conflicts or unexpected behavior. Verify if both are needed, or if only one should be used. Typically, "@sentry/react-native/expo" is sufficient for Expo apps.

Copilot uses AI. Check for mistakes.
"@react-native/typescript-config": "0.84.0",
"@types/jest": "^29.5.13",
"@types/lodash.clonedeep": "^4.5.9",
"@types/react": "^19.1.1",
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

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

@types/react version inconsistency: rn_cli_wallet uses ^19.1.1 while React 19.2.4 is being used. Consider updating to ^19.2.10 for consistency with the Expo apps (expo-wallet, pos-app, poc-pos-app, appkit-expo-wagmi) and other upgraded apps (W3MEthers, W3MEthers5).

Copilot uses AI. Check for mistakes.
- Add expo.install.exclude for react, react-dom, react-native (intentional version overrides)
- Fix scheme "WPay" → "wpay" in pos-app and poc-pos-app (SDK 55 requires lowercase)
- Install missing peer deps in expo-wallet (@react-native-async-storage/async-storage, @react-native-community/netinfo)
- Rename conflicting "prettier" scripts to avoid shadowing the prettier binary

All 4 Expo apps now pass expo-doctor 17/17 checks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ignaciosantise and others added 2 commits February 27, 2026 12:03
Reanimated 4.1.3 and 4.2.1 are not compatible with React Native 0.84.0.
Updated to 4.2.2 in all 6 affected projects.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Required by react-native-reanimated 4.2.2 (peer dep >= 0.7.0).
W3MWagmi was on 0.5.2 which is incompatible.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Required for native module autolinking (pod install) in RN 0.84.
These were previously provided transitively by Expo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…Android

W3MWagmi:
- babel.config.js: replaced babel-preset-expo with @react-native/babel-preset
- MainActivity.kt: removed ReactActivityDelegateWrapper, use DefaultReactActivityDelegate
- MainApplication.kt: removed ReactNativeHostWrapper, ApplicationLifecycleDispatcher
- project.pbxproj: removed [Expo] Configure project build phases,
  ExpoModulesProvider.swift refs, EXPO_CONFIGURATION flags, Expo header paths

W3MEthers:
- project.pbxproj: removed [Expo] Configure project build phases,
  ExpoModulesProvider.swift refs, EXPO_CONFIGURATION flags

Also includes Podfile.lock updates from pod install for all 4 CLI projects.

Co-Authored-By: Claude Opus 4.6 <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.

2 participants