Skip to content

Update to react-native 0.79 - #6607

Merged
janicduplessis merged 68 commits into
developfrom
@janic/upgrade-rn
Aug 5, 2025
Merged

janicduplessis merged 68 commits into
developfrom
@janic/upgrade-rn

Conversation

@janicduplessis

@janicduplessis janicduplessis commented May 1, 2025

Copy link
Copy Markdown
Contributor

Fixes APP-####

What changed (plus any additional context for devs)

Here's a summary of the changes:

  • Apply changes from RN template project
  • Convert AppDelegate from objc to swift
  • Upgrade libraries incompatible with RN 0.79 to latest version, or add patches for the ones no updated
  • Update patches
  • Fix TS errors because of new TS types (useRef mostly)
  • Remove propTypes and defaultProps on function components since it is no longer supported in React 19
  • Fixes for breaking changes in RN skia new reconciler
  • Remove a few forwardRef usages

Screen recordings / screenshots

What to test

Everything 😅

@janicduplessis
janicduplessis force-pushed the @janic/upgrade-rn branch 3 times, most recently from 0f0b912 to e28145c Compare May 1, 2025 03:24
Comment thread package.json Outdated

const conditionalProps = shouldUseFasterImage
? {
key: `${typeof source === 'object' && source.uri ? source.uri : ''}` || undefined,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Key cannot be spread like this anymore in React 19

@janicduplessis
janicduplessis marked this pull request as ready for review June 2, 2025 16:14
@janicduplessis
janicduplessis force-pushed the @janic/upgrade-rn branch 3 times, most recently from 601bdb3 to 903386e Compare June 3, 2025 03:24
+++ b/node_modules/react-native-animateable-text/lib/typescript/src/index.d.ts
@@ -1,4 +1,4 @@
-declare const AnimateableText: import("react").FunctionComponent<import("react-native-reanimated").AnimateProps<Omit<import("react-native").TextProps, "children"> & {
+declare const AnimateableText: import("react").FunctionComponent<import("react-native-reanimated").AnimateProps<import("react-native").TextProps & {

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.

just curious - why do we need to stop removing children type?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

If I remember correctly this is due to a type change in React types that no longer automatically adds children. If we omit children here then the resulting type no longer had it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Possibly the React.FunctionComponent type

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for 0b3ee50

{...props}
key={`${typeof source === 'object' && source.uri ? source.uri : ''}` || undefined}
onError={this.props.onError}
onLoad={undefined}

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.

this line can be removed

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.

i suppose overwriting onLoad to undefined was intended 🤔 doubtful but we could leave it to err on the side of safety

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yea also not sure, just kind of ported the existing code 1 for 1 just in case it is actually needed.

@natew natew left a comment

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.

Overall looks good, and glad actually there's not so many js-level changes needed here which is great.

My two questions are:

One, I noticed there's quite a few propTypes left still in .js files, do we need to remove these?

CleanShot 2025-06-12 at 10 02 35@2x

Smaller, but I noticed we have old React 18 types in the design system docs. cc @christianbaroni do we want to update that alongside this?

Minus those the code looks good, going to test it on-device now.

@janicduplessis

Copy link
Copy Markdown
Contributor Author

For prop types I think I saw there are codemods around to convert it to typescript types so I wanted to keep them around if we want to do that eventually. They are just no longer checked, but don’t cause any issues.

@natew

natew commented Jun 12, 2025

Copy link
Copy Markdown
Contributor

Having trouble getting pods to install:

yarn ios
warn Package rn-fetch-blob contains invalid configuration: "dependency.hooks" is not allowed. Please verify it's properly linked using "npx react-native config" command and contact the package maintainers about this.
✔ Installing Ruby Gems
✖ Installing CocoaPods dependencies  (this may take a few minutes)
error Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
get_default_flags is deprecated. Please remove the keys from the `use_react_native!` function
if you are using the default already and pass the value you need in case you don't want the default
✖ Installing CocoaPods dependencies  (this may take a few minutes)
error Something when wrong while installing CocoaPods. Please run pod install manually.

And then:

cd ios
❯ pod install --repo-update
Using Expo modules
[Expo] Enabling modular headers for pod ExpoModulesCore
[Expo] Enabling modular headers for pod React-RCTAppDelegate
[Expo] Enabling modular headers for pod React-RCTFabric
[Expo] Enabling modular headers for pod ReactAppDependencyProvider
[Expo] Enabling modular headers for pod React-Core
[Expo] Enabling modular headers for pod RCT-Folly
[Expo] Enabling modular headers for pod glog
[Expo] Enabling modular headers for pod ReactCodegen
[Expo] Enabling modular headers for pod RCTRequired
[Expo] Enabling modular headers for pod RCTTypeSafety
[Expo] Enabling modular headers for pod ReactCommon
[Expo] Enabling modular headers for pod React-NativeModulesApple
[Expo] Enabling modular headers for pod Yoga
[Expo] Enabling modular headers for pod React-Fabric
[Expo] Enabling modular headers for pod React-graphics
[Expo] Enabling modular headers for pod React-utils
[Expo] Enabling modular headers for pod React-featureflags
[Expo] Enabling modular headers for pod React-debug
[Expo] Enabling modular headers for pod React-ImageManager
[Expo] Enabling modular headers for pod React-rendererdebug
[Expo] Enabling modular headers for pod DoubleConversion
[Expo] Enabling modular headers for pod React-jsi
[Expo] Enabling modular headers for pod React-renderercss
[Expo] Enabling modular headers for pod hermes-engine
[Expo] Enabling modular headers for pod React-hermes
[VisionCamera] Thank you for using VisionCamera ❤️
[VisionCamera] If you enjoy using VisionCamera, please consider sponsoring this project: https://github.com/sponsors/mrousavy
[VisionCamera] $VCEnableLocation is set to false!
[VisionCamera] $VCEnableFrameProcessors is not set, enabling Frame Processors if Worklets is installed...
[VisionCamera] react-native-worklets-core not found - Frame Processors are disabled!
Found 71 modules for target `Rainbow`
link_native_modules! {:ios_packages=>[{:configurations=>[], :name=>"react-native-ios-context-menu", :root=>"/Users/n8/rainbow/node_modules/react-native-ios-context-menu", :path=>"../node_modules/react-native-ios-context-menu", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-ios-context-menu/react-native-ios-context-menu.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@candlefinance/faster-image", :root=>"/Users/n8/rainbow/node_modules/@candlefinance/faster-image", :path=>"../node_modules/@candlefinance/faster-image", :podspec_path=>"/Users/n8/rainbow/node_modules/@candlefinance/faster-image/FasterImage.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@coinbase/mobile-wallet-protocol-host", :root=>"/Users/n8/rainbow/node_modules/@coinbase/mobile-wallet-protocol-host", :path=>"../node_modules/@coinbase/mobile-wallet-protocol-host", :podspec_path=>"/Users/n8/rainbow/node_modules/@coinbase/mobile-wallet-protocol-host/mobile-wallet-protocol-host.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@notifee/react-native", :root=>"/Users/n8/rainbow/node_modules/@notifee/react-native", :path=>"../node_modules/@notifee/react-native", :podspec_path=>"/Users/n8/rainbow/node_modules/@notifee/react-native/RNNotifee.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-async-storage/async-storage", :root=>"/Users/n8/rainbow/node_modules/@react-native-async-storage/async-storage", :path=>"../node_modules/@react-native-async-storage/async-storage", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-async-storage/async-storage/RNCAsyncStorage.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-camera-roll/camera-roll", :root=>"/Users/n8/rainbow/node_modules/@react-native-camera-roll/camera-roll", :path=>"../node_modules/@react-native-camera-roll/camera-roll", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-camera-roll/camera-roll/react-native-cameraroll.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-clipboard/clipboard", :root=>"/Users/n8/rainbow/node_modules/@react-native-clipboard/clipboard", :path=>"../node_modules/@react-native-clipboard/clipboard", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-clipboard/clipboard/RNCClipboard.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-community/netinfo", :root=>"/Users/n8/rainbow/node_modules/@react-native-community/netinfo", :path=>"../node_modules/@react-native-community/netinfo", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-community/netinfo/react-native-netinfo.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-firebase/app", :root=>"/Users/n8/rainbow/node_modules/@react-native-firebase/app", :path=>"../node_modules/@react-native-firebase/app", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-firebase/app/RNFBApp.podspec", :script_phases=>[{"name"=>"[RNFB] Core Configuration", "path"=>"./ios_config.sh", "execution_position"=>"after_compile", "input_files"=>["$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)"]}]}, {:configurations=>[], :name=>"@react-native-firebase/messaging", :root=>"/Users/n8/rainbow/node_modules/@react-native-firebase/messaging", :path=>"../node_modules/@react-native-firebase/messaging", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-firebase/messaging/RNFBMessaging.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-firebase/remote-config", :root=>"/Users/n8/rainbow/node_modules/@react-native-firebase/remote-config", :path=>"../node_modules/@react-native-firebase/remote-config", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-firebase/remote-config/RNFBRemoteConfig.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-masked-view/masked-view", :root=>"/Users/n8/rainbow/node_modules/@react-native-masked-view/masked-view", :path=>"../node_modules/@react-native-masked-view/masked-view", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-masked-view/masked-view/RNCMaskedView.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-menu/menu", :root=>"/Users/n8/rainbow/node_modules/@react-native-menu/menu", :path=>"../node_modules/@react-native-menu/menu", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-menu/menu/react-native-menu.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@rudderstack/rudder-sdk-react-native", :root=>"/Users/n8/rainbow/node_modules/@rudderstack/rudder-sdk-react-native", :path=>"../node_modules/@rudderstack/rudder-sdk-react-native", :podspec_path=>"/Users/n8/rainbow/node_modules/@rudderstack/rudder-sdk-react-native/RNRudderSdk.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@sentry/react-native", :root=>"/Users/n8/rainbow/node_modules/@sentry/react-native", :path=>"../node_modules/@sentry/react-native", :podspec_path=>"/Users/n8/rainbow/node_modules/@sentry/react-native/RNSentry.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@shopify/flash-list", :root=>"/Users/n8/rainbow/node_modules/@shopify/flash-list", :path=>"../node_modules/@shopify/flash-list", :podspec_path=>"/Users/n8/rainbow/node_modules/@shopify/flash-list/RNFlashList.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@shopify/react-native-performance", :root=>"/Users/n8/rainbow/node_modules/@shopify/react-native-performance", :path=>"../node_modules/@shopify/react-native-performance", :podspec_path=>"/Users/n8/rainbow/node_modules/@shopify/react-native-performance/ReactNativePerformance.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@shopify/react-native-skia", :root=>"/Users/n8/rainbow/node_modules/@shopify/react-native-skia", :path=>"../node_modules/@shopify/react-native-skia", :podspec_path=>"/Users/n8/rainbow/node_modules/@shopify/react-native-skia/react-native-skia.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@walletconnect/react-native-compat", :root=>"/Users/n8/rainbow/node_modules/@walletconnect/react-native-compat", :path=>"../node_modules/@walletconnect/react-native-compat", :podspec_path=>"/Users/n8/rainbow/node_modules/@walletconnect/react-native-compat/react-native-compat.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"expo", :root=>"/Users/n8/rainbow/node_modules/expo", :path=>"../node_modules/expo", :podspec_path=>"/Users/n8/rainbow/node_modules/expo/Expo.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-aes-crypto", :root=>"/Users/n8/rainbow/node_modules/react-native-aes-crypto", :path=>"../node_modules/react-native-aes-crypto", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-aes-crypto/react-native-aes-crypto.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-animateable-text", :root=>"/Users/n8/rainbow/node_modules/react-native-animateable-text", :path=>"../node_modules/react-native-animateable-text", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-animateable-text/react-native-animateable-text.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-ble-plx", :root=>"/Users/n8/rainbow/node_modules/react-native-ble-plx", :path=>"../node_modules/react-native-ble-plx", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-ble-plx/react-native-ble-plx.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-blur-view", :root=>"/Users/n8/rainbow/node_modules/react-native-blur-view", :path=>"../node_modules/react-native-blur-view", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-blur-view/react-native-blur-view.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-bootsplash", :root=>"/Users/n8/rainbow/node_modules/react-native-bootsplash", :path=>"../node_modules/react-native-bootsplash", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-bootsplash/RNBootSplash.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-branch", :root=>"/Users/n8/rainbow/node_modules/react-native-branch", :path=>"../node_modules/react-native-branch", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-branch/react-native-branch.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-change-icon", :root=>"/Users/n8/rainbow/node_modules/react-native-change-icon", :path=>"../node_modules/react-native-change-icon", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-change-icon/react-native-change-icon.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-cloud-fs", :root=>"/Users/n8/rainbow/node_modules/react-native-cloud-fs", :path=>"../node_modules/react-native-cloud-fs", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-cloud-fs/react-native-cloud-fs.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-dark-mode", :root=>"/Users/n8/rainbow/node_modules/react-native-dark-mode", :path=>"../node_modules/react-native-dark-mode", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-dark-mode/ReactNativeDarkMode.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-device-info", :root=>"/Users/n8/rainbow/node_modules/react-native-device-info", :path=>"../node_modules/react-native-device-info", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-device-info/RNDeviceInfo.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-fast-image", :root=>"/Users/n8/rainbow/node_modules/react-native-fast-image", :path=>"../node_modules/react-native-fast-image", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-fast-image/RNFastImage.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-fs", :root=>"/Users/n8/rainbow/node_modules/react-native-fs", :path=>"../node_modules/react-native-fs", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-fs/RNFS.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-gesture-handler", :root=>"/Users/n8/rainbow/node_modules/react-native-gesture-handler", :path=>"../node_modules/react-native-gesture-handler", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-gesture-handler/RNGestureHandler.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-get-random-values", :root=>"/Users/n8/rainbow/node_modules/react-native-get-random-values", :path=>"../node_modules/react-native-get-random-values", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-get-random-values/react-native-get-random-values.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-haptic-feedback", :root=>"/Users/n8/rainbow/node_modules/react-native-haptic-feedback", :path=>"../node_modules/react-native-haptic-feedback", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-haptic-feedback/RNReactNativeHapticFeedback.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-image-crop-picker", :root=>"/Users/n8/rainbow/node_modules/react-native-image-crop-picker", :path=>"../node_modules/react-native-image-crop-picker", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-image-crop-picker/RNImageCropPicker.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-keyboard-area", :root=>"/Users/n8/rainbow/node_modules/react-native-keyboard-area", :path=>"../node_modules/react-native-keyboard-area", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-keyboard-area/RNKeyboard.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-keyboard-controller", :root=>"/Users/n8/rainbow/node_modules/react-native-keyboard-controller", :path=>"../node_modules/react-native-keyboard-controller", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-keyboard-controller/react-native-keyboard-controller.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-keychain", :root=>"/Users/n8/rainbow/node_modules/react-native-keychain", :path=>"../node_modules/react-native-keychain", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-keychain/RNKeychain.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-linear-gradient", :root=>"/Users/n8/rainbow/node_modules/react-native-linear-gradient", :path=>"../node_modules/react-native-linear-gradient", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-linear-gradient/BVLinearGradient.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-mail", :root=>"/Users/n8/rainbow/node_modules/react-native-mail", :path=>"../node_modules/react-native-mail", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-mail/react-native-mail.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-minimizer", :root=>"/Users/n8/rainbow/node_modules/react-native-minimizer", :path=>"../node_modules/react-native-minimizer", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-minimizer/react-native-minimizer.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-mmkv", :root=>"/Users/n8/rainbow/node_modules/react-native-mmkv", :path=>"../node_modules/react-native-mmkv", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-mmkv/react-native-mmkv.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-os", :root=>"/Users/n8/rainbow/node_modules/react-native-os", :path=>"../node_modules/react-native-os", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-os/RNOS.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-pager-view", :root=>"/Users/n8/rainbow/node_modules/react-native-pager-view", :path=>"../node_modules/react-native-pager-view", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-pager-view/react-native-pager-view.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-palette-full", :root=>"/Users/n8/rainbow/node_modules/react-native-palette-full", :path=>"../node_modules/react-native-palette-full", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-palette-full/react-native-palette-full.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-permissions", :root=>"/Users/n8/rainbow/node_modules/react-native-permissions", :path=>"../node_modules/react-native-permissions", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-permissions/RNPermissions.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-quick-md5", :root=>"/Users/n8/rainbow/node_modules/react-native-quick-md5", :path=>"../node_modules/react-native-quick-md5", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-quick-md5/react-native-quick-md5.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-randombytes", :root=>"/Users/n8/rainbow/node_modules/react-native-randombytes", :path=>"../node_modules/react-native-randombytes", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-randombytes/react-native-randombytes.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-reanimated", :root=>"/Users/n8/rainbow/node_modules/react-native-reanimated", :path=>"../node_modules/react-native-reanimated", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-reanimated/RNReanimated.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-restart", :root=>"/Users/n8/rainbow/node_modules/react-native-restart", :path=>"../node_modules/react-native-restart", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-restart/react-native-restart.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-safe-area-context", :root=>"/Users/n8/rainbow/node_modules/react-native-safe-area-context", :path=>"../node_modules/react-native-safe-area-context", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-screen-corner-radius", :root=>"/Users/n8/rainbow/node_modules/react-native-screen-corner-radius", :path=>"../node_modules/react-native-screen-corner-radius", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-screen-corner-radius/react-native-screen-corner-radius.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-screens", :root=>"/Users/n8/rainbow/node_modules/react-native-screens", :path=>"../node_modules/react-native-screens", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-screens/RNScreens.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-share", :root=>"/Users/n8/rainbow/node_modules/react-native-share", :path=>"../node_modules/react-native-share", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-share/RNShare.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-sound", :root=>"/Users/n8/rainbow/node_modules/react-native-sound", :path=>"../node_modules/react-native-sound", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-sound/RNSound.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-splash-screen", :root=>"/Users/n8/rainbow/node_modules/react-native-splash-screen", :path=>"../node_modules/react-native-splash-screen", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-splash-screen/react-native-splash-screen.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-svg", :root=>"/Users/n8/rainbow/node_modules/react-native-svg", :path=>"../node_modules/react-native-svg", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-svg/RNSVG.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-tcp", :root=>"/Users/n8/rainbow/node_modules/react-native-tcp", :path=>"../node_modules/react-native-tcp", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-tcp/TcpSockets.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-text-input-mask", :root=>"/Users/n8/rainbow/node_modules/react-native-text-input-mask", :path=>"../node_modules/react-native-text-input-mask", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-text-input-mask/react-native-text-input-mask.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-text-size", :root=>"/Users/n8/rainbow/node_modules/react-native-text-size", :path=>"../node_modules/react-native-text-size", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-text-size/RNTextSize.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-tooltip", :root=>"/Users/n8/rainbow/node_modules/react-native-tooltip", :path=>"../node_modules/react-native-tooltip", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-tooltip/ToolTipMenu.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-turbo-haptics", :root=>"/Users/n8/rainbow/node_modules/react-native-turbo-haptics", :path=>"../node_modules/react-native-turbo-haptics", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-turbo-haptics/TurboHaptics.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-udp", :root=>"/Users/n8/rainbow/node_modules/react-native-udp", :path=>"../node_modules/react-native-udp", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-udp/react-native-udp.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-version-number", :root=>"/Users/n8/rainbow/node_modules/react-native-version-number", :path=>"../node_modules/react-native-version-number", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-version-number/react-native-version-number.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-video", :root=>"/Users/n8/rainbow/node_modules/react-native-video", :path=>"../node_modules/react-native-video", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-video/react-native-video.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-view-shot", :root=>"/Users/n8/rainbow/node_modules/react-native-view-shot", :path=>"../node_modules/react-native-view-shot", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-view-shot/react-native-view-shot.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-vision-camera", :root=>"/Users/n8/rainbow/node_modules/react-native-vision-camera", :path=>"../node_modules/react-native-vision-camera", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-vision-camera/VisionCamera.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-webview", :root=>"/Users/n8/rainbow/node_modules/react-native-webview", :path=>"../node_modules/react-native-webview", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-webview/react-native-webview.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-widgetkit", :root=>"/Users/n8/rainbow/node_modules/react-native-widgetkit", :path=>"../node_modules/react-native-widgetkit", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-widgetkit/react-native-widgetkit.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"rn-fetch-blob", :root=>"/Users/n8/rainbow/node_modules/rn-fetch-blob", :path=>"../node_modules/rn-fetch-blob", :podspec_path=>"/Users/n8/rainbow/node_modules/rn-fetch-blob/rn-fetch-blob.podspec", :script_phases=>[]}], :ios_project_root_path=>"/Users/n8/rainbow/ios", :react_native_path=>"../node_modules/react-native"}
Adding a custom script phase for Pod RNFBApp: [RNFB] Core Configuration
[VisionCamera] Thank you for using VisionCamera ❤️
[VisionCamera] If you enjoy using VisionCamera, please consider sponsoring this project: https://github.com/sponsors/mrousavy
[VisionCamera] $VCEnableLocation is set to false!
[VisionCamera] $VCEnableFrameProcessors is not set, enabling Frame Processors if Worklets is installed...
[VisionCamera] react-native-worklets-core not found - Frame Processors are disabled!
Auto-linking React Native modules for target `Rainbow`: BVLinearGradient, FasterImage, RNBootSplash, RNCAsyncStorage, RNCClipboard, RNCMaskedView, RNDeviceInfo, RNFBApp, RNFBMessaging, RNFBRemoteConfig, RNFS, RNFastImage, RNFlashList, RNGestureHandler, RNImageCropPicker, RNKeyboard, RNKeychain, RNNotifee, RNOS, RNPermissions, RNReactNativeHapticFeedback, RNReanimated, RNRudderSdk, RNSVG, RNScreens, RNSentry, RNShare, RNSound, RNTextSize, ReactNativeDarkMode, ReactNativePerformance, TcpSockets, ToolTipMenu, TurboHaptics, VisionCamera, mobile-wallet-protocol-host, react-native-aes-crypto, react-native-animateable-text, react-native-ble-plx, react-native-blur-view, react-native-branch, react-native-cameraroll, react-native-change-icon, react-native-cloud-fs, react-native-compat, react-native-get-random-values, react-native-ios-context-menu, react-native-keyboard-controller, react-native-mail, react-native-menu, react-native-minimizer, react-native-mmkv, react-native-netinfo, react-native-pager-view, react-native-palette-full, react-native-quick-md5, react-native-randombytes, react-native-restart, react-native-safe-area-context, react-native-screen-corner-radius, react-native-skia, react-native-splash-screen, react-native-text-input-mask, react-native-udp, react-native-version-number, react-native-video, react-native-view-shot, react-native-webview, react-native-widgetkit, and rn-fetch-blob
get_default_flags is deprecated. Please remove the keys from the `use_react_native!` function
if you are using the default already and pass the value you need in case you don't want the default
Framework build type is static library
Configuring the target with the Legacy Architecture
[Codegen] Analyzing /Users/n8/rainbow/package.json
[Codegen] Searching for codegen-enabled libraries in the app.
[Codegen] The "codegenConfig" field is not defined in package.json. Assuming there is nothing to generate at the app level.
[Codegen] Searching for codegen-enabled libraries in the project dependencies.
[Codegen] Found @react-native-async-storage/async-storage
[Codegen] Found @react-native-camera-roll/camera-roll
[Codegen] Found @react-native-clipboard/clipboard
[Codegen] Found @react-native-menu/menu
[Codegen] Found @sentry/react-native
[Codegen] Found @shopify/flash-list
[Codegen] Found @shopify/react-native-skia
[Codegen] Found @walletconnect/react-native-compat
[Codegen] Found react-native
[Codegen] Found react-native-animateable-text
[Codegen] Found react-native-bootsplash
[Codegen] Found react-native-edge-to-edge
[Codegen] Found react-native-gesture-handler
[Codegen] Found react-native-haptic-feedback
[Codegen] Found react-native-keyboard-controller
[Codegen] Found react-native-keychain
[Codegen] Found react-native-mmkv
[Codegen] Found react-native-pager-view
[Codegen] Found react-native-permissions
[Codegen] Found react-native-reanimated
[Codegen] Found react-native-safe-area-context
[Codegen] Found react-native-screens
[Codegen] Found react-native-svg
[Codegen] Found react-native-turbo-haptics
[Codegen] Found react-native-view-shot
[Codegen] Found react-native-webview
[Codegen] Searching for codegen-enabled libraries in react-native.config.js
[Codegen] Processing rnasyncstorage
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for rnasyncstorage
[Codegen] Processing rncameraroll
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios for rncameraroll
[Codegen] Processing rnclipboard
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for rnclipboard
[Codegen] Processing RNMenuViewSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, visionos for RNMenuViewSpec
[Codegen] Processing RNSentrySpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for RNSentrySpec
[Codegen] Processing rnflashlist
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, tvos for rnflashlist
[Codegen] Processing rnskia
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos for rnskia
[Codegen] Processing RNRNWalletConnectModuleSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, visionos for RNRNWalletConnectModuleSpec
[Codegen] Processing FBReactNativeSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Processing rncore
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Processing JBAnimatedTextCodegen
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios for JBAnimatedTextCodegen
[Codegen] Processing RNBootSplashSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, tvos for RNBootSplashSpec
[Codegen] Processing RNEdgeToEdge
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Processing rngesturehandler_codegen
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for rngesturehandler_codegen
[Codegen] Processing RNHapticFeedbackSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios for RNHapticFeedbackSpec
[Codegen] Processing reactnativekeyboardcontroller
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios for reactnativekeyboardcontroller
[Codegen] Processing RNKeychainSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for RNKeychainSpec
[Codegen] Processing reactnativemmkv
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos for reactnativemmkv
[Codegen] Processing pagerview
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, visionos for pagerview
[Codegen] Processing rnpermissions
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, tvos for rnpermissions
[Codegen] Processing rnreanimated
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for rnreanimated
[Codegen] Processing safeareacontext
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for safeareacontext
[Codegen] Processing rnscreens
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, tvos, visionos for rnscreens
[Codegen] Processing rnsvg
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, tvos, visionos for rnsvg
[Codegen] Processing TurboHapticsSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios for TurboHapticsSpec
[Codegen] Processing rnviewshot
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios for rnviewshot
[Codegen] Processing RNCWebViewSpec
[Codegen] Searching for podspec in the project dependencies.
[Codegen] Supported Apple platforms: ios, macos, visionos for RNCWebViewSpec
[Codegen] Generating Native Code for rnasyncstorage - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rncameraroll - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnclipboard - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNMenuViewSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNSentrySpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnflashlist - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnskia - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNRNWalletConnectModuleSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] [Codegen - FBReactNativeSpec] Skipping iOS code generation for FBReactNativeSpec as it has been generated already.
[Codegen] [Codegen - rncore] Skipping iOS code generation for rncore as it has been generated already.
[Codegen] Generating Native Code for JBAnimatedTextCodegen - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNBootSplashSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNEdgeToEdge - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rngesturehandler_codegen - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNHapticFeedbackSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for reactnativekeyboardcontroller - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNKeychainSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for reactnativemmkv - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for pagerview - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnpermissions - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnreanimated - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for safeareacontext - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnscreens - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnsvg - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for TurboHapticsSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for rnviewshot - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating Native Code for RNCWebViewSpec - ios
[Codegen] Generated artifacts: /Users/n8/rainbow/ios/build/generated/ios
[Codegen] Generating RCTThirdPartyComponentsProvider.h
[Codegen] Generated artifact: /Users/n8/rainbow/ios/build/generated/ios/RCTThirdPartyComponentsProvider.h
[Codegen] Generating RCTThirdPartyComponentsProvider.mm
[Codegen] Crawling @react-native-menu/menu library for components
[Codegen] Match found MenuView -> MenuView
[Codegen] [DEPRECATED] @react-native-menu/menu should add the 'ios.componentProvider' property in their codegenConfig
[Codegen] Crawling @shopify/flash-list library for components
[Codegen] Match found AutoLayoutView -> AutoLayoutViewComponentView
[Codegen] Match found CellContainer -> CellContainerComponentView
[Codegen] [DEPRECATED] @shopify/flash-list should add the 'ios.componentProvider' property in their codegenConfig
[Codegen] Crawling @shopify/react-native-skia library for components
[Codegen] Match found SkiaPictureView -> SkiaPictureView
[Codegen] [DEPRECATED] @shopify/react-native-skia should add the 'ios.componentProvider' property in their codegenConfig
[Codegen] Crawling react-native-animateable-text library for components
[Codegen] Match found JBAnimatedText -> JBAnimatedText
[Codegen] [DEPRECATED] react-native-animateable-text should add the 'ios.componentProvider' property in their codegenConfig
[Codegen] Crawling react-native-webview library for components
[Codegen] Match found RNCWebView -> RNCWebView
[Codegen] [DEPRECATED] react-native-webview should add the 'ios.componentProvider' property in their codegenConfig
[Codegen] Generated artifact: /Users/n8/rainbow/ios/build/generated/ios/RCTThirdPartyComponentsProvider.mm
[Codegen] Generating RCTModulesProvider.h
[Codegen] Generated artifact: /Users/n8/rainbow/ios/build/generated/ios/RCTModuleProviders.h
[Codegen] Generating RCTModuleProviders.mm
[Codegen] Generated artifact: /Users/n8/rainbow/ios/build/generated/ios/RCTModuleProviders.mm
[Codegen] Generating RCTAppDependencyProvider
[Codegen] Generated artifact: /Users/n8/rainbow/ios/build/generated/ios/RCTAppDependencyProvider.h
[Codegen] Generated artifact: /Users/n8/rainbow/ios/build/generated/ios/RCTAppDependencyProvider.mm
[Codegen] Generated podspec: /Users/n8/rainbow/ios/build/generated/ios/ReactAppDependencyProvider.podspec
[Codegen] Generated podspec: /Users/n8/rainbow/ios/build/generated/ios/ReactCodegen.podspec
[Codegen] Done.
No modules to process in combine-js-to-schema-cli. If this is unexpected, please check if you set up your NativeComponent correctly. See combine-js-to-schema.js for how codegen finds modules.
No modules to process in combine-js-to-schema-cli. If this is unexpected, please check if you set up your NativeComponent correctly. See combine-js-to-schema.js for how codegen finds modules.
[VisionCamera] Thank you for using VisionCamera ❤️
[VisionCamera] If you enjoy using VisionCamera, please consider sponsoring this project: https://github.com/sponsors/mrousavy
[VisionCamera] $VCEnableLocation is set to false!
[VisionCamera] $VCEnableFrameProcessors is not set, enabling Frame Processors if Worklets is installed...
[VisionCamera] react-native-worklets-core not found - Frame Processors are disabled!
Found 71 modules for target `Rainbow`
link_native_modules! {:ios_packages=>[{:configurations=>[], :name=>"react-native-ios-context-menu", :root=>"/Users/n8/rainbow/node_modules/react-native-ios-context-menu", :path=>"../node_modules/react-native-ios-context-menu", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-ios-context-menu/react-native-ios-context-menu.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@candlefinance/faster-image", :root=>"/Users/n8/rainbow/node_modules/@candlefinance/faster-image", :path=>"../node_modules/@candlefinance/faster-image", :podspec_path=>"/Users/n8/rainbow/node_modules/@candlefinance/faster-image/FasterImage.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@coinbase/mobile-wallet-protocol-host", :root=>"/Users/n8/rainbow/node_modules/@coinbase/mobile-wallet-protocol-host", :path=>"../node_modules/@coinbase/mobile-wallet-protocol-host", :podspec_path=>"/Users/n8/rainbow/node_modules/@coinbase/mobile-wallet-protocol-host/mobile-wallet-protocol-host.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@notifee/react-native", :root=>"/Users/n8/rainbow/node_modules/@notifee/react-native", :path=>"../node_modules/@notifee/react-native", :podspec_path=>"/Users/n8/rainbow/node_modules/@notifee/react-native/RNNotifee.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-async-storage/async-storage", :root=>"/Users/n8/rainbow/node_modules/@react-native-async-storage/async-storage", :path=>"../node_modules/@react-native-async-storage/async-storage", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-async-storage/async-storage/RNCAsyncStorage.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-camera-roll/camera-roll", :root=>"/Users/n8/rainbow/node_modules/@react-native-camera-roll/camera-roll", :path=>"../node_modules/@react-native-camera-roll/camera-roll", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-camera-roll/camera-roll/react-native-cameraroll.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-clipboard/clipboard", :root=>"/Users/n8/rainbow/node_modules/@react-native-clipboard/clipboard", :path=>"../node_modules/@react-native-clipboard/clipboard", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-clipboard/clipboard/RNCClipboard.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-community/netinfo", :root=>"/Users/n8/rainbow/node_modules/@react-native-community/netinfo", :path=>"../node_modules/@react-native-community/netinfo", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-community/netinfo/react-native-netinfo.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-firebase/app", :root=>"/Users/n8/rainbow/node_modules/@react-native-firebase/app", :path=>"../node_modules/@react-native-firebase/app", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-firebase/app/RNFBApp.podspec", :script_phases=>[{"name"=>"[RNFB] Core Configuration", "path"=>"./ios_config.sh", "execution_position"=>"after_compile", "input_files"=>["$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)"]}]}, {:configurations=>[], :name=>"@react-native-firebase/messaging", :root=>"/Users/n8/rainbow/node_modules/@react-native-firebase/messaging", :path=>"../node_modules/@react-native-firebase/messaging", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-firebase/messaging/RNFBMessaging.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-firebase/remote-config", :root=>"/Users/n8/rainbow/node_modules/@react-native-firebase/remote-config", :path=>"../node_modules/@react-native-firebase/remote-config", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-firebase/remote-config/RNFBRemoteConfig.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-masked-view/masked-view", :root=>"/Users/n8/rainbow/node_modules/@react-native-masked-view/masked-view", :path=>"../node_modules/@react-native-masked-view/masked-view", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-masked-view/masked-view/RNCMaskedView.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@react-native-menu/menu", :root=>"/Users/n8/rainbow/node_modules/@react-native-menu/menu", :path=>"../node_modules/@react-native-menu/menu", :podspec_path=>"/Users/n8/rainbow/node_modules/@react-native-menu/menu/react-native-menu.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@rudderstack/rudder-sdk-react-native", :root=>"/Users/n8/rainbow/node_modules/@rudderstack/rudder-sdk-react-native", :path=>"../node_modules/@rudderstack/rudder-sdk-react-native", :podspec_path=>"/Users/n8/rainbow/node_modules/@rudderstack/rudder-sdk-react-native/RNRudderSdk.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@sentry/react-native", :root=>"/Users/n8/rainbow/node_modules/@sentry/react-native", :path=>"../node_modules/@sentry/react-native", :podspec_path=>"/Users/n8/rainbow/node_modules/@sentry/react-native/RNSentry.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@shopify/flash-list", :root=>"/Users/n8/rainbow/node_modules/@shopify/flash-list", :path=>"../node_modules/@shopify/flash-list", :podspec_path=>"/Users/n8/rainbow/node_modules/@shopify/flash-list/RNFlashList.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@shopify/react-native-performance", :root=>"/Users/n8/rainbow/node_modules/@shopify/react-native-performance", :path=>"../node_modules/@shopify/react-native-performance", :podspec_path=>"/Users/n8/rainbow/node_modules/@shopify/react-native-performance/ReactNativePerformance.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@shopify/react-native-skia", :root=>"/Users/n8/rainbow/node_modules/@shopify/react-native-skia", :path=>"../node_modules/@shopify/react-native-skia", :podspec_path=>"/Users/n8/rainbow/node_modules/@shopify/react-native-skia/react-native-skia.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"@walletconnect/react-native-compat", :root=>"/Users/n8/rainbow/node_modules/@walletconnect/react-native-compat", :path=>"../node_modules/@walletconnect/react-native-compat", :podspec_path=>"/Users/n8/rainbow/node_modules/@walletconnect/react-native-compat/react-native-compat.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"expo", :root=>"/Users/n8/rainbow/node_modules/expo", :path=>"../node_modules/expo", :podspec_path=>"/Users/n8/rainbow/node_modules/expo/Expo.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-aes-crypto", :root=>"/Users/n8/rainbow/node_modules/react-native-aes-crypto", :path=>"../node_modules/react-native-aes-crypto", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-aes-crypto/react-native-aes-crypto.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-animateable-text", :root=>"/Users/n8/rainbow/node_modules/react-native-animateable-text", :path=>"../node_modules/react-native-animateable-text", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-animateable-text/react-native-animateable-text.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-ble-plx", :root=>"/Users/n8/rainbow/node_modules/react-native-ble-plx", :path=>"../node_modules/react-native-ble-plx", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-ble-plx/react-native-ble-plx.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-blur-view", :root=>"/Users/n8/rainbow/node_modules/react-native-blur-view", :path=>"../node_modules/react-native-blur-view", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-blur-view/react-native-blur-view.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-bootsplash", :root=>"/Users/n8/rainbow/node_modules/react-native-bootsplash", :path=>"../node_modules/react-native-bootsplash", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-bootsplash/RNBootSplash.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-branch", :root=>"/Users/n8/rainbow/node_modules/react-native-branch", :path=>"../node_modules/react-native-branch", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-branch/react-native-branch.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-change-icon", :root=>"/Users/n8/rainbow/node_modules/react-native-change-icon", :path=>"../node_modules/react-native-change-icon", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-change-icon/react-native-change-icon.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-cloud-fs", :root=>"/Users/n8/rainbow/node_modules/react-native-cloud-fs", :path=>"../node_modules/react-native-cloud-fs", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-cloud-fs/react-native-cloud-fs.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-dark-mode", :root=>"/Users/n8/rainbow/node_modules/react-native-dark-mode", :path=>"../node_modules/react-native-dark-mode", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-dark-mode/ReactNativeDarkMode.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-device-info", :root=>"/Users/n8/rainbow/node_modules/react-native-device-info", :path=>"../node_modules/react-native-device-info", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-device-info/RNDeviceInfo.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-fast-image", :root=>"/Users/n8/rainbow/node_modules/react-native-fast-image", :path=>"../node_modules/react-native-fast-image", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-fast-image/RNFastImage.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-fs", :root=>"/Users/n8/rainbow/node_modules/react-native-fs", :path=>"../node_modules/react-native-fs", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-fs/RNFS.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-gesture-handler", :root=>"/Users/n8/rainbow/node_modules/react-native-gesture-handler", :path=>"../node_modules/react-native-gesture-handler", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-gesture-handler/RNGestureHandler.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-get-random-values", :root=>"/Users/n8/rainbow/node_modules/react-native-get-random-values", :path=>"../node_modules/react-native-get-random-values", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-get-random-values/react-native-get-random-values.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-haptic-feedback", :root=>"/Users/n8/rainbow/node_modules/react-native-haptic-feedback", :path=>"../node_modules/react-native-haptic-feedback", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-haptic-feedback/RNReactNativeHapticFeedback.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-image-crop-picker", :root=>"/Users/n8/rainbow/node_modules/react-native-image-crop-picker", :path=>"../node_modules/react-native-image-crop-picker", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-image-crop-picker/RNImageCropPicker.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-keyboard-area", :root=>"/Users/n8/rainbow/node_modules/react-native-keyboard-area", :path=>"../node_modules/react-native-keyboard-area", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-keyboard-area/RNKeyboard.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-keyboard-controller", :root=>"/Users/n8/rainbow/node_modules/react-native-keyboard-controller", :path=>"../node_modules/react-native-keyboard-controller", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-keyboard-controller/react-native-keyboard-controller.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-keychain", :root=>"/Users/n8/rainbow/node_modules/react-native-keychain", :path=>"../node_modules/react-native-keychain", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-keychain/RNKeychain.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-linear-gradient", :root=>"/Users/n8/rainbow/node_modules/react-native-linear-gradient", :path=>"../node_modules/react-native-linear-gradient", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-linear-gradient/BVLinearGradient.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-mail", :root=>"/Users/n8/rainbow/node_modules/react-native-mail", :path=>"../node_modules/react-native-mail", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-mail/react-native-mail.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-minimizer", :root=>"/Users/n8/rainbow/node_modules/react-native-minimizer", :path=>"../node_modules/react-native-minimizer", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-minimizer/react-native-minimizer.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-mmkv", :root=>"/Users/n8/rainbow/node_modules/react-native-mmkv", :path=>"../node_modules/react-native-mmkv", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-mmkv/react-native-mmkv.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-os", :root=>"/Users/n8/rainbow/node_modules/react-native-os", :path=>"../node_modules/react-native-os", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-os/RNOS.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-pager-view", :root=>"/Users/n8/rainbow/node_modules/react-native-pager-view", :path=>"../node_modules/react-native-pager-view", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-pager-view/react-native-pager-view.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-palette-full", :root=>"/Users/n8/rainbow/node_modules/react-native-palette-full", :path=>"../node_modules/react-native-palette-full", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-palette-full/react-native-palette-full.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-permissions", :root=>"/Users/n8/rainbow/node_modules/react-native-permissions", :path=>"../node_modules/react-native-permissions", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-permissions/RNPermissions.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-quick-md5", :root=>"/Users/n8/rainbow/node_modules/react-native-quick-md5", :path=>"../node_modules/react-native-quick-md5", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-quick-md5/react-native-quick-md5.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-randombytes", :root=>"/Users/n8/rainbow/node_modules/react-native-randombytes", :path=>"../node_modules/react-native-randombytes", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-randombytes/react-native-randombytes.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-reanimated", :root=>"/Users/n8/rainbow/node_modules/react-native-reanimated", :path=>"../node_modules/react-native-reanimated", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-reanimated/RNReanimated.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-restart", :root=>"/Users/n8/rainbow/node_modules/react-native-restart", :path=>"../node_modules/react-native-restart", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-restart/react-native-restart.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-safe-area-context", :root=>"/Users/n8/rainbow/node_modules/react-native-safe-area-context", :path=>"../node_modules/react-native-safe-area-context", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-screen-corner-radius", :root=>"/Users/n8/rainbow/node_modules/react-native-screen-corner-radius", :path=>"../node_modules/react-native-screen-corner-radius", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-screen-corner-radius/react-native-screen-corner-radius.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-screens", :root=>"/Users/n8/rainbow/node_modules/react-native-screens", :path=>"../node_modules/react-native-screens", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-screens/RNScreens.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-share", :root=>"/Users/n8/rainbow/node_modules/react-native-share", :path=>"../node_modules/react-native-share", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-share/RNShare.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-sound", :root=>"/Users/n8/rainbow/node_modules/react-native-sound", :path=>"../node_modules/react-native-sound", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-sound/RNSound.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-splash-screen", :root=>"/Users/n8/rainbow/node_modules/react-native-splash-screen", :path=>"../node_modules/react-native-splash-screen", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-splash-screen/react-native-splash-screen.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-svg", :root=>"/Users/n8/rainbow/node_modules/react-native-svg", :path=>"../node_modules/react-native-svg", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-svg/RNSVG.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-tcp", :root=>"/Users/n8/rainbow/node_modules/react-native-tcp", :path=>"../node_modules/react-native-tcp", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-tcp/TcpSockets.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-text-input-mask", :root=>"/Users/n8/rainbow/node_modules/react-native-text-input-mask", :path=>"../node_modules/react-native-text-input-mask", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-text-input-mask/react-native-text-input-mask.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-text-size", :root=>"/Users/n8/rainbow/node_modules/react-native-text-size", :path=>"../node_modules/react-native-text-size", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-text-size/RNTextSize.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-tooltip", :root=>"/Users/n8/rainbow/node_modules/react-native-tooltip", :path=>"../node_modules/react-native-tooltip", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-tooltip/ToolTipMenu.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-turbo-haptics", :root=>"/Users/n8/rainbow/node_modules/react-native-turbo-haptics", :path=>"../node_modules/react-native-turbo-haptics", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-turbo-haptics/TurboHaptics.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-udp", :root=>"/Users/n8/rainbow/node_modules/react-native-udp", :path=>"../node_modules/react-native-udp", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-udp/react-native-udp.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-version-number", :root=>"/Users/n8/rainbow/node_modules/react-native-version-number", :path=>"../node_modules/react-native-version-number", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-version-number/react-native-version-number.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-video", :root=>"/Users/n8/rainbow/node_modules/react-native-video", :path=>"../node_modules/react-native-video", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-video/react-native-video.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-view-shot", :root=>"/Users/n8/rainbow/node_modules/react-native-view-shot", :path=>"../node_modules/react-native-view-shot", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-view-shot/react-native-view-shot.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-vision-camera", :root=>"/Users/n8/rainbow/node_modules/react-native-vision-camera", :path=>"../node_modules/react-native-vision-camera", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-vision-camera/VisionCamera.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-webview", :root=>"/Users/n8/rainbow/node_modules/react-native-webview", :path=>"../node_modules/react-native-webview", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-webview/react-native-webview.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"react-native-widgetkit", :root=>"/Users/n8/rainbow/node_modules/react-native-widgetkit", :path=>"../node_modules/react-native-widgetkit", :podspec_path=>"/Users/n8/rainbow/node_modules/react-native-widgetkit/react-native-widgetkit.podspec", :script_phases=>[]}, {:configurations=>[], :name=>"rn-fetch-blob", :root=>"/Users/n8/rainbow/node_modules/rn-fetch-blob", :path=>"../node_modules/rn-fetch-blob", :podspec_path=>"/Users/n8/rainbow/node_modules/rn-fetch-blob/rn-fetch-blob.podspec", :script_phases=>[]}], :ios_project_root_path=>"/Users/n8/rainbow/ios", :react_native_path=>"../node_modules/react-native"}
[VisionCamera] Thank you for using VisionCamera ❤️
[VisionCamera] If you enjoy using VisionCamera, please consider sponsoring this project: https://github.com/sponsors/mrousavy
[VisionCamera] $VCEnableLocation is set to false!
[VisionCamera] $VCEnableFrameProcessors is not set, enabling Frame Processors if Worklets is installed...
[VisionCamera] react-native-worklets-core not found - Frame Processors are disabled!
Updating local specs repositories
Analyzing dependencies
[VisionCamera] Thank you for using VisionCamera ❤️
[VisionCamera] If you enjoy using VisionCamera, please consider sponsoring this project: https://github.com/sponsors/mrousavy
[VisionCamera] $VCEnableLocation is set to false!
[VisionCamera] $VCEnableFrameProcessors is not set, enabling Frame Processors if Worklets is installed...
[VisionCamera] react-native-worklets-core not found - Frame Processors are disabled!
Fetching podspec for `fast_float` from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`
[!] CocoaPods could not find compatible versions for pod "hermes-engine":
  In snapshot (Podfile.lock):
    hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)

  In Podfile:
    hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)

It seems like you've changed the version of the dependency `hermes-engine` and it differs from the version stored in `Pods/Local Podspecs`.
You should run `pod update hermes-engine --no-repo-update` to apply changes made locally.

@natew

natew commented Jun 12, 2025

Copy link
Copy Markdown
Contributor

Ah yea this is just some weird Pods cache thing, not sure if we can detect/clear it automatically but fixed on my end by clearing it.

@janicduplessis

Copy link
Copy Markdown
Contributor Author

Updated to add --client-logs flag to get logs in console back

image

@socket-security

socket-security Bot commented Jun 13, 2025

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​lightningcss-win32-arm64-msvc@​1.27.0100100358270
Addednpm/​lightningcss-freebsd-x64@​1.27.0100100358370
Updatednpm/​lightningcss-darwin-x64@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-linux-x64-gnu@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-win32-x64-msvc@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-darwin-arm64@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-linux-arm64-gnu@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-linux-arm-gnueabihf@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-linux-arm64-musl@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​lightningcss-linux-x64-musl@​1.19.0 ⏵ 1.27.0100100358370
Updatednpm/​@​react-native/​gradle-plugin@​0.74.85 ⏵ 0.79.510010046 +197100
Updatednpm/​metro-cache-key@​0.80.9 ⏵ 0.82.11001004990 -2100
Addednpm/​array-buffer-byte-length@​1.0.2671007651100
Addednpm/​gopd@​1.2.0671007752100
Addednpm/​es-define-property@​1.0.1671008151100
Addednpm/​is-date-object@​1.1.0671008151100
Addednpm/​safe-array-concat@​1.1.3661008352100
Addednpm/​is-weakref@​1.1.1671008152100
Addednpm/​is-string@​1.1.1671008352100
Addednpm/​function.prototype.name@​1.1.8661008552100
Addednpm/​is-regex@​1.2.1671008352100
Addednpm/​for-each@​0.3.5671007954100
Updatednpm/​metro-minify-terser@​0.80.9 ⏵ 0.82.11001005890 -2100
Updatednpm/​metro-babel-transformer@​0.80.9 ⏵ 0.82.11001006090 -2100
Addednpm/​@​webassemblyjs/​ieee754@​1.13.21001006180100
Updatednpm/​@​react-native/​typescript-config@​0.74.83 ⏵ 0.79.01001006197100
Addednpm/​@​babel/​plugin-transform-dotall-regex@​7.25.91001006189100
Addednpm/​@​babel/​plugin-transform-unicode-regex@​7.25.91001006189100
Addednpm/​@​babel/​plugin-transform-regexp-modifiers@​7.26.01001006188100
Addednpm/​@​webassemblyjs/​helper-api-error@​1.13.21001006180100
Updatednpm/​ob1@​0.80.9 ⏵ 0.82.11001006290 -2100
Addednpm/​@​expo/​ws-tunnel@​1.0.6981006287100
See 244 more rows in the dashboard

View full report

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for efa0dcd

@janicduplessis

Copy link
Copy Markdown
Contributor Author

Conflicts fixed

@natew natew left a comment

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.

Code lgtm, did a basic build and tested my wallet and a few areas.

@ibrahimtaveras00 ibrahimtaveras00 left a comment

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.

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for 55b6254

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for 24388fa

@janicduplessis

Copy link
Copy Markdown
Contributor Author

Here's a quick summary of the last changes:

  • Edge to edge support. Since we now target API 35, we need proper support, we somewhat supported it but found some issues. We now always have a transparent status and navigation bar.
    • Use SystemBars api from react-native-edge-to-edge instead of StatusBar and custom native module.
    • The react-native Dimensions module doesn't return the proper height value when the navigation bar is transparent. Instead we can use useSafeAreaFrame instead with will have the right value.
    • Use insets.top instead of StatusBar.currentHeight
    • Tweak / simplify sheets
  • Fix issue with disposed SkPicture after skia upgrade for the new candlestick charts. Seems like JS holds on to disposed SKPicture instances and tries to parse them, which throws an error. I made a patch in skia to avoid throwing for that specific class. (9694cb7)
  • Replace last usages of react-native-image-crop-picker with expo-image-picker + expo-image-manipulator. (31a3a8f, a11b70f)
  • Fix NanoX skia animation (175b78b)

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for 737336f

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for 42d645b

Comment thread src/worklets/colors.ts
*/
export function getLuminanceWorklet(color: string): number {
'worklet';
const processedColor = processColor(color);

@janicduplessis janicduplessis Jul 29, 2025

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Do you prefer to keep the color validations? Only thing is would lead to double processing.

From my testing, passing an invalid color to convertToRGBA returns a black color

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for ea5fe54

@jinchung

Copy link
Copy Markdown
Member

Launch in simulator or device for a0bf8dd

@jinchung

jinchung commented Aug 4, 2025

Copy link
Copy Markdown
Member

Launch in simulator or device for 86d008d

}

export const ApplyShadow = React.forwardRef(({ backgroundColor, children: child, shadows }: ApplyShadowProps, ref: React.Ref<any>) => {
export const ApplyShadow = ({ backgroundColor, children: child, shadows }: ApplyShadowProps) => {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

There was some new warnings (prob because of the react upgrade) related to forwardRef ref param not being used. For this component if we are in the case if (!shadows) return child; the ref is not used. I noticed we actually never pass ref to this component so I just removed the forward ref.

);

if (IS_TEST || (IS_ANDROID && !enableOnAndroid)) return children;
if (IS_TEST || (IS_ANDROID && !enableOnAndroid)) {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We need to make sure to apply containerStyle in this case. This wasn't a regression from this PR, but included the fix here since it is pretty simple.

if (!child) return null;
return (
<>
<Fragment key={index}>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fix a missing key warning.


const TruncatedENS = ({ ens, truncationLength, ...props }, ref) => {
const text = useMemo(
const text = React.useMemo(

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not sure if this code is used, but use useMemo was not imported

};

const FreezableWebView = memo(React.forwardRef(FreezableWebViewComponent));
const FreezableWebView = memo(FreezableWebViewComponent);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This component didn't use ref

@janicduplessis
janicduplessis merged commit 74cb7cb into develop Aug 5, 2025
5 of 7 checks passed
@janicduplessis
janicduplessis deleted the @janic/upgrade-rn branch August 5, 2025 01:25
@jinchung

jinchung commented Aug 5, 2025

Copy link
Copy Markdown
Member

Launch in simulator or device for 43e3551

@WoLewicki WoLewicki left a comment

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.

Left some comments, looks good overall!

Comment thread .github/workflows/android-e2e.yml Outdated
with:
cache-read-only: false

- run: cd rainbow-scripts && git checkout @janic/rn79

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.

Do we want to leave it here or will it be removed before merge? Same for other occurences.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No, we removed it right before merge, was only needed to get ci passing before we merge some prs in rainbow scripts

Comment thread ios/AppDelegate.swift

ReactNativePerformance.onAppStarted()

#if RAINBOW_INTERNALS_ENABLED

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 this work correctly in Swift? I can see it was taken from Internals module previously.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think this is actually never worked? It was also previously a preprocessor macro, but we never define it, it is a const in objc.

Comment thread ios/AppDelegate.swift
return success
}

func hideSplashScreenAnimated() {

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.

Maybe we should just move it to RainbowSplashScreenManager ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Wanna open a PR for that one?

Comment thread package.json
"@types/prop-types": "15.7.14",
"@types/qs": "6.9.7",
"@types/react": "18.2.65",
"@types/react": "19.1.3",

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.

Should we sync this types minor version with React's one? (so 19.0.x)

#if !TARGET_OS_OSX
- _displayLink.preferredFramesPerSecond = 120; // will fallback to 60 fps for devices without Pro Motion display
+ if (@available(iOS 15.0, *)) {
+ _displayLink.preferredFrameRateRange = CAFrameRateRangeMake(80, 120, 80);

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.

Why do we prefer 80 fps?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@christianbaroni has some context about this one, trying to find it again, but I cant

ARCHS_FLAG="-PreactNativeArchitectures=$ARCH"
fi

export SENTRY_DISABLE_AUTO_UPLOAD=true

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.

Was it meant to stay here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, we don’t want to upload to sentry for e2e builds

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not sure why I added it in this pr, but I think it makes sense


const animatedTopColor = useDerivedValue(() => {
if (IS_TEST) return getColorValueForThemeWorklet(DEFAULT_BACKGROUND_COLOR, isDarkMode);
if (!_WORKLET || IS_TEST) return initialColors.top;

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.

When can it happen that this is not run as worklet?

olerass added a commit that referenced this pull request Feb 25, 2026
`@react-native/metro-config` is a build-time tool for configuring Metro, not a runtime dependency. It was originally added to `dependencies` during the RN 0.72 upgrade in #4955 (Feb 2023). When we upgraded to RN 0.79 in #6607 (Aug 2025), the correct `0.79.0` version was added to `devDependencies`, but the old `0.74.83` entry in `dependencies` was left behind.

This change drops the stale entry. The `0.79.0` version in `devDependencies` is unchanged. No lockfile impact since yarn was already resolving via the devDeps entry.

Ref FEPLAT-34.
olerass added a commit that referenced this pull request Apr 27, 2026
After bumping `@react-native-firebase/*` from 20.1.0 to 23.8.8 in #7319 (Apr 2026), iOS users see both a system banner AND a notifee-displayed local notification when a push arrives while the app is foregrounded. Pre-bump behavior was the notifee notification only.

The cause is upstream: invertase/react-native-firebase#8786 (merged Feb 2026, shipped in v23.8.5) reordered RNFB's iOS `willPresent` delegate so the original AppDelegate handler is called first. Previously, RNFB consumed the one-shot `completionHandler` with its own default options (empty, since we don't have a `firebase.json`) before forwarding to AppDelegate, making AppDelegate's `completionHandler([.sound, .badge, .list, .banner])` a no-op. With the new order, AppDelegate wins and iOS now honors the full `[.sound, .badge, .list, .banner]` set the handler has been quietly asking for since #6607 (Aug 2025).

This change updates AppDelegate's `willPresent` to call `completionHandler([])`, which suppresses all iOS-side presentation for the FCM remote when foregrounded. Rainbow's user-visible foreground notification UI is rendered by notifee from the separate `onMessage` JS handler (`src/notifications/foregroundHandler.ts` → `notifee.displayNotification`). Letting iOS also present the FCM payload would duplicate Notification Center entries and add badge increments that pre-bump prod never had. Returning `[]` matches the pre-RNFB-23.8.5 default of `UNNotificationPresentationOptionNone`. Background and killed-app notifications are unaffected since this delegate only runs in the foreground case.
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